Initial sharing of project
This commit is contained in:
102
Spiel.java
Normal file
102
Spiel.java
Normal file
@@ -0,0 +1,102 @@
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
|
||||
/**
|
||||
* Beschreiben Sie hier die Klasse Spiel.
|
||||
*
|
||||
* @author (Ihr Name)
|
||||
* @version (eine Versionsnummer oder ein Datum)
|
||||
*/
|
||||
public class Spiel extends JFrame
|
||||
{
|
||||
private final Display display;
|
||||
private final Labyrinth labyrinth;
|
||||
private final PacMan pacman;
|
||||
private final GeistGegner geistgegner;
|
||||
private final GeistGegner2 geistgegner2;
|
||||
|
||||
private boolean won;
|
||||
|
||||
|
||||
|
||||
|
||||
Spiel(){
|
||||
super("Game");
|
||||
|
||||
display = new Display(this);
|
||||
labyrinth = new Labyrinth(40);
|
||||
pacman = new PacMan(this, 13.5, 10.5, 0.375, 0.07);
|
||||
addKeyListener(pacman);
|
||||
|
||||
geistgegner = new GeistGegner(this,12.5, 8.5, 0.375, 0.06);
|
||||
addKeyListener(geistgegner);
|
||||
|
||||
geistgegner2 = new GeistGegner2(this,14.5, 8.5, 0.375, 0.06);
|
||||
addKeyListener(geistgegner2);
|
||||
|
||||
|
||||
setSize(1096, 759);
|
||||
setResizable(false);
|
||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||
setLocationRelativeTo(null);
|
||||
setVisible(true);
|
||||
|
||||
startSpielLoop();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void startSpielLoop(){
|
||||
Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(()-> {tick();display.repaint();}, 0L, 1000L / 60L, TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
private void zuruecksetzen(){
|
||||
won = false;
|
||||
labyrinth.zuruecksetzen();
|
||||
pacman.zuruecksetzen();
|
||||
geistgegner.zuruecksetzen();
|
||||
geistgegner2.zuruecksetzen();
|
||||
}
|
||||
|
||||
public void win() {
|
||||
won = true;
|
||||
}
|
||||
|
||||
public void lose(){
|
||||
JOptionPane.showMessageDialog(null, "Game Over!");
|
||||
zuruecksetzen();
|
||||
}
|
||||
|
||||
private void tick(){
|
||||
if (won) {
|
||||
JOptionPane.showMessageDialog(null, "Du hast gewonnen!");
|
||||
zuruecksetzen();
|
||||
}
|
||||
pacman.tick();
|
||||
geistgegner.tick();
|
||||
geistgegner2.tick();
|
||||
}
|
||||
|
||||
public void render(Graphics2D g2){
|
||||
g2.setColor(Color.BLACK);
|
||||
g2.fillRect(0,0,getWidth(), getHeight());
|
||||
|
||||
labyrinth.render(g2, labyrinth.getSpielobjektGröße());
|
||||
pacman.render(g2, labyrinth.getSpielobjektGröße());
|
||||
|
||||
geistgegner.render(g2, labyrinth.getSpielobjektGröße());
|
||||
geistgegner2.render(g2, labyrinth.getSpielobjektGröße());
|
||||
|
||||
}
|
||||
|
||||
public Labyrinth getLabyrinth(){
|
||||
return labyrinth;
|
||||
}
|
||||
|
||||
public GeistGegner getGegner() {
|
||||
return geistgegner;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user