Hallo zusammen! Ich muss für einen Einführungskurs in Java ein Spiel programmieren. Das Spiel an sich funktioniert bislang. Nun möchte ich einen Startbildschirm mit einem Startbutton hinzufügen, der wenn er betätigt wird das Spiel startet. Jemand eine Idee was ich falsch mache oder wie ich das Einbetten könnte?
Java:
ArrayList<Integer> xRichtung = new ArrayList<Integer>(), yRichtung = new ArrayList<Integer>();
int spielFeldGroesseX=30, spielFeldGroesseY=30, bloecke=20, richtung=2, essenX=15, essenY=15, speed = 8, R = 255, G = 255, B = 255;
int[]richtungX={0, 0, 1, -1}, richtungY={1, -1, 0, 0}; // 2=rechts 3=links 0=runter 1= hoch
boolean gameover=false;
void setup()
{
size(600, 600);
xRichtung.add(10); //startpunkt
yRichtung.add(10);
}
void draw()
{
background(100, 50, 50);
line(0, 20, 600, 20);
fill(random(255), random(255), random(255)); //Farbwechsel
//Neue Schriftart auswählen
textSize(80);
text("Snake", 190, 130);
fill (255);
rect( 200, 260, 200, 80);
fill(0);
textSize(30);
text("Start Game", 220, 310);
if ((mouseX >= 200)&& (mouseX <= 400 ) &&(mouseY >= 260)&& (mouseY <= 340 ))
{
println("hi");
for (int i = 0; i < xRichtung.size(); i++) rect(xRichtung.get(i)*bloecke, yRichtung.get(i)*bloecke, bloecke, bloecke); //schlange zeichnen
if (!gameover) { //solange gameover false läuft Spiel
fill(R, G, B); //Futterfarbe
rect(essenX*bloecke, essenY*bloecke, bloecke, bloecke); //essen
textAlign(LEFT);
textSize(20);
fill(255);
text("Punkte: " + xRichtung.size(), 1, 1, 580, 50); //Ausrichtung Punktetafel
if (xRichtung.size()<= 5) {
textAlign(RIGHT);
textSize(20);
fill(255);
text("Schelligkeit: Lahm", 0, 0, 550, 50); //Ausrichtung Schelligkeitanzeige
}
if (xRichtung.size()> 5 && xRichtung.size()<= 10) {
textAlign(RIGHT);
textSize(20);
fill(255);
text("Schelligkeit: Normal", 0, 0, 550, 50); //Ausrichtung Schelligkeitanzeige
}
if (xRichtung.size()>10 && xRichtung.size() <= 15) {
textAlign(RIGHT);
textSize(20);
fill(255);
text("Schelligkeit: Schnell", 0, 0, 550, 50); //Ausrichtung Schelligkeitanzeige
}
if (xRichtung.size() > 15) {
textAlign(RIGHT);
textSize(20);
fill(255);
text("Schelligkeit: Ultra", 0, 0, 550, 50); //Ausrichtung Schelligkeitanzeige
}
if (frameCount%speed==0)
{
xRichtung.add(0, xRichtung.get(0) + richtungX[richtung]); // wachsen
yRichtung.add(0, yRichtung.get(0) + richtungY[richtung]);
if (xRichtung.get(0) < 0 || yRichtung.get(0) < 0 || xRichtung.get(0) >= spielFeldGroesseY || yRichtung.get(0) >= spielFeldGroesseX) //sterben wenn spielefeldrand berührt
gameover = true;
for (int i=1; i<xRichtung.size(); i++) // sterben wenn Schlange sich selbst berührt
if (xRichtung.get(0)==xRichtung.get(i)&&yRichtung.get(0)==yRichtung.get(i))
gameover=true;
if (xRichtung.get(0)==essenX && yRichtung.get(0)==essenY) //neues essen wenn geschnappt
{
if (xRichtung.size() %5==0 && speed>=2)
speed-=1; // alle 5 Punkte schnelligkeit erhöhen
essenX = (int)random(0, spielFeldGroesseX); //neues essen spawn, damit nicht in Schrift spawnt
essenY = (int)random(0, 29);
R = (int)random(255);
G = (int)random(255);
B = (int)random(255); // farbe ändern essen
} else
{
xRichtung.remove(xRichtung.size()-1);
yRichtung.remove(yRichtung.size()-1);
}
}
} else { //game overtext
fill(200, 200, 50);
textSize(30);
textAlign(CENTER);
text("Verloren! \n Deine Punktzahl ist: "+ xRichtung.size() +"\n Drücke ENTER zum Neustart", width/2, height/2);
if (keyCode == ENTER) // neustart einleiten und breinigung
{
xRichtung.clear();
yRichtung.clear();
xRichtung.add(10); //Respawn schlange bei 10 und 10
yRichtung.add(10);
richtung = 2;
speed = 8;
gameover = false;
}
}
}
}
void keyPressed() {
int richtungsWechsel=keyCode == DOWN? 0:
(keyCode == UP?1:
(keyCode == RIGHT?2:
(keyCode == LEFT?3:-1)));
if (richtungsWechsel != -1) richtung = richtungsWechsel;
}