Astăzi vom crea jocul Simon.
Definiți următoarele variabile de care vom avea nevoie în continuare:
n
= numărul de linii/coloane pe care le vom avea în joc. Pentru jocul clasic Simon, n = 2 (roșu și verde pe prima linie, albastru și galben pe a doua). Puteți să vă jucați cu mai multe valori dacă vreți după ce construim tot jocul.speed
= viteza cu care vor fi arătate butoanele în etapa de afișare.colors
= matricea în care vom păstra culorile butoanelor inițiale. Alegeți ce culori vreți, și aranjați-le pe 2 rânduri și două coloane.colorsSelected
= matricea în care vom păstra culorile butoanelor dacă sunt apăsate. Alegeți culori apropiate ca nuanță cu cele din matricea colors
.state
= starea în care ne aflăm în joc (vom avea un ecran de început, apoi perioada în care se afișează culorile în ordine, apoi perioada în care trebuie să apăsăm noi pe butoane). Pentru început o inițializăm cu 0, sau „start“.coords
= lista de coordonate ale butoanelor care trebuiesc apăsate. Pentru început îl inițializăm la lista goală [].playerCoords
= lista de coordonate ale butoanelor care au fost apăsate de jucator. Pentru început îl inițializăm la lista goală [].
O matrice cu 3 rânduri și 4 coloane se declară astfel:
var m = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 0, 1, 2]];
Pentru a continua mai departe vom avea nevoie de câteva funcții.
drawBegin
va desena un mesaj de început, spre exemplu: „Apăsați Enter pentru a începe.“drawFail
va desena un mesaj pentru cazul în care jucătorul a pierdut.drawWin
va desena un mesaj pentru cazul în care jucătorul a câștigat.drawButton
va desena un buton. Această funcție va primi ca parametru indicii x și y, precum și matricea de culori din care să extragă culoarea potrivită. Vom apela această funcție atât în momentul în care desenăm butoanale de început, cât și atunci când selectăm un buton.drawGame
va desena cele 4 butoane pe ecran. Nu uitați să desenați și fundalul!
O funcție se declară astfel:
var f = function (param1, param2) { // corpul funcției };
În continuare vom realiza interacțiunea cu mouse-ul. Vom face în felul următor:
mousePressed
colorsSelected
colors
)playerCoords
lista.push(3); lista.push([x, y]);
În continuare vom scrie funcția draw. Aceasta va conține un switch după starea în care ne aflăm.
Instrucțiunea switch este definită astfel:
switch(variabila){ case valoare1: // bloc de instrucțiuni case valoare2: // bloc de instrucțiuni default: // bloc de instrucțiuni }
drawBegin
)drawGame
)playerCoords
cu []i
cu 0coords
un nou set de coordonate random (puteți face acest lucru astfel: coords.push([floor(random(0, n)), floor(random(0, n))])
i
pentru a ne spune câte frame-uri au fost desenate. Ca să afișam mai rar butoanele apăsate, vom afișa unul câte unul la un anumit număr de frame-uri. Viteza este dată de variabila speed
.var index = floor(i/speed); var x = coords[index][0]; var y = coords[index][1]; drawButton(x, y, colorsSelected); i = i + 1; if (i % speed === 0) { drawButton(x, y, colors); } if (floor(i/speed) >= coords.length) { i = 0; state = 3; }
playerCoords
) este aceeași cu secvența inițială (ce se află în lista coords
).for
de la 0 la playerCoords.length și verificați dacă elementul din playerCoords
este egal cu elementul coords
.coords
, treceți în starea 4.for
-ului este dacă cele două liste coords
și playerCoords
au aceeași lungime. Dacă da, atunci am câștigat runda și trecem în starea 5coords
, la fel ca la starea 1coordsPlayer
cu [] - jucătorul trebuie să redea pattern-ul de la 0 când începem următoarea tură