Lapā tiek izmantotas sīkdatnes 

2048


2048 ir populāra skaitļu spēle, kur lietotājs, izmantojot virziendarbības taustiņus, sapludina spēles laukumā attēlotos skaitļus, cenšoties sasniegt pēc iespējas lielāku rezultātu.

2048


Apskatīsim vienkāršāko spēles variāciju, kur laukums veidots 4x4 rūtiņu izmērā ar 16 rūtiņām kopskaitā.

Laukumam izmantosim 2-dimensiju sarakstu...

Laukuma izveide

Nodefinē sarakstu, kas nejauši izvēlētā pozīcijā glabā 1 nejauši izvēlētu skaitli 2 ≤ N ≤ 16, kurš vienmēr dalās ar 2 bez atlikuma.

🔢 Kā ģenerēt skaitli?

Visvieglāk ir ģenerēt skaitli 2 un to kāpināt vajadzīgajā pakāpē, tādējādi skaitlis vienmēr dalīsies ar 2.

Tā kā maksimālā vērtība ir 16, tas ir skaitļa 2 kāpinājums pakāpē 4, bet skaitlis 2 ir tā kāpinājums pakāpē 1, tādējādi der visas pakāpes no 1 līdz 4.

Kāpināšanai izmanto Python operatoru ** vai pow(skaitlis, pakape) funkciju.


Pārējās pozīcijās var glabāties 0, kas neattēlosies spēles laukumā.

Piemērs:

rinda = [0, 4, 0, 0]

Atkārto algoritmu 4 reizes, lai kopskaitā būtu 4x4 saraksts ar 4 nejauši izvēlētiem skaitļiem, kur katrs no tiem atrodas savā rindā.

Piemērs:

laukums = [
    [0, 4, 0, 0],
    [0, 0, 2, 0],
    [4, 0, 0, 0],
    [0, 0, 0, 8]
]

Lietotāja ievads

Lai varētu spēlēt, nepieciešams ievads no spēlētāja. Varam izmantot W A S D burtus un attiecīgos taustiņus, kur

W - uz augšu
A - pa kreisi
S - uz leju
D - pa labi

Rūtiņu sapludināšana (skaitļu saskaitīšana)

Izdarot gājienu, spēlētājs izvēlas, kurā virzienā notiks skaitļu sapludināšana.

Tas nosaka, kā jāpārbauda visas laukuma vērtības - pa rindām vai pa "kolonnām".

Kolonna šajā gadījumā ir visu rindu attiecīgais elements. Kā katrā kolonnā, tā arī katrā rindā ir 4 skaitļi.

Apskatīsim algoritmu vienas rindas ietvaros...

rinda = [4, 2, 2, 0]
# kā rīkoties?! 🤨

Neatkarīgi no virziena, ko izdara spēlētājs, jaunās vērtības rindā būs 4 un 4. Izvēlētais virziens nosaka, kurā rindas galā vērtības novietosies - sākumā vai beigās.

Skaitļus salīdzina pa pāriem un vienā operācijā saskaita ne vairāk par 2 skaitļiem.

summing

Šo pašu principu attiecina arī uz kolonnām...

Turpinājums sekos...