Paprasti tekstiniai žaidimai, kuriuos galite žaisti komandinėje eilutėje, yra puikūs pradedantiesiems projektai.

Ar esate nusiteikęs žaisti žaidimą, kurį parašėte pats? Na, jūs esate tinkamoje vietoje. Hangman yra populiarus žodžių atspėjimo žaidimas, kurio versiją galite sukurti su minimaliomis pastangomis.

Šis žaidimas yra puiki pramoga, pažįstama iš populiarių TV žaidimų laidų ir serialų, tokių kaip „Fortune“, „Letterbox“ ir „Party Time“. O Python yra patogi kalba, kuria galima kurti Hangman kloną.

Kaip žaisti Hangman žaidimą

Hangman yra gerai žinomas žaidimas, kuriame vienas žaidėjas galvoja apie žodį, o kitas bando jį atspėti siūlydamas raides su fiksuotu spėjimų skaičiumi. Vienas žaidėjas (šiuo atveju programa) pateikia brūkšnelių seką, vaizduojančią kiekvieną žodžio raidę, kartu su simboliu kaip atskaitos tašku. Kitas žaidėjas (arba vartotojas) atspėja žodyje esančius simbolius po vieną.

Jei raidė, kurią jie atspėjo, yra tiksliniame žodyje, programa užpildo brūkšnį simboliu. Priešingu atveju žaidėjas praranda vieną šansą, o programa kaip rezultatą ištraukia lazdos figūrėlės elementą. Iš viso yra septynios galimybės, jei vartotojas teisingai atspėja žodį, jis laimi žaidimą. Jei ne, programa užbaigia savo piešinį su lazda.

instagram viewer

Galite sukurti mėgstamų žodžių sąrašą arba atsisiųsti patinkantį žodį Mieliestronk sąrašas, kuriame yra daugiau nei 58 000 angliškų žodžių. Taip pat galite tyrinėti ir kurti kitus įdomius tekstinius žaidimus, pvz., interaktyvus viktorinos žaidimas arba a tekstinis nuotykių žaidimas Python.

Žaidimas Kaip sukurti pakaruoklį

Šiame žaidime yra šio „Hangman“ žaidimo šaltinio kodas kartu su žodžių sąrašo failu GitHub saugykla ir yra nemokama naudoti.

Importuoti atsitiktinis modulį ir apibrėžti funkciją, get_random_word_from_wordlist(), norėdami pasirinkti atsitiktinį žodį iš failo. Tekstiniame faile gali būti bendrinių daiktavardžių arba vietų, gyvūnų, filmų ir kt. pavadinimų, atsižvelgiant į jūsų pageidavimus. Apibrėžkite sąrašą naudodami stačiakampius skliaustus ([]).

Naudoti su pareiškimą, kad atidarytumėte failą ir perdtumėte režimą kaip "r" nurodant tik skaitymo režimą. Tai automatiškai pasirūpina, kad failas bloko pabaigoje būtų uždarytas net ir klaidų atveju. Jei peržiūrėsite hangman_wordlist.txt failą, pastebėsite, kad kiekvienoje eilutėje yra vienas žodis, todėl failas kiekvieną žodį atskiria naujos eilutės simboliu.

Perduokite pabėgimo simbolį naujai eilutei (\n) į padalinti () funkcija išsaugoti kiekvieną žodį anksčiau apibrėžtame sąraše. Naudokite random.choice() norėdami grąžinti atsitiktinį žodį iš sąrašo.

import random
 
defget_random_word_from_wordlist():
wordlist = []
 
with open("hangman_wordlist.txt", 'r') as file:
wordlist = file.read().split("\n")
 
word = random.choice(wordlist)
return word

Tada apibrėžkite funkciją, get_some_letters (), kuris pasirenka atsitiktinai pasirinktą žodį kaip parametrą. Ši funkcija parodys tuščių brūkšnelių seką (_) ir kai kurie laiškai vartotojui.

Apibrėžkite tuščią sąrašą laiškus išsaugoti visus žodyje esančius simbolius. Naudoti temp kintamasis, skirtas išsaugoti eilutę, kurioje yra tuščių brūkšnelių skaičius, lygus žodžio ilgiui. Naudokite sąrašas () konvertuoti eilutę į simbolių sąrašą ir kartoti ją. Naudokite pridėti () norėdami įtraukti simbolį į sąrašą, jei jo dar nėra.

Naudokite random.choice() pasirinkti atsitiktinį simbolį, kurį ketinate pateikti vartotojui kartu su tuščiais brūkšniais. Pakartokite žodžio simbolius naudodami išvardinti kad galėtumėte sekti kiekvieno simbolio rodyklę.

Radę atsitiktinai pasirinktą simbolį, pakeiskite tuščią brūkšnį juo. Naudokite prisijungti () Norėdami sujungti simbolių sąrašą į visą eilutę ir grąžinti ją.

defget_some_letters(word):
letters = []
temp = '_' * len(word)
 
for char in list(word):
ifchar not in letters:
letters.append(char)
 
character = random.choice(letters)
 
for num, char in enumerate(list(word)):
ifchar == character:
templist = list(temp)
templist[num] = char
temp = ''.join(templist)
 
