الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

لعبة الأربعة تربح

بدأه mr.beshoy في 28 أغسطس 2008 · 49 رد · 5,010 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

إخواتى الأعزاء المبرمجين الكرام

فى محاولة منى لتصميم لعبة كونيكت فور ( و هى ان تكون اربع دوائر سواء افقى أو رأسى أو بالقطر) و لكن هناك مشكلة واجهتنى فى هذا الكود

و حاولت أن احلها و لكن ما عرفت طريقة الحل

فأرجو من الأخوة الأفاضل تجريب الكود سوف يرون الخطأ واضحاً

( أنا مستخدم النتبينز فجربوه على النت بينز )

 

package Game;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Game extends JFrame {

	private JPanel mainPlayer_panel;
	private JPanel playerone_panel;
	public static JButton play_one;
	private JPanel scoreone_panel;
	private JLabel score_one;
	private static JTextField field_one;
	private JPanel playertwo_panel;
	public static JButton play_two;
	private JPanel scoretwo_panel;
	private JLabel score_two;
	private static JTextField field_two;

	public Game() {

		mainPlayer_panel = new JPanel();
		mainPlayer_panel.setPreferredSize(new Dimension(200, 200));
		mainPlayer_panel.setBorder(BorderFactory.createTitledBorder("player"));
		mainPlayer_panel.setBackground(Color.pink);
		mainPlayer_panel.setBounds(900, 100, 300, 500);

		playerone_panel = new JPanel();
		playerone_panel.setPreferredSize(new Dimension(200, 200));
		playerone_panel.setBorder(BorderFactory.createTitledBorder("player one"));
		play_one = new JButton("playe");
		play_one.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				CreateImage.play_oneActionListener();
				repaint();
			}
		});

		scoreone_panel = new JPanel(new FlowLayout());
		score_one = new JLabel("score");
		field_one = new JTextField(10);
		scoreone_panel.add(score_one);
		scoreone_panel.add(field_one);
		playerone_panel.add(play_one);
		playerone_panel.add(scoreone_panel);


		playertwo_panel = new JPanel();
		playertwo_panel.setPreferredSize(new Dimension(200, 200));
		playertwo_panel.setBorder(BorderFactory.createTitledBorder("player one"));
		play_two = new JButton("playe");
		play_two.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				CreateImage.play_twoActionListener();
				repaint();
			}
		});
		scoretwo_panel = new JPanel(new FlowLayout());
		score_two = new JLabel("score");
		field_two = new JTextField(10);
		scoretwo_panel.add(score_two);
		scoretwo_panel.add(field_two);
		playertwo_panel.add(play_two);
		playertwo_panel.add(scoretwo_panel);

		mainPlayer_panel.add(playerone_panel);
		mainPlayer_panel.add(playertwo_panel);
		getContentPane().add(mainPlayer_panel);
		getContentPane().add(new CreateImage());
	}

	public static void main(String[] args) {

		JFrame frame = new Game();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setSize(1000, 800);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
}

