Marţi, 28 august 2012, ne-am mai întâlnit încă o dată pentru continuarea jocului nostru, numit în prezent
Explorare suprafaţă minată.
Încă nu există un fişier de Ajutor, dar scriu aici un mic tutorial, urmând ca în viitor să îl includem în pachet.
Jocul are 3 nivele de dificultate.
În fiecare nivel "personajul" este aruncat pe o suprafaţă de dimensiuni random, cu o lungime vest - est de vreo 40 paşi, nord - sud de vreo 20 paşi.
Cu săgeată în sus personajul este deplasat în direcţia lui de mers câte un pas la fiecare apăsare.
Direcţia de mers se schimbă cu săgeţile stânga / dreapta.
Există în total 8 direcţii de mers: nord, nord-est, est, sud-est şi aşa mai departe.
La începutul rundei, personajul se află în colţul de sud-vest, pe poziţia 1x1 iar direcţia de mers este nord.
Pe suprafaţă sunt plasate aleatoriu la începutul unui nivel 10 mine care se activează la păşirea pe ele.
Din momentul activării unei mine există un timp limită de dezamorsare.
Undeva există şi o cheie care poate fi luată.
Pe una dintre margini există şi o uşă care poate fi deschisă dacă anterior a fost găsită şi luată cheia.
Dacă sunt dezamorsate cele 10 mine şi încă nu a fost găsită cheia, aceasta este luată automat. Dacă este găsită cheia şi încă nu au fost dezamorsate cele 10 mine, uşa poate fi deschisă şi nivelul este trecut cu succes.
Toate acţiunile (dezamorsare mină, luare cheie, încercare uşă) se efectuează apăsând tasta spaţiu.
Se consideră nivel terminat în momentul deschiderii uşii cu cheia găsită. Aşadar, dacă norocul face să fie găsită cheia înainte de dezamorsarea celor 10 mine, nivelul poate dura mult mai puţin.
Jocul se termină cu victorie în momentul trecerii cu succes de toate cele 3 nivele.
Se consideră înfrângere în momentul pierderii tuturor vieţilor sau în momentul expirării timpului limită disponibil pentru terminarea unui nivel.
O viaţă este pierdută dacă o mină nu este dezamorsată la timp şi explodează.
Lista tastelor disponibile:
- Săgeată în sus - deplasare în direcţia de mers.
- Săgeţi stânga / dreapta - schimbare direcţie de mers.
- Spaţiu - acţiuni pe poziţie.
- D - anunţă direcţia curentă.
- C - anunţă coordonatele poziţiei curente şi ce se află acolo.
- I - spune nivelul curent şi mărimea sălii.
- L - spune numărul de vieţi rămase.
- T spune timpul rămas pentru terminarea rundei.
- P - pune jocul pe pauză.
Diferenţe de nivel:
- Nivelul 1: 5 secunde disponibile pentru dezamorsare, 10 minute disponibile pentru terminare.
- Nivelul 2: 3 secunde disponibile pentru dezamorsare, 7 minute şi jumătate disponibile pentru terminare.
- Nivelul 3: o secundă disponibilă pentru dezamorsare, 5 minute disponibile pentru terminare.
Înainte de a pune link-ul către arhiva cu proiectul, dacă tot e vorba de învăţat ceva, pun mai jos şi un mic algoritm pe care l-am utilizat.
În momentul în care cele 10 mine au fost dezamorsate şi cheia nu a fost găsită, aceasta devine disponibilă ca şi cum am fi luat-o în mână cu tasta spaţiu.
Din acest moment ea nu trebuie să se mai găsească la poziţia ei random, ci trebuie căutată şi ştearsă de acolo.
În array-ul nostru bidimensional de tip int care reprezintă suprafaţa, cheia are valoarea 2, iar o poziţie goală are valoarea 0.
Aşadar, trebuie să găsim unde există valoarea 2 în array şi să punem acolo valoarea 0.
Mai jos este algoritmul de căutare într-un array bidimensional numit sala[][], algoritm aflat în proiect în fişierul 03_suprafata.bgt, în funcţia void eliminare_cheie():
Cod: Selectaţi tot
// k merge pe axa x (vest - est), iar l merge pe axa y (sud / nord):)
for(int k=0; k<lungime; k++)
{
for(int l=0; l<latime; l++)
{
// La fiecare punct se verifică dacă e cheie:
if(sala[k][l]==2)
{
-- Cheia este eliminată prin atribuirea valorii 0 la punctul găsit:
sala[k][l]=0;
break;
}
}
}
Proiectul în faza 6:
Download Fişier ZIP cu întreg proiectul în faza 6
Lansând fişierul .EXE din folderul rezultat la dezarhivare, oricine se poate juca.
Nu am verificat încă dacă valorile sunt bine alese, de exemplu pentru a dezamorsa o mină într-o secundă la nivelul 3 este foarte greu şi probabil ar trebui să fie mărit timpul limită la două secunde. Soluţia ar mai fi să se meargă cu atenţie, astfel încât să nu fie necesară întoarcerea cu 180 de grade, ci imediat după păşirea pe mină să se apese şi spaţiul pentru dezamorsare.
Se va mai lucra şi la design-ul audio.
Vom adăuga şi un cutremur care să arunce personajul de pe poziţia pe care se află, astfel încât uneori să fie bruiată căutarea sistematică de tip linie cu linie.
Aşteptăm sugestii dacă sunt, dacă nu... mergem înainte până va ajunge un pachet de instalare.
Poate are cineva o idee pentru numele final al joculeţului.