Simple tekstspil, du kan spille på kommandolinjen, er fantastiske begynderprojekter.

Er du i humør til at spille et spil, som du selv har skrevet? Nå, du er på det rigtige sted. Hangman er et populært ordgættespil, og du kan lave din egen version med minimal indsats.

Dette spil er en perfekt entertainer, kendt fra populære tv-spilserier og serier som Wheel of Fortune, Letterbox og Party Time. Og Python er et praktisk sprog at bruge til at bygge en Hangman-klon.

Sådan spiller man hangman-spillet

Hangman er et velkendt spil, hvor en spiller tænker på et ord, og den anden spiller forsøger at gætte det ved at foreslå bogstaver med et fast antal gæt. En spiller (i dette tilfælde programmet) præsenterer en sekvens af tankestreger, der repræsenterer hvert bogstav i ordet, sammen med et tegn som udgangspunkt. Den anden spiller (eller bruger) gætter karaktererne i ordet, én efter én.

Hvis det bogstav, de gætter på, er i målordet, udfylder programmet bindestregen med tegnet. Ellers mister spilleren én chance, og programmet tegner et element af en pindfigur som en optælling. I alt syv chancer, hvis brugeren gætter ordet rigtigt, vinder de spillet. Hvis ikke, fuldender programmet sin tegning af en pindemand.

Du kan oprette en liste over dine yndlingsord eller downloade et like Mieliestronks liste over mere end 58.000 engelske ord. Du kan også udforske og bygge andre sjove tekstbaserede spil som f.eks interaktivt quizspil eller a tekstbaseret eventyrspil i Python.

Sådan bygger man hangman-spillet

Kildekoden til dette Hangman-spil, sammen med ordlistefilen, er til stede i dette GitHub-depot og er gratis at bruge.

Importer tilfældig modul og definere en funktion, get_random_word_from_wordlist(), for at vælge et tilfældigt ord fra filen. Tekstfilen kan indeholde almindelige navneord eller navne på steder, dyr, film og mere baseret på din smag. Definer en liste ved hjælp af de rektangulære parenteser([]).

Brug med sætning for at åbne filen og videregive tilstanden som 'r' angiver skrivebeskyttet tilstand. Dette sørger automatisk for at lukke filen i slutningen af ​​blokken selv i tilfælde af fejl. Hvis du ser hangman_wordlist.txt fil, vil du bemærke, at der er et ord til stede på hver linje, så filen adskiller hvert ord med et linjeskifttegn.

Send escape-karakteren til en ny linje (\n) til dele() funktion til at gemme hvert ord i den liste, du definerede tidligere. Brug random.choice() for at returnere et tilfældigt ord fra listen.

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

Definer derefter en funktion, få_nogle_bogstaver(), der tager det tilfældigt valgte ord som en parameter. Denne funktion vil vise en sekvens af tomme bindestreger (_) og nogle breve til brugeren.

Definer tom liste bogstaver for at gemme alle de tegn, der findes i ordet. Brug Midlertidig variabel for at gemme en streng, der indeholder antallet af tomme bindestreger svarende til længden af ​​ordet. Brug liste() at konvertere strengen til en liste med tegn og gentage den. Brug Tilføj() for at tilføje tegnet til listen, hvis det ikke allerede er til stede.

Brug random.choice() at vælge et tilfældigt tegn, som du vil præsentere for brugeren sammen med de tomme bindestreger. Gentag over tegnene i ordet ved hjælp af opregne for at holde styr på indekset for hvert tegn.

Når du finder det tilfældigt valgte tegn, skal du erstatte den tomme tankestreg med det. Brug tilslutte() for at samle listen over tegn til en komplet streng og returnere den.

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

Definer en funktion draw_hangman() der tager antallet af chancer som en parameter. Denne funktion giver en figur af den hængende mand. Da antallet af chancer bliver ved med at falde, falder chancerne for overlevelse også. Når du er udmattet, er figuren komplet, og spillet slutter.

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

Erklære en funktion, start_hangman_game(), der definerer programmets hovedlogik. Få et tilfældigt ord ved at kalde get_random_word_from_wordlist() funktion og få sekvensen til at vise til brugeren ved hjælp af få_nogle_bogstaver() fungere.

Indstil antallet af chancer til syv og initialiser en variabel, fundet, som falsk. Du indstiller dette til rigtigt hvis det gættede bogstav er til stede i ordet.

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

Erklær en løkke, der afsluttes, når brugeren gætter ordet korrekt eller løber tør for chancer. Begynd spillet ved at vise rækkefølgen, antallet af bogstaver i ordet og de resterende chancer. Bed brugeren om at gætte et bogstav og modtage det ved hjælp af input() fungere. Valider brugerens input ved at kontrollere længden af ​​tegnet, og om det er et alfabet.

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

Hvis inputtet er gyldigt, skal du kontrollere, om tegnet er til stede i ordet, og erstatte det ved at bruge den proces, der er set tidligere, og opdatere værdien for fundet. Hvis karakteren ikke er til stede, reduceres antallet af chancer. Hvis den er til stede, skal du vende værdien for fundet tilbage til den oprindelige værdi false.

Hvis der ikke er tomme bindestreger tilbage, skal du vise, at brugeren vandt sammen med antallet af gæt, der er taget, ellers skal du vise hangman-grafikken i henhold til antallet af tilbageværende chancer.

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

Definer en funktion til at spille Hangman-spillet. Hvis brugeren indtaster ja, ring til start_hangman_game() funktion ellers afslutte spillet med den relevante besked. I tilfælde af ugyldig input, bed brugeren om at indtaste igen.

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

Udgangen af ​​Hangman Game

Du vil se følgende output, hvis du vinder spillet:

Du vil se følgende output, hvis du taber spillet:

Brug Python til at bygge spil

Du kan bruge Python til at bygge kommandolinjespil såvel som grafiske spil. Nogle interessante kommandolinjespil, du kan bygge ved hjælp af Python, inkluderer talgættespillet, Magic 8 Ball-spillet, Mad Libs, Rock/Paper/Scissors og et teksteventyrspil.

Nogle sjove grafiske spil, du måske bygger med python, inkluderer Tic Tac Toe, Maze, Snake, Pacman, Memory, Life. Det bedste ved disse spil er, at du kan bygge dem med kun Python Standard Library.