سلام للجميع
سابقاً فى الترم الأول لهذا العام كنت احاول برمجة لعبة Bomber man
و فعلاً بدات فى التنفيذ و لكن ضغوط ما منعتنى من التكملة
و لكنى انوى انا اكمل ما فكرت فيه و لكنى سابدأ من لاصفر فى الكود حيث ام ابرمج اشياء كثيرة فى هذه اللعبة سابقاً لذا فأسبدا من البداية
فكرة اللعبة لم لا يعرفها :-
هى ان هناك لاعب صغير الحجم يقف فى كورنر الشاشة و اماه حواجز بعض منها قابل للتفجير و البعض الآخر لا
و معه إمكانية وضع القنابل لتفجير الحواجز و بين الحاوجز يوجد حيوانات غريبة الشكل يجب أن يقتلها بالقنبلة و إذا لمسته يموت
شكل عام للعبة لمن لا يعرفها
http://www.acid-play.com/download/bomberman/
اعرض فى الأول المشكة بتعتى ثم الأكواد الى كتبتها :-شوفوا يا شباب
اول مشكلة موجهانى
ال panel الى عليها ( new game - option - help - exit )
مش عارف ازاى اجعلها فى منتصف ال frame الرئيسية
تانى مشكلة
لما با جى اضغط على new game مش بيعرضى البانل الى عليها الحواجز ( انا عملت فى الأول حاجز واحد بس انا مردتش اجيب صورة جاهزة للحاجز فحبيت اصممه بنفسى ) ممكن تاخد الكلاس الخاص بالحاجز بس و تشوفوا الناتج بتاعه
دى المشاكل جملتها
الكود
الكلاس الأول
import java.awt.BorderLayout;
import javax.swing.JFrame;
public class MainFrame extends JFrame {
private GameOpetions game;
public MainFrame() {
game = new GameOpetions();
getContentPane().add(game, BorderLayout.CENTER);
}
public static void main(String[] args) {
JFrame frame = new MainFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setSize(600, 300);
}
}الكلاس التانى الخاص بالبانل الى عليها
( new game - options - help - exit )
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
class GameOpetions extends JPanel {
private JPanel buttons_panel;
private JButton[] buttons;
private String[] butttons_name = {"New", "Options", "help", "Exit"};
private Divider divider;
public GameOpetions() {
buttons_panel = new JPanel();
buttons_panel.setLayout(new GridLayout(4, 1));
buttons_panel.setBorder(BorderFactory.createLineBorder(Color.BLUE, 5));
buttons_panel.setPreferredSize(new Dimension(300, 250));
buttons = new JButton[butttons_name.length];
for (int i = 0; i < butttons_name.length; ++i) {
buttons = new JButton(butttons_name);
buttons_panel.add(buttons);
add(buttons_panel);
}
buttons[0].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, new Divider());
}
});
}
}الكلاس الثالث المتعلق برسم العائق
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Stroke;
import java.awt.geom.Line2D;
import javax.swing.JPanel;
public class Divider extends JPanel {
private int x_hardWall = 100, y_hardwall = 60;
public Divider() {
}
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D graph = (Graphics2D) g;
Stroke line_stroke = new BasicStroke(2);
graph.setStroke(line_stroke);
graph.setPaint(Color.GREEN);
g.fillRect(x_hardWall, y_hardwall, x_hardWall - 50, y_hardwall);
graph.setPaint(Color.BLACK);
for (int i = 1; i <= 3; i++) {
Line2D line = new Line2D.Double(x_hardWall, y_hardwall + 20 * i,
x_hardWall + 50, y_hardwall + 20 * i);
graph.draw(line);
}
for (int i = 1; i <= 2; ++i) {
Line2D line1 = new Line2D.Double(x_hardWall + 15 * i, y_hardwall,
x_hardWall + 15 * i, y_hardwall + 20);
graph.draw(line1);
}
Line2D line2 = new Line2D.Double(x_hardWall + 24, y_hardwall + 20,
x_hardWall + 24, y_hardwall + 40);
graph.draw(line2);
for (int i = 1; i <= 2; ++i) {
Line2D line1 = new Line2D.Double(x_hardWall + 15 * i, y_hardwall + 40,
x_hardWall + 15 * i, y_hardwall + 60);
graph.draw(line1);
}
}
}