package Game;

 

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Line2D;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class CreateImage extends JPanel {

	private BufferedImage image;
	private Graphics g;
	private ImageIcon icon;
	private JLabel image_label;
	public static int squaresize = 80,  line_x = 40,  line_y = 120;
	public static int oval1_x = line_x + (3 * squaresize),  oval1_y = 120;
	public static int oval2_x = line_x + (3 * squaresize),  oval2_y = 120;
	public static boolean ball1,  ball2;

	public CreateImage() {
		image = new BufferedImage(700, 1000, BufferedImage.TYPE_INT_RGB);
		g = image.getGraphics();
		g.setColor(Color.white);
		g.fillRect(0, 0, image.getWidth(), image.getHeight());
		MymouseAdabter mouse = new MymouseAdabter();
		addMouseListener(mouse);
		addMouseMotionListener(mouse);
	}

	@Override
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		Graphics2D g2 = (Graphics2D) g;
		g.drawImage(image, 0, 0, null);
		line_x = 40;
		line_y = 120;
		for (int row = 1; row <= 7; ++row) {
			BasicStroke line = new BasicStroke(5);
			g2.setStroke(line);
			g2.setColor(Color.BLUE);
			g2.draw(new Line2D.Double(line_x, line_y, line_x + (7 * squaresize), line_y));
			line_y += squaresize;
		}
		line_x = 40;
		line_y = 120;
		for (int col = 0; col <= 7; col++) {
			BasicStroke line = new BasicStroke(5);
			g2.setStroke(line);
			g2.setColor(Color.BLUE);
			g2.draw(new Line2D.Double(line_x, line_y, line_x, line_y + (6 * squaresize)));
			line_x += squaresize;
		}
		if (ball1) {
			g.setColor(Color.BLACK);
			g.fillOval(oval1_x, oval1_y - squaresize, squaresize, squaresize);
		}
		if (ball2) {
			g.setColor(Color.BLUE);
			g.fillOval(oval1_x, oval1_y - squaresize, squaresize, squaresize);
		}

	}

	public static void play_oneActionListener() {
		ball1 = true;
		ball2 = false;
	}

	public static void play_twoActionListener() {
		ball2 = true;
		ball1 = false;
	}

	private class MymouseAdabter extends MouseAdapter {

		@Override
		public void mouseMoved(MouseEvent e) {
			if (ball1) {

				oval1_x = e.getX();
				if (e.getX() > line_x + (7 * squaresize)) {
					oval1_x = line_x + (7 * squaresize);
				} else if (e.getX() >= line_x + (5 * squaresize)) {
					oval1_x = line_x + (5 * squaresize);
				} else if (e.getX() >= line_x + (4 * squaresize)) {
					oval1_x = line_x + (4 * squaresize);
				}
				 else if (e.getX() >=line_x + (3 * squaresize)) {
					oval1_x = line_x + (3 * squaresize);
				} else if (e.getX() >= line_x + (2 * squaresize)) {
					oval1_x = line_x + (2 * squaresize);
				} else if (e.getX() >= line_x + (1 * squaresize)) {
					oval1_x = line_x + (1 * squaresize);
				} else if (e.getX() >= line_x + (0 * squaresize)) {
					oval1_x = line_x + (0 * squaresize);
				}
				repaint();
			}
			if (ball2) {
				oval2_x = e.getX();
				if (oval2_x >= line_x + (7 * squaresize)) {
					oval2_x = line_x + (7 * squaresize);
					repaint();
				}
			}
		//repaint();
		}
	}
}

المشكلة هى انى لا استطيع التحكم فى مسار الكرة عندما أضغط على زرار اللاعب الاول فمن المفروض انها تتحرك على مسار الشبكة فقط و لكنها تخرج الى خارجها فا أتمنى منك المساعدة

و الجزئية المسئولة عن التحكم فى حركة الكرة على مسار الشبكة هى هذه

