السلام عليكم
اني محتاج مساعدة في لعبتي البسيطة "breakout" في لغة الجافا
اكيد الكل يعرف شنو هاي اللعبة والي مايعرف هاي صورة للعبة
اللعبة كوده بسيط جدا وهي شارفت على الانتهاء بس في ثلاث مشاكل فيها
اولا المستطيلات التي يجب ان تختفي واحد بعد واحد لا تعمل عندي وانما تختفي كلها بضربة واحدة
ثانيا حركة الكرة نفسها لاتتغير ابدا
ثالثا الكرة فيها مشكلة تتحرك اولا بشكل صحيح ثم ترجع فق الى الخلف
هذا هو كود اللعبة
كود:
public class Brick {
int xPos,yPos;
boolean on;
}
كود:
import java.awt.*;
import java.awt.event.*;
public class test extends Canvas {
int x = 200 , y = 350, X = 235 , Y = 335;
int bollyhast = -1, bollxhast =1;
int n ;
Graphics buffer;
Image bufferI;
Brick[] brickor = new Brick[12];
Color[] farg = new Color[12];
public test () {
setPreferredSize(new Dimension(480,480));
for (int n=0; n<2; n++) {
for (int m = 0; m<6; m++) {
brickor[n*6+m] = new Brick();
brickor[n*6+m].xPos = m*80;
brickor[n*6+m].yPos = n*12;
}
}
}
public void update(Graphics g) {
paint(g);
}
public void paint(Graphics yta) {
if (buffer == null) {
bufferI = createImage(480,480);
buffer = bufferI.getGraphics();
}
buffer.setColor(Color.BLACK);
buffer.fillRect(0,0,480,480);
// Ritar ut alla block
if (brickor[n].on == true) {
for (int n = 0; n<12; n++) {
int R = (int)(Math.random()*256);
int B = (int)(Math.random()*256);
int G = (int)(Math.random()*256);
farg[n] = new Color(R,B,G);
buffer.setColor(farg[n]);
buffer.fillRect(brickor[n].xPos,brickor[n].yPos,78,10);
}
}
// H?r skriv koden f?r att rita ut "pinnen"
buffer.setColor(Color.BLUE);
buffer.fillRect(x,y,80,10);
//h?r ?r koden f?r att rita ut "bollen"
buffer.setColor(Color.RED);
buffer.fillOval(X,Y,15,15);
yta.drawImage(bufferI,0,0,null);
}
}
كود:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class breakout extends JFrame implements KeyListener
{
test kludd = new test();
Rectangle mig, boll;
Rectangle[] bricks = new Rectangle[12];
int n;
public breakout()
{
setTitle("BreakOut");
//test kludd = new test();
add(kludd);
pack();
setVisible(true);
kludd.addKeyListener(this);
addKeyListener(this);
kludd.brickor[n].on = true;
mig = new Rectangle(kludd.x,kludd.y,80,10);
boll = new Rectangle(kludd.X,kludd.Y,15,15);
for(int m = 0; m<12; m++) {
bricks[n] = new Rectangle(kludd.brickor[n].xPos,kludd.brickor[n].yPos,78,10);
}
// GAMELOOP
while (true) {
kludd.Y += kludd.bollyhast;
kludd.X += kludd.bollxhast;
if (kludd.X > (480-15)) kludd.bollxhast = -kludd.bollxhast;
if (kludd.X < 0) kludd.bollxhast = -kludd.bollxhast;
if (kludd.Y < 0) kludd.bollyhast = -kludd.bollyhast;
if (kludd.Y > (480-15)) System.out.println("Game over!");
boll.setLocation(kludd.X,kludd.Y);
if (boll.intersects(mig)) {
kludd.bollxhast = (-1);
kludd.bollyhast = (-1);
System.out.println("Krock!");
}
if (boll.intersects(bricks[n])) {
kludd.brickor[n].on = false;
System.out.println("Yeah");
}
kludd.repaint();
try {
Thread.sleep(10);
}
catch (Exception e) {
}
}
}
public void keyPressed(KeyEvent e) {
// System.out.println(e);
System.out.println(e.getKeyCode());
if (e.getKeyCode() == 37){
kludd.x = kludd.x-10;
}
if(e.getKeyCode() == 39){
kludd.x = kludd.x+10;;
}
if (kludd.x>480-80)
{
kludd.x = 480-80;
}
if (kludd.x<0)
{
kludd.x =0;
}
mig.setLocation(kludd.x,kludd.y);
}
public void keyReleased(KeyEvent e) {
System.out.println("Key Released!!!");
}
public void keyTyped(KeyEvent e) {
}
public static void main(String[] arg)
{
new breakout();
}
}
الي عند ه خبرة في الجافا خلي مايبخل علينا بمعلوماته
شكرا
اخوكم سيمثان