Yksinkertaiset tekstipelit, joita voit pelata komentorivillä, ovat loistavia aloittelijaprojekteja.

Onko sinulla mieliala pelata peliä, jonka olet itse kirjoittanut? No, olet oikeassa paikassa. Hangman on suosittu sanojen arvauspeli, ja voit luoda oman versionsi vähällä vaivalla.

Tämä peli on täydellinen viihdyttäjä, joka on tuttu suosituista TV-peliohjelmista ja sarjoista, kuten Wheel of Fortune, Letterbox ja Party Time. Python on kätevä kieli Hangman-kloonin rakentamiseen.

Kuinka pelata Hangman-peliä

Hangman on tunnettu peli, jossa yksi pelaaja ajattelee sanaa ja toinen pelaaja yrittää arvata sen ehdottamalla kirjaimia, joissa on kiinteä määrä arvauksia. Yksi pelaaja (tässä tapauksessa ohjelma) esittää sarjan viivoja, jotka edustavat sanan jokaista kirjainta, sekä merkin aloituskohtana. Toinen pelaaja (tai käyttäjä) arvaa sanassa olevat merkit yksitellen.

Jos heidän arvaamansa kirjain on kohdesanassa, ohjelma täyttää väliviivan merkillä. Muussa tapauksessa pelaaja menettää yhden mahdollisuuden ja ohjelma piirtää pistemääräksi tikku-elementin. Yhteensä seitsemän mahdollisuutta, jos käyttäjä arvaa sanan oikein, hän voittaa pelin. Jos ei, ohjelma viimeistelee piirustuksen keppimiehestä.

instagram viewer

Voit luoda luettelon suosikkisanoistasi tai ladata sellaisen Mieliestronkin luettelo, jossa on yli 58 000 englanninkielistä sanaa. Voit myös tutkia ja rakentaa muita hauskoja tekstipohjaisia ​​pelejä, kuten interaktiivinen tietokilpailupeli tai a tekstipohjainen seikkailupeli Pythonissa.

Kuinka rakentaa Hangman -peli

Tämän Hangman-pelin lähdekoodi sekä sanaluettelotiedosto ovat mukana tässä GitHub-arkisto ja on ilmainen käyttää.

Tuo satunnainen moduuli ja määritä funktio, get_random_word_from_wordlist(), valitaksesi satunnaisen sanan tiedostosta. Tekstitiedosto voi sisältää yleisiä substantiiveja tai paikkojen, eläinten, elokuvien ja muiden nimiä makusi mukaan. Määritä lista käyttämällä suorakaiteen muotoisia sulkuja ([]).

Käytä kanssa lauseke avataksesi tiedoston ja siirtääksesi tilan muodossa 'r' ilmaisee vain luku -tilan. Tämä huolehtii automaattisesti tiedoston sulkemisesta lohkon lopussa myös virhetapauksissa. Jos katsot hangman_wordlist.txt tiedostoa, huomaat, että jokaisella rivillä on yksi sana, joten tiedosto erottaa jokaisen sanan rivinvaihdolla.

Välitä rivinvaihdon pakomerkki (\n) kohtaan jakaa() toiminto tallentaa jokaisen sanan aiemmin määrittämääsi luetteloon. Käyttää random.choice() palauttaaksesi satunnaisen sanan luettelosta.

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

Määritä seuraavaksi funktio, get_some_ letters(), joka ottaa satunnaisesti valitun sanan parametriksi. Tämä toiminto näyttää sarjan tyhjiä viivoja (_) ja joitakin kirjeitä käyttäjälle.

Määrittele tyhjä lista kirjaimet tallentaaksesi kaikki sanassa olevat merkit. Käytä temp muuttuja tallentaaksesi merkkijonon, joka sisältää sanan pituutta vastaavan määrän tyhjiä viivoja. Käyttää lista() muuntaaksesi merkkijonon merkkiluetteloksi ja iteroidaksesi sen yli. Käyttää liitä() lisätäksesi merkin luetteloon, jos se ei ole jo olemassa.

Käyttää random.choice() valitaksesi satunnaisen merkin, jonka aiot esittää käyttäjälle tyhjien väliviivojen kanssa. Toista sanan merkit käyttämällä luetella pitääksesi kirjaa kunkin merkin indeksistä.

Kun löydät satunnaisesti valitun merkin, korvaa tyhjä viiva sillä. Käyttää liittyä seuraan() yhdistääksesi merkkiluettelon täydelliseksi merkkijonoksi ja palauttaaksesi sen.

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

Määritä funktio draw_hangman() joka ottaa mahdollisuuksien määrän parametrina. Tämä toiminto antaa kuvan riippuvasta miehestä. Kun mahdollisuuksien määrä pienenee jatkuvasti, vähenevät myös selviytymismahdollisuudet. Kun se on uupunut, hahmo on valmis ja peli päättyy.

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("| ")

Ilmoita funktio, start_hangman_game(), joka määrittää ohjelman päälogiikan. Hanki satunnainen sana soittamalla get_random_word_from_wordlist() toiminto ja saat järjestyksen näytettäväksi käyttäjälle käyttämällä get_some_ letters() toiminto.

Aseta mahdollisuuksien määrä seitsemään ja alusta muuttuja, löytyi, vääränä. Asetat tähän totta jos arvattu kirjain on sanassa.

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

Ilmoita silmukan, joka päättyy, kun käyttäjä arvaa sanan oikein tai kun mahdollisuudet loppuvat. Aloita peli näyttämällä järjestys, sanan kirjainten määrä ja jäljellä olevat mahdollisuudet. Pyydä käyttäjää arvaamaan kirjain ja vastaanottamaan se käyttämällä input() toiminto. Vahvista käyttäjän syöte tarkistamalla merkin pituus ja onko se aakkoset.

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

Jos syöte on kelvollinen, tarkista, onko sanassa merkki ja korvaa se aiemmin nähtyllä prosessilla ja päivitä löydetty arvo. Jos merkkiä ei ole, vähennä mahdollisuuksien määrää. Jos se on olemassa, käännä löydetty arvo takaisin alkuperäiseen arvoon false.

Jos tyhjiä viivoja ei ole jäljellä, näytä, että käyttäjä voitti sekä tehtyjen arvausten määrä, muuten näytä pyöveligrafiikka jäljellä olevien mahdollisuuksien määrän mukaan.

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()

Määritä funktio Hangman-pelin pelaamista varten. Jos käyttäjä syöttää kyllä, soita start_hangman_game() muussa tapauksessa lopeta peli sopivalla viestillä. Jos syöte on virheellinen, pyydä käyttäjää syöttämään uudelleen.

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")

Pyövelipelin tulos

Näet seuraavan tuloksen, jos voitat pelin:

Näet seuraavan tulosteen, jos häviät pelin:

Käytä Pythonia pelien rakentamiseen

Pythonilla voit rakentaa komentorivipelejä sekä graafisia pelejä. Mielenkiintoisia komentorivipelejä, joita voit rakentaa Pythonilla, ovat numeroiden arvauspeli, Magic 8 Ball -peli, Mad Libs, Rock/Paper/Scissors ja tekstiseikkailupeli.

Hauskoja graafisia pelejä, joita voit rakentaa pythonilla, ovat Tic Tac Toe, Maze, Snake, Pacman, Memory, Life. Parasta näissä peleissä on, että voit rakentaa ne vain Python Standard Libraryn avulla.