private class MymouseAdabter extends MouseAdapter {

@Override

public void mouseMoved(MouseEvent e) {

if (ball1) {

oval1_x = e.getX();

if (e.getX() > line_x + (7 * squaresize)) {

oval1_x = line_x + (7 * squaresize);

} else if (e.getX() >= line_x + (5 * squaresize)) {

oval1_x = line_x + (5 * squaresize);

} else if (e.getX() >= line_x + (4 * squaresize)) {

oval1_x = line_x + (4 * squaresize);

}

else if (e.getX() >=line_x + (3 * squaresize)) {

oval1_x = line_x + (3 * squaresize);

} else if (e.getX() >= line_x + (2 * squaresize)) {

oval1_x = line_x + (2 * squaresize);

} else if (e.getX() >= line_x + (1 * squaresize)) {

oval1_x = line_x + (1 * squaresize);

} else if (e.getX() >= line_x + (0 * squaresize)) {

oval1_x = line_x + (0 * squaresize);

}

repaint();

}

if (ball2) {

oval2_x = e.getX();

if (oval2_x >= line_x + (7 * squaresize)) {

oval2_x = line_x + (7 * squaresize);

repaint();

}

#2

يا جماعة محدش ناوى يرد على !!!!!!

#3

أخي ساعدنا قليلاً

أول شيء ضع لنا الشيفرة كمرفق

ثاني شيء أكثر من الكلام عن المشكلة

مثلاُ في أي سطر

ماذا تلاحظ أي شيء قد يسهل علينا مساعدتك

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#4

شوف حضرتك

هو الموضوع انك لما بتضغط على زرار اللاعب الاول الكرة بتظهر و تتحرك على مدى الشاشة كلها و بتخفى البانل بتاعة اللاعب و المفروض تتحرك على مدار الشبكة فقط

و نفس القصة مع اللاعب التانى

فياريت حد يساعدنى بجد

و حضرتك لو عملت run للكود هتفهم كلامى

اكتر

و الجزء المسئول عن حركة الكرة اهو

private class MymouseAdabter extends MouseAdapter {

		@Override
		public void mouseMoved(MouseEvent e) {
			if (ball1) {

				oval1_x = e.getX();
				if (e.getX() > line_x + (7 * squaresize)) {
					oval1_x = line_x + (7 * squaresize);
				} else if (e.getX() >= line_x + (5 * squaresize)) {
					oval1_x = line_x + (5 * squaresize);
				} else if (e.getX() >= line_x + (4 * squaresize)) {
					oval1_x = line_x + (4 * squaresize);
				}
				 else if (e.getX() >=line_x + (3 * squaresize)) {
					oval1_x = line_x + (3 * squaresize);
				} else if (e.getX() >= line_x + (2 * squaresize)) {
					oval1_x = line_x + (2 * squaresize);
				} else if (e.getX() >= line_x + (1 * squaresize)) {
					oval1_x = line_x + (1 * squaresize);
				} else if (e.getX() >= line_x + (0 * squaresize)) {
					oval1_x = line_x + (0 * squaresize);
				}
				repaint();
			}
			if (ball2) {
				oval2_x = e.getX();
				if (oval2_x >= line_x + (7 * squaresize)) {
					oval2_x = line_x + (7 * squaresize);
					repaint();
				}
			}
	   repaint();
		}
	}
#5

السلام عليكم

أخي الكريم لقد استطعت بفضل الله حل المشكلة الحل بسيط

فقط كان يحتاج منك القليل من التركيز, تامل بالكود و ستعرف الفرق

سوف الون لك التغييرات باللون الاحمر

 

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;

import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Line2D;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JOptionPane;

public class CreateImage extends JPanel {

	private BufferedImage image;
	private Graphics g;
	private ImageIcon icon;
	private JLabel image_label;
	public static int squaresize = 80,  line_x = 40,  line_y = 120;
	public static int oval1_x = line_x + (3 * squaresize),  oval1_y = 120;
	public static int oval2_x = line_x + (3 * squaresize),  oval2_y = 120;
	public static boolean ball1,  ball2;
		int u=0;

	public CreateImage() {

		image = new BufferedImage(700, 1000, BufferedImage.TYPE_INT_RGB);
		g = image.getGraphics();
		g.setColor(Color.white);
		g.fillRect(0, 0, image.getWidth(), image.getHeight());
		MymouseAdabter mouse = new MymouseAdabter();
		addMouseListener(mouse);
		addMouseMotionListener(mouse);
	}

	@Override
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		Graphics2D g2 = (Graphics2D) g;
		g.drawImage(image, 0, 0, null);
		line_x = 40;
		line_y = 120;
		for (int row = 1; row <= 7; ++row) {
			BasicStroke line = new BasicStroke(5);
			g2.setStroke(line);
			g2.setColor(Color.BLUE);
			g2.draw(new Line2D.Double(line_x, line_y, line_x + (7 * squaresize), line_y));
			line_y += squaresize;
		}
		line_x = 40;
		line_y = 120;
		for (int col = 0; col <= 7; col++) {
			BasicStroke line = new BasicStroke(5);
			g2.setStroke(line);
			g2.setColor(Color.BLUE);
			g2.draw(new Line2D.Double(line_x, line_y, line_x, line_y + (6 * squaresize)));
			line_x += squaresize;
		}

		line_x = 40;
		line_y = 120;

		if (ball1) {
			g.setColor(Color.BLACK);
			g.fillOval(oval1_x, oval1_y - squaresize, squaresize, squaresize);
		}
		if (ball2) {
			g.setColor(Color.BLUE);
			g.fillOval(oval1_x, oval1_y - squaresize, squaresize, squaresize);
		}


	}

	public static void play_oneActionListener() {
		ball1 = true;
		ball2 = false;
	}

	public static void play_twoActionListener() {
		ball2 = true;
		ball1 = false;
	}

	private class MymouseAdabter extends MouseAdapter {

		@Override
		public void mouseMoved(MouseEvent e) {

	  // JOptionPane.showMessageDialog(null,"line_x= "+line_x);

if(ball1||ball2){

			int uu=line_x + (7 * squaresize);
			oval1_x = e.getX();
				if (e.getX() > line_x + (7 * squaresize)) {
					oval1_x = line_x + (6 * squaresize);
				}

				 else if (e.getX() >= line_x + (6 * squaresize)) {
					oval1_x = line_x + (6 * squaresize);
				} 

				else if (e.getX() >= line_x + (5 * squaresize)) {
					oval1_x = line_x + (5 * squaresize);
				} 

				else if (e.getX() >= line_x + (4 * squaresize)) {
					 oval1_x = line_x + (4 * squaresize);
				}

				else if (e.getX() >=line_x + (3 * squaresize)) {
					oval1_x = line_x + (3 * squaresize);
				}

				else if (e.getX() >= line_x + (2 * squaresize)) {
					oval1_x = line_x + (2 * squaresize);
				}

				else if (e.getX() >= line_x + (1 * squaresize)) {
				  oval1_x = line_x + (1 * squaresize);
				}

				else if (e.getX() >= line_x + (0 * squaresize)) {
				   oval1_x = line_x + (0 * squaresize);
				}

				else if (e.getX() < line_x ) {
				   oval1_x = line_x + (0 * squaresize);
				}

	   /* ----------------------------------------*/

				if (e.getY() > line_y + (6 * squaresize)) {
					oval1_y = line_y + (6 * squaresize);
				}

				 else if (e.getY() >= line_y + (5 * squaresize)) {
					oval1_y = line_y + (6 * squaresize);
				} 

			   else if (e.getY() >= line_y + (4 * squaresize)) {
					oval1_y = line_y + (5 * squaresize);
				} 
			   else if (e.getY() >= line_y + (3 * squaresize)) {
					oval1_y = line_y + (4 * squaresize);
				} 
			   else if (e.getY() >= line_y + (2 * squaresize)) {
					oval1_y = line_y + (3 * squaresize);
				} 
			   else if (e.getY() >= line_y + (1 * squaresize)) {
					oval1_y = line_y + (2 * squaresize);
				} 

			  else if (e.getY() >= line_y + (0 * squaresize)) {
					oval1_y = line_y + (1 * squaresize);
				} 


				else if (e.getY() < line_y ) {
				   oval1_y = line_y + (1 * squaresize);
				}



				repaint();
}   

		//repaint();
		}
	}
}

لا تنساني من الدعاء

تحية طيبة

تم تعديل هذه المشاركة بواسطة jfriend في 4 سبتمبر 2008 في 21:42

#6

حاولت أن أحل المشكلة لديك

لكن لم أستطع ذلك

الأكيد لدي أن المشكلة ليست في الكود الذي أشرت إليه

ربما تكون في مواضيع التخطيط Layout

لكنها ليست في المنطقة التي أشرت إليها

كنت أتمنى مساعدتك

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#7
اقتباس
حاولت أن أحل المشكلة لديك

لكن لم أستطع ذلك

الأكيد لدي أن المشكلة ليست في الكود الذي أشرت إليه

ربما تكون في مواضيع التخطيط Layout

لكنها ليست في المنطقة التي أشرت إليها

كنت أتمنى مساعدتك

اخي انت تقصد بالمشكلة هنا اختفاء GUI components

صحيح؟

فعلا و انا لم استطع حلها انا اقصد انني حللت المشكله مسار الكرة و ضعها داخل الشبكة

بناء على حركة المؤشر و منعها الخروج من الشبكة

بتهيألي هيا مشكلته الرئيسية

#8

مممممممممم

لا أعرف إن كان هذا ما يريده الأخ

لكني لا أظن ذلك

هل جربتي هذه اللعبة من قبل أخت jfriend :blink:

جربيها فهي ممتعة :P

المهم في اللعبة هوه العمود الذي تريد إسقاط القطعة فيه

وهو سيستمر في السقوط حتى أول خانة غير ممتلئة

تستمر اللعبة إلى أن يقوم أحدهم بجمع أربع قطع على التوالي

سواءاً أفقياً أو رأسياً

وليس أن تضع القطعة فيه وضعاً في مكانه

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#9

السلام عليكم

اقتباس
هل جربتي هذه اللعبة من قبل أخت jfriend

صراحة لم اجربها و اول مرة اسمع فيها و لكني اشتغلت فيها على حسب

ما فهمت من شرح الاخ و من خلال الكود

اقتباس
المهم في اللعبة هوه العمود الذي تريد إسقاط القطعة فيه

وهو سيستمر في السقوط حتى أول خانة غير ممتلئة

تستمر اللعبة إلى أن يقوم أحدهم بجمع أربع قطع على التوالي

سواءاً أفقياً أو رأسياً

وليس أن تضع القطعة فيه وضعاً في مكانه

و مع ذلك لم افهمها جيدا

#10

شكرا جزيلاً أخ alaadia و أخت Jfriend

المشكلة لم تحل بالضبط مازالت قائمة كما هى

و لكن جارى البحث لحلها و شكرا لتعبكم و اتمنى ايضا أن تضعوا حل إذ توصلتم له

و انا إذا عرفت الحل ساضعه هنا

شكرا

بيشوى عاطف

#11

هل تقصد مازلت خارج الشبكة؟

انظر الصورة المرفقة ففيها صورة الكرة داخل الشبكة

لا اعلم ما هي المشكلة لديك

post-85599-1220614383_thumb.gif

#12

احم احم

يجب أن تلعبي اللعبة jfriend

لأنه لا معنى لأن تريد هذا الشكل بالمرة

ما لم يكن لزوم الحركة

ابحثي عن نسخة الكترونية منها

بالتأكيد ستجدي الكثير

بالنسبة لك أخي mr.beshoy

هل لديكم مانع لو قمت بتصميم الواجهات من جديد

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#13

السلام عليكم

فعلا كان يجب على بداية الاطلاع على اللعبة

لانني قد صعبت على نفسي و على الاخ beshoy الامر

فبعد ان جربت اللعبة -وللاسف غلبت بكل سهولة- وجدت ان الحل

سهل جدا كل المطلوب بعد ان ترسم الشبكة الزرقاء ان تجعل قيم

المتغيرات التالية كالتالي

line_x=40;

line_y=120;

فقط لالالالا غير

تحياتي

#14

لا مانع اخ علاء من تغير الوجهات

سوف نستفيد أكتر و اكتر

وشكرا

#15

السلام عليكم

الأخ الكريم beshoy كنت اقصد بردي السابق ان تصوري الخطأ للعبة جعلني اتصور مشكلتك

خطأ ايضا

بمعنى انني لم افهم المشكلة جيدا و الان اليك الكود بعد التعديل اي بعد ما فهمت اللعبة

-انا متأكدة انه الكود الان اصبحت بالشكل المطلوب

مش تبعت و تحكيلي ما غيرتيش حاجة -_- :lol: -

استعد الان الى المرحلة الثانية و الاصعب

mouseClicked

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Line2D;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class CreateImage extends JPanel {

private BufferedImage image;
private Graphics g;
private ImageIcon icon;
private JLabel image_label;
public static int squaresize = 80, line_x = 40, line_y = 120;
public static int oval1_x = line_x + (3 * squaresize), oval1_y = 120;
public static int oval2_x = line_x + (3 * squaresize), oval2_y = 120;
public static boolean ball1, ball2;

public CreateImage() {
image = new BufferedImage(700, 1000, BufferedImage.TYPE_INT_RGB);
g = image.getGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, image.getWidth(), image.getHeight());
MymouseAdabter mouse = new MymouseAdabter();
addMouseListener(mouse);
addMouseMotionListener(mouse);
}

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g.drawImage(image, 0, 0, null);
line_x = 40;
line_y = 120;
for (int row = 1; row <= 7; ++row) {
BasicStroke line = new BasicStroke(5);
g2.setStroke(line);
g2.setColor(Color.BLUE);
g2.draw(new Line2D.Double(line_x, line_y, line_x + (7 * squaresize), line_y));
line_y += squaresize;
}
line_x = 40;
line_y = 120;
for (int col = 0; col <= 7; col++) {
BasicStroke line = new BasicStroke(5);
g2.setStroke(line);
g2.setColor(Color.BLUE);
g2.draw(new Line2D.Double(line_x, line_y, line_x, line_y + (6 * squaresize)));
line_x += squaresize;
}
line_x=40;
line_y=120;

if (ball1) {
g.setColor(Color.BLACK);
g.fillOval(oval1_x, oval1_y - squaresize, squaresize, squaresize);
}
if (ball2) {
g.setColor(Color.BLUE);
g.fillOval(oval1_x, oval1_y - squaresize, squaresize, squaresize);
}

}

public static void play_oneActionListener() {
ball1 = true;
ball2 = false;
}

public static void play_twoActionListener() {
ball2 = true;
ball1 = false;
}

private class MymouseAdabter extends MouseAdapter {

@Override
public void mouseMoved(MouseEvent e) {
if (ball1||ball2) {

oval1_x = e.getX();

int uu=line_x + (7 * squaresize);
oval1_x = e.getX();


if (e.getX() > line_x + (7 * squaresize)) {
oval1_x = line_x + (6 * squaresize);
}

else if (e.getX() >= line_x + (6 * squaresize)) {
oval1_x = line_x + (6 * squaresize);
} 

else if (e.getX() >= line_x + (5 * squaresize)) {
oval1_x = line_x + (5 * squaresize);
} 

else if (e.getX() >= line_x + (4 * squaresize)) {
oval1_x = line_x + (4 * squaresize);
}

else if (e.getX() >=line_x + (3 * squaresize)) {
oval1_x = line_x + (3 * squaresize);
}

else if (e.getX() >= line_x + (2 * squaresize)) {
oval1_x = line_x + (2 * squaresize);
}

else if (e.getX() >= line_x + (1 * squaresize)) {
oval1_x = line_x + (1 * squaresize);
}

else if (e.getX() >= line_x + (0 * squaresize)) {
oval1_x = line_x + (0 * squaresize);
}

else if (e.getX() < line_x ) {
oval1_x = line_x + (0 * squaresize);
}
repaint();


}
//repaint();
}
}
}

