Lapā tiek izmantotas sīkdatnes 

Aklās karātavas


karatavas

Problēmas apraksts

Spēli, kurā jāatmin vārds ar aizklātiem burtiem, daudzi pazīst kā KARĀTAVAS. Apskatīsim algoritmu, kas darbina šo spēli...

Specifikācija

Būtiskākā spēles daļa ir izveidot minamo vārdu, ko spēlētājam nāksies atminēt. Tas ir kāds sadzīvisks lietvārds vai parādības nosaukums nominatīva locījumā no iepriekš sastādītas vārdu kopas. Tā varētu izskatīties šādi:

minamie_vardi = [
    "LIETUS",
    "BARAVIKA",
    "OSTMALA",
    "TAURE",
    "RUDENS"
    ]

1. daļa - minamā vārda sagatavošana

Izmanto doto vārdu kopu savā algoritmā, to papildinot.

No dotās kopas (saraksta) jāizvēlas viens vārds. Izmanto indeksu vai random.choice() funkciju.

Izvēlētajā vārdā jāpaslēpj daļa no burtiem. Pieņemsim, ka tie būs visi burti, izņemot pirmo un pēdējo. Paslēptie burti jāaizstāj ar rakstzīmi _ jeb apakšsvītru. Tādējādi vārds SILTUMNĪCA spēlētājam attēlosies kā S________A.

Vārdu ar aizklātajiem vārdiem jāglabā atsevišķā mainīgajā, piemēram, mistiskais_vards.

2. daļa - vārda minēšana

Kad ekrānā izvadīts vārds ar aizklātajiem burtiem, var sākties burtu minēšanas process, kam nepieciešams ievads.

Ievads turpinās līdz brīdim, kad spēlētājs beidzot atmin visus paslēptos burtus.

Ja ievadītais burts vārdā ir vairākas reizes, tas tiek parādīts visās pozīcijās.

Pēc katra minējuma ir jācaurskata minamais vārds un jāpārbauda, vai tajā eksistē ievadītais simbols. Tādā gadījumā tas "jānoliek īstajā(s) vietā(s)". Ja ievadītā burta nav, turpina minēt.

Vari izmantot šādu vai līdzīgu cikla konstrukciju...

for indekss in range(len(minamais_vards)):
    if minamais_vards[indekss] == ievaditais_burts:
        mistiskais_vards[indekss] = ievaditais_burts

Cikla nosacījumam jābūt tādam, lai cikls apstātos pie visiem atminētiem burtiem vārdā.

Algoritma kods
import random

# definē vārdu kopu
minamie_vardi = [
    "LIETUS",
    "BARAVIKA",
    "OSTMALA",
    "TAURE",
    "RUDENS"
    ]

# izvēlas vienu vārdu
minamais_vards = random.choice(minamie_vardi)

# nolasa vārda garumu
varda_garums = len(minamais_vards)

# sastāda aizklāto vārdu
mistiskais_vards = ["_"] * varda_garums 

# atklāj pirmo un pēdējo burtu
mistiskais_vards[0] = minamais_vards[0] 
mistiskais_vards[-1] = minamais_vards[-1]

# cikls
while "_" in mistiskais_vards:
    print(mistiskais_vards)
    ievaditais_burts = input("Burts: ").upper()

    # caurskata burtus vārdā
    for indekss in range(len(minamais_vards)):
        # pārbauda, vai vārdā ir ievadītais burts
        if minamais_vards[indekss] == ievaditais_burts:
            # atklāj ievadīto burtu(s)
            mistiskais_vards[indekss] = ievaditais_burts

print(mistiskais_vards)
print("Atminēji vārdu!")