Eenvoudige tekstspellen die u op de opdrachtregel kunt spelen, zijn geweldige projecten voor beginners.
Ben je in de stemming om een game te spelen die je zelf hebt geschreven? Nou, je bent op de juiste plek. Galgje is een populair woordraadspel en je kunt met minimale inspanning je eigen versie maken.
Deze game is een perfecte entertainer, bekend van populaire tv-spelshows en series zoals Wheel of Fortune, Letterbox en Party Time. En Python is een handige taal om een Hangman-kloon te bouwen.
Hoe het Hangman-spel te spelen
Galgje is een bekend spel waarbij de ene speler een woord bedenkt en de andere speler het probeert te raden door letters voor te stellen met een vast aantal gissingen. Eén speler (in dit geval het programma) presenteert een reeks streepjes die elke letter van het woord vertegenwoordigen, samen met een teken als startpunt. De andere speler (of gebruiker) raadt één voor één de karakters die in het woord voorkomen.
Als de letter die ze raden in het doelwoord staat, vult het programma het streepje met het teken. Anders verliest de speler één kans en tekent het programma een element van een stokfiguur als een telling. In totaal zeven kansen, als de gebruiker het woord correct raadt, winnen ze het spel. Zo niet, dan voltooit het programma het tekenen van een poppetje.
U kunt een lijst met uw favoriete woorden maken of er een downloaden zoals Mieliestronks lijst met meer dan 58.000 Engelse woorden. Je kunt ook andere leuke op tekst gebaseerde spellen verkennen en bouwen, zoals een interactief quizspel of een op tekst gebaseerd avonturenspel in Python.
Hoe het Hangman-spel te bouwen
Hierin is de broncode van dit Hangman-spel, samen met het woordenlijstbestand, aanwezig GitHub-opslagplaats en is gratis te gebruiken.
Importeer de willekeurig module en definieer een functie, get_random_word_from_wordlist(), om een willekeurig woord uit het bestand te kiezen. Het tekstbestand kan zelfstandige naamwoorden of namen van plaatsen, dieren, films en meer bevatten op basis van uw voorkeur. Definieer een lijst met behulp van de rechthoekige haakjes ([]).
Gebruik de met instructie om het bestand te openen en de modus door te geven als 'R' geeft alleen-lezen modus aan. Dit zorgt er automatisch voor dat het bestand aan het einde van het blok wordt gesloten, zelfs in geval van fouten. Als je de beul_woordenlijst.txt bestand, zult u merken dat er op elke regel één woord aanwezig is, dus het bestand scheidt elk woord met een teken voor een nieuwe regel.
Geef het escape-teken door voor een nieuwe regel (\N) naar de splitsen() functie om elk woord op te slaan in de lijst die u eerder hebt gedefinieerd. Gebruik willekeurige.keuze() om een willekeurig woord uit de lijst te retourneren.
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
Definieer vervolgens een functie, get_some_letters(), dat het willekeurig geselecteerde woord als parameter neemt. Deze functie toont een reeks lege streepjes (_) en enkele brieven aan de gebruiker.
Definieer lege lijst brieven om alle tekens in het woord op te slaan. Gebruik de temp variabele om een tekenreeks op te slaan die het aantal lege streepjes bevat dat gelijk is aan de lengte van het woord. Gebruik lijst() om de tekenreeks om te zetten in een lijst met tekens en deze te herhalen. Gebruik toevoegen() om het personage aan de lijst toe te voegen als het nog niet aanwezig is.
Gebruik willekeurige.keuze() om een willekeurig teken te kiezen dat u samen met de lege streepjes aan de gebruiker gaat presenteren. Herhaal de karakters van het woord met behulp van opsommen om de index van elk teken bij te houden.
Wanneer u het willekeurig geselecteerde teken vindt, vervangt u het lege streepje ermee. Gebruik meedoen() om de lijst met tekens te verenigen tot een volledige reeks en deze te retourneren.
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
Definieer een functie teken_beul() dat neemt het aantal kansen als parameter. Deze functie geeft een figuur van de hangende man. Naarmate het aantal kansen steeds kleiner wordt, nemen ook de overlevingskansen af. Als hij uitgeput is, is de figuur compleet en is het spel afgelopen.
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("| ")
Declareer een functie, start_hangman_game(), die de hoofdlogica van het programma definieert. Krijg een willekeurig woord door te bellen naar de get_random_word_from_wordlist() functie en verkrijg de reeks die aan de gebruiker moet worden weergegeven met behulp van de get_some_letters() functie.
Stel het aantal kansen in op zeven en initialiseer een variabele, gevonden, als vals. Je stelt dit in op WAAR als de geraden letter aanwezig is in het woord.
defstart_hangman_game():
word = get_random_word_from_wordlist()
temp = get_some_letters(word)
chances = 7
found = False
Declareer een lus die eindigt wanneer de gebruiker het woord correct raadt of geen kansen meer heeft. Begin het spel door de reeks, het aantal letters in het woord en de resterende kansen weer te geven. Vraag de gebruiker om een letter te raden en deze te ontvangen met behulp van de invoer() functie. Valideer de gebruikersinvoer door de lengte van het teken te controleren en of het een alfabet is.
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
Als de invoer geldig is, controleer dan of het teken aanwezig is in het woord en vervang het met behulp van het eerder geziene proces en werk de waarde van gevonden bij. Als het personage niet aanwezig is, verminder dan het aantal kansen. Zet, indien aanwezig, de waarde van gevonden terug naar de beginwaarde false.
Als er geen lege streepjes meer zijn, laat dan zien dat de gebruiker heeft gewonnen samen met het aantal gedane gissingen, anders laat u de afbeelding van de beul zien op basis van het aantal resterende kansen.
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()
Definieer een functie om het spel Hangman te spelen. Als de gebruiker ja invoert, bel dan de start_hangman_game() sluit anders het spel af met het juiste bericht. Vraag de gebruiker in geval van ongeldige invoer om opnieuw in te voeren.
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")
De output van het Hangman-spel
Je ziet de volgende uitvoer als je het spel wint:
Je ziet de volgende uitvoer als je het spel verliest:
Gebruik Python om spellen te bouwen
U kunt Python gebruiken om zowel opdrachtregelspellen als grafische spellen te bouwen. Enkele interessante opdrachtregelspellen die je met Python kunt bouwen, zijn onder meer het nummer raadspel, het Magic 8 Ball-spel, Mad Libs, Rock / Paper / Scissors en een tekst-avonturenspel.
Enkele leuke grafische spellen die je met python zou kunnen bouwen, zijn Tic Tac Toe, Maze, Snake, Pacman, Memory, Life. Het beste van deze spellen is dat je ze kunt bouwen met alleen de Python Standard Library.