حياكم الله

تم تعديل هذه المشاركة بواسطة jfriend في 6 سبتمبر 2008 في 20:00

#16

يبدو ان هناك مشكلة في عرض الكود في الرد السابق

سوف اقوم بارفاق ملف الجافا و ملفات الكلاس

بالتوفيق ان شاء الله

connect_4.rar

#17

أعتذر عن انقطاعى عن هذه المشكلة لأنى كنت فى سفر

المهم نكمل مع بعض

بصى اخت Jfriend

اولا السطرين دول

int uu=line_x + (7 * squaresize);
oval1_x = e.getX();

مش لازم منهم اصلا مش عارف ايه هدفك انك تضعيهم

المشكلة الكبرى انكى بعد ما تضغطين على الزرار

تختفى البانل التى عليها مكونات اللعب الاول و الثانى

رجاء المساعدة

و شكرا جدا

منتظر ردودكم

#18

السلام عليكم

اقتباس
بصى اخت Jfriend

اولا السطرين دول

مش لازم منهم اصلا مش عارف ايه هدفك انك تضعيهم

صحيح هاتين الجملتين فقط كنت قد وضعتهم سابقا من أجل

جمل الdebug

حتى استطيع ان أحدد اين المشكلة يبدو انني قد ازلت

جمل الdebug و لم انتبه الى ازالت هاتين الجملتين

