Lapā tiek izmantotas sīkdatnes 

Čūska (snake)


Problēmas apraksts

Šoreiz izveidosim labi pazīstamo čūskas spēli. Pirms tam svarīgi ir izplānot (pierakstīt), kas spēlei jādara jeb kādas ir tās prasības. Vispirms noformulēsim, ko nozīmē "čūskas spēle".

Spēlētājs ar tastatūru kontrolē tārpu, kas nedrīkst saskrieties nedz ar laukuma sienām, nedz arī ar savu asti. Tārpam jāsavāc pēc iespējas vairāk ābolu. Ar katru apēstu ābolu tārpa aste pagarinās.

Uzrakstīsim spēles noteikumus sīkāk, jo tie nosaka, ko un kā mums vajadzētu programmēt.

Spēles specifikācija

Vienkāršos teikumos aprakstīsim spēles funkcionalitāti:

  • čūskai ir garums
  • sākotnēji čūskas garums ir 5
  • čūskai ir arī galva
  • čūskas galvu var kontrolēt
  • čūska var pārvietoties virzienos ←→↑↓, bet tā nevar pārvietoties pa diagonāli
  • virzība atpakaļgaitā nav pieļaujama
  • jā čūskas galva nonāk saskarē ar laukuma sienu, spēle ir beigusies
  • spēles laukuma 4 malas ir sienas, kas ierobežo laukumu
  • ja čūskas galva nonāk saskarē ar asti, spēles ir beigusies
  • āboli parādās spēles laukumā nejauši izvēlētās vietās
  • vienlaicīgi spēles laukumā atrodas 1 ābols
  • apēdot ābolu, čūskas aste pagarinās par 1 vienību

Jānoskaidro arī spēles tehniskās prasības:

  • čūska pārvietojas pa neredzamu režģi
  • režģa viens kvadrāts ir 30 x 30 pikseļi, tik pat lieli ir arī čūskas ķermeņa fragmenti
  • režģa kopējais izmērs ir 10 x 10 jeb 300 pikseļi x 300 pikseļi
  • spēles gaitā čūskas galva kustās spēlētāja izvēlētā virzienā, bet ķermenis tai seko
  • ābols nedrīkst parādīties tajās režģa pozīcijās, kurās atrodas čūskas aste vai galva
  • čūskas virzība pa spēles laukumu notiek ar ātrumu 2 kustības/s
  • ābols attēlojas vienā no režģa rūtiņām nevis starp tām

Šeit ir piemērs tam, kā tārps pārvietojas režģī:

cuskas_kustiba

Piemērā tārpa garums ir 5 segmenti (zaļa galva + 4 astes fragmenti). Čūskai virzoties pa spēles laukumu, tās galva pārvietojas pa režģi, ķermenis tai seko un pēdējais astes fragments izgaist.

Šeit ir piemērs tam, kā pagarināšana notiek, ēdot ābolu:

cuska_aped_abolu

Kad čūskas galva un ābols nonāk vienā laukuma režģa rūtiņā, ābols izgaist un līdz ar nākamo kustību čūskas astes galā tiek pievienots jauns segments, tādējādi čūskas ķermeņa garums palielinās par 1.

Maršruta paturēšana atmiņā

Lai čūskas ķermenis varētu paklausīgi sekot galvai, nepieciešams saglabāt datora atmiņā čūskas kustības trajektoriju. Mums jāzina, kurā vietā uz spēles laukuma atrodas katrs astes fragments, jo tikai tā mēs varam secīgi tos pārvietot pa režģa rūtiņām.

Režģis

Spēles laukums ir iedomāts režģis, bet režģlīnijas nebūs redzamas. Režģi varam uztvert kā koordinātu plakni. Spēles loģikai, savukārt, jādarbojas saskaņā ar režģa izmēriem.

rezgis

Katrs čūskas ķermeņa fragments un arī ābols, pēc kura tā tieksies, spēles laukuma režģī tiks attēloti kā kvadrāti ar izmēru 30px x 30px. Figūru zīmēšana notiek kā atskaites punktu ņemot figūras augšējo kreiso stūri (redzams attēlā). Ja gribēsim iezīmēt kvadrātu režģa augšējā kreisajā stūrī, tā koordinātes būs x=0 un y=0, īsāk pierakstot (0, 0).

Tādā veidā mēs varam pierakstīt pozīciju režģī visiem čūskas ķermeņa fragmentiem.

Koda rakstīšana

Turpinājums sekos...