return temp

Apibrėžkite funkciją draw_hangman() kad parametru laikomas šansų skaičius. Ši funkcija pateikia kabančio žmogaus figūrą. Kadangi šansų skaičius vis mažėja, mažėja ir galimybės išgyventi. Išnaudojus figūra baigta ir žaidimas baigiamas.

defdraw_hangman(chances):
if chances == 6:
print("________ ")
print("| | ")
print("| ")
print("| ")
print("| ")
print("| ")
elif chances == 5:
print("________ ")
print("| | ")
print("| 0 ")
print("| ")
print("| ")
print("| ")
elif chances == 4:
print("________ ")
print("| | ")
print("| 0 ")
print("| / ")
print("| ")
print("| ")
elif chances == 3:
print("________ ")
print("| | ")
print("| 0 ")
print("| /| ")
print("| ")
print("| ")
elif chances == 2:
print("________ ")
print("| | ")
print("| 0 ")
print("| /|\ ")
print("| ")
print("| ")
elif chances == 1:
print("________ ")
print("| | ")
print("| 0 ")
print("| /|\ ")
print("| / ")
print("| ")
elif chances == 0:
print("________ ")
print("| | ")
print("| 0 ")
print("| /|\ ")
print("| / \ ")
print("| ")

Paskelbti funkciją, start_hangman_game(), kuris apibrėžia pagrindinę programos logiką. Gaukite atsitiktinį žodį paskambinę get_random_word_from_wordlist() funkciją ir gauti seką, kuri būtų rodoma vartotojui naudojant get_some_letters () funkcija.

Nustatykite galimybių skaičių iki septynių ir inicijuokite kintamąjį, rasta, kaip netikra. Jūs nustatysite tai tiesa jei žodyje yra spėjama raidė.

defstart_hangman_game():
word = get_random_word_from_wordlist()
temp = get_some_letters(word)
chances = 7
found = False

Paskelbkite kilpą, kuri baigiasi, kai vartotojas teisingai atspėja žodį arba išsenka. Pradėkite žaidimą parodydami seką, žodyje esančių raidžių skaičių ir likusias galimybes. Paprašykite vartotojo atspėti raidę ir gauti ją naudodami įvestis () funkcija. Patvirtinkite vartotojo įvestą simbolio ilgį ir ar tai abėcėlė.

whileTrue:
if chances == 0:
print(f"Sorry! You Lost, the word was: {word}")
print("Better luck next time")
break
 
print(" Guess the word ")
print(temp, end='')
print(f"\t(word has {len(word)} letters)")
print(f"Chances left: {chances}")
character = input("Enter the character you think the word may have: ")
 
iflen(character) > 1 ornotcharacter.isalpha():
print("Please enter a single alphabet only")
continue

Jei įvestis tinkama, patikrinkite, ar žodyje yra simbolis, ir pakeiskite jį naudodami anksčiau matytą procesą ir atnaujinkite rasti reikšmę. Jei simbolio nėra, sumažinkite galimybių skaičių. Jei yra, pakeiskite rasti reikšmę atgal į pradinę vertę false.

Jei tuščių brūkšnelių neliko, parodykite, kad vartotojas laimėjo, kartu su spėjimų skaičiumi, kitu atveju, pagal likusių šansų skaičių rodomas pakaruoklio grafikas.

else:
for num, char in enumerate(list(word)):
ifchar == character:
templist = list(temp)
templist[num] = char
temp = ''.join(templist)
found = True
 
if found:
found = False
else:
chances -= 1
 
if'_' not in temp:
print(f"\nYou Won! The word was: {word}")
print(f"You got it in {7 - chances} guess")
break
else:
draw_hangman(chances)
 
print()

Apibrėžkite funkciją, skirtą žaisti Hangman žaidimą. Jei vartotojas įveda „taip“, skambinkite start_hangman_game() kitu atveju išeikite iš žaidimo pateikę atitinkamą pranešimą. Jei įvestis neteisinga, paprašykite vartotojo įvesti dar kartą.

print(" Welcome to the Hangman Game ")
 
whileTrue:
choice = input("Do you wanna play hangman? (yes/no): ")
 
if'yes'in choice.lower():
start_hangman_game()
elif'no'in choice.lower():
print('Quitting the game...')
break
else:
print("Please enter a valid choice.")
 
print("\n")

Pakaruoklio žaidimo rezultatas

Jei laimėsite žaidimą, pamatysite šią išvestį:

Praradę žaidimą pamatysite šią išvestį:

Žaidimams kurti naudokite Python

Galite naudoti Python kurdami komandų eilutės žaidimus ir grafinius žaidimus. Kai kurie įdomūs komandų eilutės žaidimai, kuriuos galite sukurti naudodami Python, apima skaičių atspėjimo žaidimą, Magic 8 Ball žaidimą, Mad Libs, Rock/Paper/Scissors ir tekstinį nuotykių žaidimą.

Kai kurie linksmi grafiniai žaidimai, kuriuos galite sukurti naudodami python, yra Tic Tac Toe, Maze, Snake, Pacman, Memory, Life. Geriausia šių žaidimų dalis yra ta, kad galite juos kurti naudodami tik Python standartinę biblioteką.