بإمكانك حذفهم لا توجد مشكلة

اقتباس
المشكلة الكبرى انكى بعد ما تضغطين على الزرار

تختفى البانل التى عليها مكونات اللعب الاول و الثانى

ان شاء الله سوف احاول ان أساعدك في حل المشكلة

و لكن أمهلني بعض الوقت لاني مشغولة هذه الفصل

#19

شكرا اخت Jfriend لمساعدتك

و اتمنى ان تساعدينى فى هذه الجزئية

و لو توصلت لحل سأضعه هنا

#20
package TheFourthwin;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Game extends JFrame {

	private JPanel mainPlayer_panel;
	private JPanel playerone_panel;
	public static JButton play_one;
	private JPanel scoreone_panel;
	private JLabel score_one;
	private static JTextField field_one;
	private JPanel playertwo_panel;
	public static JButton play_two;
	private JPanel scoretwo_panel;
	private JLabel score_two;
	private static JTextField field_two;

	public Game() {
		Container c=getContentPane();
		c.setLayout(null);//
		mainPlayer_panel = new JPanel();
		mainPlayer_panel.setPreferredSize(new Dimension(200, 200));
		mainPlayer_panel.setBorder(BorderFactory.createTitledBorder("player"));
		mainPlayer_panel.setBackground(Color.pink);
		mainPlayer_panel.setBounds(700, 100, 300, 500);

		playerone_panel = new JPanel();
		playerone_panel.setPreferredSize(new Dimension(200, 200));
		playerone_panel.setBorder(BorderFactory.createTitledBorder("player one"));
		play_one = new JButton("playe");
		play_one.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				CreateImage.play_oneActionListener();
				repaint();
			}
		});

		scoreone_panel = new JPanel(new FlowLayout());
		score_one = new JLabel("score");
		field_one = new JTextField(10);
		scoreone_panel.add(score_one);
		scoreone_panel.add(field_one);
		playerone_panel.add(play_one);
		playerone_panel.add(scoreone_panel);

		playertwo_panel = new JPanel();
		playertwo_panel.setPreferredSize(new Dimension(200, 200));
		playertwo_panel.setBorder(BorderFactory.createTitledBorder("player one"));
		play_two = new JButton("playe");
		play_two.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				CreateImage.play_twoActionListener();
				repaint();
			}
		});
		scoretwo_panel = new JPanel(new FlowLayout());
		score_two = new JLabel("score");
		field_two = new JTextField(10);
		scoretwo_panel.add(score_two);
		scoretwo_panel.add(field_two);
		playertwo_panel.add(play_two);
		playertwo_panel.add(scoretwo_panel);

		mainPlayer_panel.add(playerone_panel);
		mainPlayer_panel.add(playertwo_panel);
		c.add(mainPlayer_panel);
		JPanel some=new CreateImage();
		some.setBounds(0, 0, 700, 800);//
		c.add(some);
	}

	public static void main(String[] args) {

		JFrame frame = new Game();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setSize(1000, 800);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
}

