• 0
mr.beshoy

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

سؤال

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

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

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

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

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

 

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();

}

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

49 إجابة على هذا السؤال .

  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شوف حضرتك

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

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

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

و حضرتك لو عملت 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();
}
}

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

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

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

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

 

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
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

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

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

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

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

صحيح؟

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مممممممممم

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

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

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

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

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

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

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

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

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

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

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

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

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

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

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

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

شكرا

بيشوى عاطف

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

post-85599-1220614383_thumb.gif

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

احم احم

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

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

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

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

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

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

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

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

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

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

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

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

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

line_x=40;

line_y=120;

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

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

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

خطأ ايضا

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

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

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

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

mouseClicked

[size="2"][color="#000000"]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();
}
}
}
[/color][/size]

حياكم الله

تم تعديل بواسطه jfriend
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

connect_4.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

بصى اخت Jfriend

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

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

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

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

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

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

و شكرا جدا

منتظر ردودكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

بصى اخت Jfriend

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

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

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

جمل الdebug

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

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

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

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

و الجزء ده

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

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

و شكرا جدا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

مثل هذه الكود

c.setlayout(null);

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اه بالضبط :lol:

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سلام للجميع

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

أنى فى مرحلة ال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);

شكراً مقدماً

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أولاً هكذا خطأ

يجب أن يكون لديك مصفوفة تحتوي على هل الخانة ممتلئة أو فاضية

ثانياً يجب عليك أن ترسم لكل خانة إن كانت ممتلئة كرة

قم بعمل هذا وسنرى ما المشكلة بعد ذلك

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .