Utveckla ett Gissningsspel med Python
Du har antagligen redan listat ut vad den här artikeln handlar om. Dessutom är du förmodligen bekant med siffergissningsspel och söker efter ett sätt att bygga ett sådant spel med Python. Låt oss undersöka hur man skapar ett gissningsspel från grunden.
Gissningsspel – Enkel Grund
Spelet är okomplicerat. Användaren behöver gissa ett slumpmässigt genererat tal, beläget inom intervallet 1 till 100. Det är hela grundidén.
Verkar spelet alltså så enkelt?
Ja, i sin grundform är det faktiskt det.
Men, det finns en viktig detalj som vi måste tillhandahålla användaren för att lyckas med att gissa talet: ledtrådar. Vi ska ge användaren återkoppling som anger om det aktuella gissade talet är lägre eller högre än det korrekta talet. Detta hjälper användaren att navigera i rätt riktning.
Vi kan göra upplevelsen mer stimulerande genom att addera fler funktioner, exempelvis ett maxantal gissningar, justering av intervallet eller en timer.
Att konstruera det grundläggande spelet är det primära steget. Därefter kan vi lägga till extra funktioner som vi diskuterat. I detta avsnitt kommer vi alltså att skapa basversionen av spelet, och därefter utöka med nya funktioner.
Jag rekommenderar dig att försöka skapa spelet utan att kopiera koden direkt. Jag kommer först att redogöra för algoritmen. Detta kommer att underlätta din kodning eller göra att du snabbare kan förstå koden.
Algoritmens Logik
Se till att du förstår algoritmen innan du tar dig an kodningsfasen.
- Bestäm intervallet för siffrorna. Standard är 1-100, men detta kan ändras om så önskas.
- Generera ett slumpmässigt heltal inom det definierade intervallet (1-100).
- Starta spelet med ett välkomstmeddelande, exempelvis ”Gissa ett tal mellan X och Y”. Du kan anpassa meddelandet efter dina önskemål.
- Skapa en variabel som börjar på 0 för att räkna antalet gissningar som användaren gjort.
- Skapa en loop som fortsätter tills spelet avslutas.
- Be användaren att gissa ett tal.
- Om det gissade talet stämmer överens med det slumpmässigt genererade talet, gratulera användaren med ett lämpligt meddelande, till exempel ”-> Grattis! Du gissade rätt på 5 försök!”.
- Avsluta loopen efter att ha gratulerat användaren.
- Om det gissade talet är lägre än det slumpmässigt genererade, ge användaren ett meddelande som informerar om detta, exempelvis ”-> Ditt tal är lägre än det slumpmässiga talet”.
- Om det gissade talet är högre än det slumpmässigt genererade talet, ge användaren ett motsvarande meddelande, till exempel ”-> Ditt tal är högre än det slumpmässiga talet”.
- Öka antalet försök med 1 för varje gissning.
Efter att ha gått igenom algoritmen borde du ha en uppfattning om koden. Om du inte fått fram hela koden behöver du inte oroa dig. Se dock till att du förstår algoritmen ovan.
Nu är det dags att arbeta praktiskt med koden. Låt oss dyka in utan vidare.
Kodimplementering
Har du provat att skriva koden själv?
Om ja, och du är klar, bra jobbat! Kolla in koden nedan och försök förstå den för att bredda din kunskap.
Om du inte lyckades skriva koden, oroa dig inte. Titta på koden nedan och försök förstå den. Du kan justera och skriva om den på ditt eget sätt för att få en djupare förståelse.
Här kommer koden:
import random class NumberGuessingGame: def __init__(self): ## Definiera intervallet self.LOWER = 1 self.HIGHER = 100 ## Metod för att generera ett slumpmässigt tal def get_random_number(self): return random.randint(self.LOWER, self.HIGHER) ## Spelstartmetod def start(self): ## Generera det slumpmässiga talet random_number = self.get_random_number() print( f"Gissa det slumpmässigt genererade talet mellan {self.LOWER} och {self.HIGHER}") ## Spelets kärna chances = 0 while True: user_number = int(input("Skriv in ditt gissade tal: ")) if user_number == random_number: print( f"-> Grattis! Du gissade rätt på {chances + 1} försök{'!' if chances == 0 else '!'}") break elif user_number < random_number: print("-> Ditt tal är lägre än det slumpmässiga talet") else: print("-> Ditt tal är högre än det slumpmässiga talet") chances += 1 #Instansiera och starta spelet numberGuessingGame = NumberGuessingGame() numberGuessingGame.start()
Några saker att notera från koden:
- Intervallet definieras i metoden
__init__
vilket gör att det kan användas genom hela klassen. - Vi kan göra ändringar på en central plats som sedan slår igenom i hela applikationen.
- En separat metod för att generera slumptalet följer principen ”separera ansvarsområden”. Metoden är enkel nu, men kan byggas ut i framtiden.
- En klass används, vilket samlar all spelrelaterad kod på en plats och gör den enkelt återanvändbar i andra applikationer.
Alla punkter ovan syftar till att skriva ren kod som ska vara enkel att förstå även efter en längre tid.
Ett exempelutdata från spelet kan se ut så här:
$ python number_guessing_game.py Gissa det slumpmässigt genererade talet mellan 1 och 100 Skriv in ditt gissade tal: 50 -> Ditt tal är lägre än det slumpmässiga talet Skriv in ditt gissade tal: 75 -> Ditt tal är lägre än det slumpmässiga talet Skriv in ditt gissade tal: 90 -> Ditt tal är högre än det slumpmässiga talet Skriv in ditt gissade tal: 85 -> Ditt tal är högre än det slumpmässiga talet Skriv in ditt gissade tal: 80 -> Grattis! Du gissade rätt på 5 försök!
Förutsatt att du har Python installerat kan du prova koden.
Extra Funktion: Begränsa Antalet Försök
Vi kommer nu att lägga till en funktion som ger användaren ett maxantal försök att gissa talet. Om användaren inte lyckas inom detta antal försök, förlorar hen.
Hur implementerar vi detta?
Det är en enkel tvåstegsprocess. Låt oss kolla in stegen:
- Definiera det maximala antalet försök som användaren har.
- Kontrollera att användaren har försök kvar innan du begär inmatning, och avsluta spelet om hen har slut på försök.
Följande kod kompletterar den här funktionen:
- Lägg till följande kod i metoden
__init__
:
self.MAX_CHANCES = 10
- Lägg till följande villkor innan användaren gör nästa gissning:
if chances == self.MAX_CHANCES: print("-> Pust! Du förlorade spelet. Du har inga fler försök.")
Prova spelet nu utan att gissa rätt. Du bör se ett liknande resultat som nedan:
$ python number_guessing_game.py Gissa det slumpmässigt genererade talet mellan 1 och 100. Du har 10 försök. Skriv in ditt gissade tal: 1 -> Ditt tal är lägre än det slumpmässiga talet Skriv in ditt gissade tal: 2 -> Ditt tal är lägre än det slumpmässiga talet Skriv in ditt gissade tal: 3 -> Ditt tal är lägre än det slumpmässiga talet Skriv in ditt gissade tal: 4 -> Ditt tal är lägre än det slumpmässiga talet Skriv in ditt gissade tal: 5 -> Ditt tal är lägre än det slumpmässiga talet Skriv in ditt gissade tal: 6 -> Ditt tal är lägre än det slumpmässiga talet Skriv in ditt gissade tal: 7 -> Ditt tal är lägre än det slumpmässiga talet Skriv in ditt gissade tal: 8 -> Ditt tal är lägre än det slumpmässiga talet Skriv in ditt gissade tal: 9 -> Ditt tal är lägre än det slumpmässiga talet Skriv in ditt gissade tal: 10 -> Ditt tal är lägre än det slumpmässiga talet -> Pust! Du förlorade spelet. Du har inga fler försök.
Härligt! Vi har lagt till en extra funktion till spelet. Men vi kan göra mer. Du kan lägga till fler funktioner för att göra spelet mer engagerande. Nu är det din tur att göra det ännu bättre.
Slutsats
Vi har konstruerat ett enkelt gissningsspel. Nu är det din tur att fundera på spel som du spelade som barn. Försök att återskapa dem med hjälp av programmering och dela dem med dina vänner. Vi kan digitalisera många av våra barndomsspel.
Fortsätt att utforska Python-IDE och onlinekompilatorer för att köra Python-kod.
Lycka till med kodningen! 🙂
Om du gillar ordspel kan du läsa om hur du blir bättre på Wordle.
Gillade du den här artikeln? Dela den gärna vidare!