ويعلم الله أني عانيت الأمرين في إصلاحه

كما توقعت المشكلة مشكلة Layout

وضعت لك علامة // عند كل جملة أضفتها

بالمناسبة ما فائده هذه الجمل

frame.pack();
frame.setLocationRelativeTo(null);

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#21

شكراً جداً جداً مستر علاء

بس لى سوال واحد انا مغيرتش اى حاجة فى الكود غير انى خليت اول سطرين حضرتك ضفتهم

 Container c = getContentPane();
		c.setLayout(null);

و الجزء ده

 JPanel some = new CreateImage();
		some.setBounds(0, 0, 700, 800);
		getContentPane().add(some);

لكن لما بحذف اول سطرين الدنيا بتتلغبط تانى ايه السبب ممكن افهم

و شكرا جدا

#22

السبب أنه يجب يكون للنافذة Frame منظم Layout لترتيب المكونات component

في حال كان المنظم null يعني غير موجود

يجب عليك أن تحدد مكان كل مكون بنفسك

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#23

هل تقصد ب (في حال كان المنظم null يعني غير موجود)

مثل هذه الكود

c.setlayout(null);

اسف جدا على اسئلتى الغبية بس هتعبكم اكتر بعد كده بجد ههههه

و اسف على الازعاج لكن بجد ان ابستفيد مكنكم جدا

