Breakout
parent
2686aac7e3
commit
ce9f646909
|
@ -33,7 +33,6 @@ public class MouseMotionListenerBeispiel {
|
|||
});
|
||||
|
||||
frame.setSize(700, 700); // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 250
|
||||
frame.setSize(700, 500); // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 250
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
|
||||
frame.setLayout(new FlowLayout()); // لترتيب الأشياء التي أضفناها فيها FlowLayout هنا جعلنا النافذة تستخدم الـ
|
||||
frame.setVisible(true); // هنا جعلنا النافذة مرئية
|
||||
|
|
|
@ -0,0 +1,229 @@
|
|||
package Übungen.BreakOut;
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.KeyListener;
|
||||
import java.util.Random;
|
||||
|
||||
public class GamePlay extends JPanel implements Runnable,KeyListener,ActionListener {
|
||||
|
||||
// Schläger
|
||||
final int WIDTH = 80;
|
||||
final int HEIGHT = 10;
|
||||
int positionX = 700 / 2;
|
||||
int positionY = 700 - HEIGHT - 50;
|
||||
int bewegung = 0;
|
||||
Rectangle schläger;
|
||||
|
||||
// Ball
|
||||
final int WIDTHball = 10;
|
||||
final int HEIGHTball = 10;
|
||||
int positionXball = 700 / 2;
|
||||
int positionYball = 700 - HEIGHT - 90;
|
||||
double bewegungxball = 1 ;
|
||||
double bewegungyball = 1;
|
||||
Rectangle ball;
|
||||
|
||||
Random rand = new Random();
|
||||
|
||||
|
||||
int anzahlRects = 18;
|
||||
int[][] spielField = new int[3][6];
|
||||
|
||||
// Startpositionen für die Blöcke
|
||||
int posX = 60;
|
||||
int posY = 60;
|
||||
int width = 80;
|
||||
int height = 10;
|
||||
|
||||
|
||||
Rectangle schlägerGame;
|
||||
|
||||
boolean gameOver = false;
|
||||
|
||||
|
||||
GamePlay(){
|
||||
this.schläger = new Rectangle(positionX,positionY,WIDTH,HEIGHT);
|
||||
this.ball = new Rectangle(positionXball,positionYball,WIDTHball,HEIGHTball);
|
||||
fülleMitEinsen();
|
||||
schlägerGame = new Rectangle(posX,posY,width,height);
|
||||
|
||||
|
||||
|
||||
this.addKeyListener(this);
|
||||
this.setFocusable(true);
|
||||
this.setFocusTraversalKeysEnabled(false);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void fülleMitEinsen() {
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
for (int j = 0; j < 6;j++)
|
||||
spielField[i][j] = 1;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
|
||||
// Screen
|
||||
g.setColor(Color.BLACK);
|
||||
g.fillRect(0, 0, 700, 700);
|
||||
|
||||
// Schläger
|
||||
g.setColor(Color.WHITE);
|
||||
g.fillRect(schläger.x, schläger.y, schläger.width, schläger.height);
|
||||
|
||||
// Ball
|
||||
g.setColor(Color.WHITE);
|
||||
g.fillOval(ball.x, ball.y, ball.width, ball.height);
|
||||
|
||||
// Border
|
||||
g.setColor(Color.YELLOW);
|
||||
g.fillRect(0, 0, 700, 3);
|
||||
g.fillRect(0, 0, 3, 700);
|
||||
g.fillRect(680, 0, 3, 650);
|
||||
|
||||
// Blöcke zeichnen
|
||||
int initialPosX = 60;
|
||||
int initialPosY = 60;
|
||||
final int width = 80;
|
||||
final int height = 10;
|
||||
|
||||
posY = initialPosY;
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
posX = initialPosX;
|
||||
for (int j = 0; j < 6; j++) {
|
||||
if (spielField[i][j] > 0) {
|
||||
g.setColor(Color.RED);
|
||||
g.fillRect(posX, posY, width, height);
|
||||
}
|
||||
posX += width + 10; // 10 ist für Spacing
|
||||
}
|
||||
posY += height + 10;
|
||||
}
|
||||
}
|
||||
|
||||
public void mov() {
|
||||
checkKollision();
|
||||
// MovRect
|
||||
schläger.x += bewegung;
|
||||
|
||||
if (schläger.x < 0)
|
||||
schläger.x = 0;
|
||||
|
||||
if (schläger.x > getWidth())
|
||||
schläger.x = 600;
|
||||
|
||||
// MovBall
|
||||
ball.x += bewegungxball;
|
||||
ball.y -= bewegungyball;
|
||||
|
||||
if (ball.x <= 0 || ball.x >= 670)
|
||||
bewegungxball = -bewegungxball;
|
||||
|
||||
if (ball.y <= 0 || ball.intersects(schläger))
|
||||
bewegungyball = -bewegungyball;
|
||||
|
||||
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void setRandX(int x) {
|
||||
bewegungxball = x;
|
||||
}
|
||||
|
||||
public void setRandY(int x) {
|
||||
bewegungyball = x;
|
||||
}
|
||||
|
||||
public void checkKollision() {
|
||||
// Kollision mit Blöcken überprüfen
|
||||
for (int i = 0; i < 3; i++) {
|
||||
for (int j = 0; j < 6; j++) {
|
||||
if (spielField[i][j] > 0) {
|
||||
int blockX = 60 + j * (width);
|
||||
int blockY = 60 + i * (height);
|
||||
|
||||
Rectangle block = new Rectangle(blockX, blockY, width, height);
|
||||
|
||||
if (ball.intersects(block)) {
|
||||
spielField[i][j] = 0;
|
||||
|
||||
if (ball.x + ball.width - bewegungxball <= block.x || ball.x - bewegungxball >= block.x + block.width) {
|
||||
bewegungxball = -bewegungxball;
|
||||
} else {
|
||||
bewegungyball = -bewegungyball;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void setBewegungRect(int x) {
|
||||
bewegung = x;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
while (!gameOver) {
|
||||
mov();
|
||||
Thread.sleep(2);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void keyTyped(KeyEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void keyPressed(KeyEvent e) {
|
||||
if (e.getKeyCode() ==KeyEvent.VK_A)
|
||||
setBewegungRect(-1);
|
||||
|
||||
if (e.getKeyCode() ==KeyEvent.VK_D)
|
||||
setBewegungRect(+1);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void keyReleased(KeyEvent e) {
|
||||
if (e.getKeyCode() ==KeyEvent.VK_A || e.getKeyCode() ==KeyEvent.VK_D)
|
||||
setBewegungRect(0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package Übungen.BreakOut;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
import java.awt.*;
|
||||
import javax.swing.*;
|
||||
|
||||
public class Window extends JFrame {
|
||||
|
||||
final int WIDTH = 700;
|
||||
final int HEIGHT = 700;
|
||||
GamePlay gamePlay;
|
||||
|
||||
Window() {
|
||||
gamePlay = new GamePlay();
|
||||
|
||||
this.setTitle("Breakout Game");
|
||||
this.setBounds(10, 10, WIDTH, HEIGHT);
|
||||
this.setResizable(false);
|
||||
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
this.setLocationRelativeTo(null);
|
||||
this.getContentPane().setBackground(Color.BLACK);
|
||||
this.setVisible(true);
|
||||
|
||||
this.add(gamePlay);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Window game1 = new Window();
|
||||
Thread gamePlay = new Thread(game1.gamePlay);
|
||||
gamePlay.start();
|
||||
//
|
||||
// Ball b1 = new Ball();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue