Start-skærm

Fra Holstebro HTX Wiki
Skift til: navigering, søgning

Dette handler ikke kun om start-skærmen, men også det at kommer over i en spille-skærm og en game over-skærm.

Program med spil-skærme

Spil-ide

Der er ikke noget spil i dette program, blot en illustration af hvordan man kan have et antal forskellige visninger i samme program.

Teknikken minder lidt om en state-machine, hvor hver tilstand har sin egen visning, og hvor nogle betingelser bringer programmet over i en anden tilstand.

Programmet har 3 tilstande, der er defineret med spilState i værdierne 0, 1 og 2.

I draw() laves blot 3 forskellige visninger, hvor man typisk vil have hele spillepladen vist i det der her er tilstand 1.

Skiftet i tilstandene er lavet, så skiftet fra 0 til 1 sker på tasten p. Koden til det ligger i keyTyped(), hvor man tester på om den nuværende tilstand er 0, og hvis den er, så testes om der er tastet p, og hvis der er det, så skiftes spilState til 1.

Skiftet i tilstand fra 1 til 2 skal simulere at et spil er stoppet, det kan være at man dør eller noget andet. Her er det lavet til et museklik, så det sker i mousePressed(), hvor man igen sikrer at det er i tilstand 1 man kan gå videre til tilstand 2.

På samme måde fra tilstand 2 og tilbage til tilstand 0 (her skulle man måske også nulstille alle spilvariabler. Der er også mulighed for at afslutte spillet.

byte spilState = 0;

void setup() {
  size(400, 400);
  textSize(30);
}

void draw() {
  if (spilState == 0) {
    background(0);
    text("Dette er en startskærm", 30, 30);
    text("Tast p for spilskærm", 30, 100);
  } else if (spilState == 1) {
    background(0, 0, 255);
    // Det kan være her man har hele spil-visningen
    text("Dette er spilleskærmen", 30, 30);
    text("Klik på musen for at ", 30, 100);
    text("komme videre", 30, 130);
  } else if (spilState == 2) {
    background(255, 0, 0);
    text("Dette er en Game Over skærm", 30, 30);
    text("Tast r for at genstarte", 30, 100);
    text("Tast q for at stoppe", 30, 130);
  }
}

void mousePressed() {
  if (spilState == 1) {
    spilState = 2;
  }
}

void keyTyped() {
  if (spilState == 0) {
    if (key == 'p') {
      spilState = 1;
    }
  } else if (spilState == 2) {
    if (key == 'r') {
      spilState = 0;
    } else if (key == 'q') {
      exit();
    }
  }
}

Referencer