#24

اه بالضبط :lol:

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#25

سلام للجميع

إخواتى الإعزاء

أنى فى مرحلة الmouseClicked()

تكملة على الكود السابق

كملت حتة الكود هذه

private class MymouseAdabter extends MouseAdapter {

		@Override
		public void mouseMoved(MouseEvent e) {
			if (ball1 || ball2) {
				oval_x = e.getX();

				if (e.getX() > line_x + (7 * squaresize)) {
					oval_x = line_x + (6 * squaresize);
				} else if (e.getX() >= line_x + (6 * squaresize)) {
					oval_x = line_x + (6 * squaresize);
				} else if (e.getX() >= line_x + (5 * squaresize)) {
					oval_x = line_x + (5 * squaresize);
				} else if (e.getX() >= line_x + (4 * squaresize)) {
					oval_x = line_x + (4 * squaresize);
				} else if (e.getX() >= line_x + (3 * squaresize)) {
					oval_x = line_x + (3 * squaresize);
				} else if (e.getX() >= line_x + (2 * squaresize)) {
					oval_x = line_x + (2 * squaresize);
				} else if (e.getX() >= line_x + (1 * squaresize)) {
					oval_x = line_x + (1 * squaresize);
				} else if (e.getX() >= line_x + (0 * squaresize)) {
					oval_x = line_x + (0 * squaresize);
				} else if (e.getX() < line_x) {
					oval_x = line_x + (0 * squaresize);
				}


			}
			repaint();
		}


		@Override
		public void mouseClicked(MouseEvent e) {
			if (ball1||ball2) {
				oval_y = e.getY();
				if (e.getY() >= line_y+(oval_y * 6)) {
					oval_y = line_y+(oval_y * 6);
				} else if (e.getY() < line_y+(oval_y * 5)) {
					oval_y = line_y+(oval_y * 5);
				} else if (e.getY() <line_y+(oval_y * 4)) {
					oval_y = line_y+(oval_y * 4);
				} else if (e.getY() < line_y+(oval_y * 3)) {
					oval_y = 120+(oval_y * 3);
				} else if (e.getY() < (oval_y * 2)) {
					oval_y = 120+(oval_y * 2);
				} else if (e.getY() < 120+(oval_y * 1)) {
					oval_y = 120+(oval_y * 1);
				}

			}
			repaint();
		}
	}
	}

المشكلة فى الmouseclicked()

أن الكرة المفروض تنزل عند آخر صف و تقف و متكملش ده الطبيعى

لكن المشكلة انها لما تنزلها لآخر صف

و تضغط تانى بالماوس تحت آخر صف فى الشبكة تروح تنزل بردو

ايه السبب ؟ رغم انى قايل

if (e.getY() >= line_y+(oval_y * 6)) {
					oval_y = line_y+(oval_y * 6);

شكراً مقدماً

مواضيع مشابهة