Du har sannsynligvis allerede forstått hva denne artikkelen handler om. Og du er sikkert kjent med tallgjettespill og ønsker å lære hvordan du kan lage et slikt spill ved hjelp av Python.
La oss dykke ned i hvordan vi lager et tallgjettespill helt fra begynnelsen.
Tallgjettespill
Spillet er ganske enkelt. Brukeren skal gjette et tilfeldig generert tall som ligger mellom 1 og 100. Det er alt.
Er spillet virkelig så enkelt?
Ja, det er det.
Men vi må gi brukerne noen ledetråder for å hjelpe dem å gjette tallet. Disse ledetrådene skal fortelle om tallet som gjettes er for lavt eller for høyt i forhold til det korrekte tallet. Dette hjelper spillerne med å vite hvilken retning de må gå.
Vi kan gjøre det mer spennende ved å legge til ekstra funksjoner som et maksimalt antall forsøk, utvide tallområdet, eller legge til en tidsbegrensning.
Det er essensielt å først lage et grunnleggende fungerende spill. Deretter kan vi legge til flere funksjoner. Derfor vil vi først fokusere på å lage den grunnleggende versjonen av spillet, og deretter gå videre til å implementere nye funksjoner.
Jeg vil oppfordre deg til å prøve å lage spillet uten å bare kopiere koden. Derfor vil jeg først forklare algoritmen. Dette vil hjelpe deg med å kode selv eller forstå koden raskere.
La oss se nærmere på algoritmen for å lage tallgjettespillet.
Algoritme
Det er viktig å forstå algoritmen før du starter kodingen.
- Definer tallområdet. Standard er 1 til 100, men du kan endre dette etter eget ønske.
- Generer et tilfeldig heltall innenfor dette området (1-100).
- Start spillet ved å vise en melding til brukeren som forteller at de skal gjette et tall mellom X og Y. Du kan tilpasse denne meldingen.
- Opprett en variabel som skal holde styr på antall forsøk brukeren har gjort for å gjette tallet riktig. Start med 0.
- Lag en evigvarende løkke:
- Be brukeren om å gjette tallet.
- Hvis brukerens gjett er lik det tilfeldige tallet, gratuler brukeren med en passende melding. For eksempel: «-> Fantastisk! Du gjettet riktig på 5 forsøk!».
- Bryt ut av løkken etter at brukeren har gjettet riktig.
- Hvis brukerens gjett er lavere enn det tilfeldige tallet, gi en melding som sier «-> Tallet ditt er for lavt», eller en lignende melding.
- Hvis brukerens gjett er høyere enn det tilfeldige tallet, gi en melding som sier «-> Tallet ditt er for høyt», eller en lignende melding.
- Øk antall forsøk brukeren har gjort med 1.
Etter å ha sett på algoritmen, har du kanskje allerede en idé om koden. Ikke bekymre deg hvis du ikke har hele koden klar. Det viktigste er at du forstår algoritmen.
Nå er det på tide å kode. La oss hoppe rett inn i det.
Kode
Har du prøvd å skrive koden?
Hvis du har prøvd, og kanskje til og med fullført den, er det fantastisk. Sjekk koden nedenfor og prøv å forstå den. Det vil gi deg nye perspektiver og øke kunnskapen din.
Ikke bekymre deg om du ikke skrev koden selv. Se på koden under og prøv å forstå den. Prøv å finjustere den og skrive den på din egen måte for bedre forståelse.
La oss se på koden.
import random
class NumberGuessingGame:
def __init__(self):
## definerer tallområdet
self.LOWER = 1
self.HIGHER = 100
## Metode for å generere det tilfeldige tallet
def get_random_number(self):
return random.randint(self.LOWER, self.HIGHER)
## Metode for å starte spillet
def start(self):
## Genererer det tilfeldige tallet
random_number = self.get_random_number()
print(
f"Gjett det tilfeldige genererte tallet mellom {self.LOWER} og {self.HIGHER}")
## Selve spillet
chances = 0
while True:
user_number = int(input("Skriv inn tallet du gjetter: "))
if user_number == random_number:
print(
f"-> Hurra! Du klarte det på {chances + 1} forsøk{'!' if chances == 0 else '!'}")
break
elif user_number < random_number:
print("-> Tallet ditt er for lavt")
else:
print("-> Tallet ditt er for høyt")
chances += 1
## Oppretter en instans av spillet og starter det
numberGuessingGame = NumberGuessingGame()
numberGuessingGame.start()
Her er noen punkter du kan utlede fra koden:
- Tallområdet er definert inne i `__init__`-metoden slik at det er tilgjengelig i alle klassens metoder.
- Dette gjør at vi enkelt kan endre området på ett sted og alle endringene vil reflekteres i hele spillet.
- Det er en separat metode for å generere det tilfeldige tallet, som følger prinsippet om «separasjon av ansvar». Selv om denne metoden er kort akkurat nå, kan den utvikles videre i fremtiden.
- Til slutt, vi har brukt klasser slik at alle metoder som er relatert til spillet er samlet. Dette gjør koden mer ryddig og gjenbrukbar i andre applikasjoner.
Alle de overnevnte punktene handler om å skrive ren og oversiktlig kode. Vi bør alltid strebe etter å skrive kode som er lett å forstå, selv om det har gått lang tid siden vi skrev den.
Et eksempel på spillet kan se slik ut:
$ python number_guessing_game.py
Gjett det tilfeldige genererte tallet mellom 1 og 100
Skriv inn tallet du gjetter: 50
-> Tallet ditt er for lavt
Skriv inn tallet du gjetter: 75
-> Tallet ditt er for lavt
Skriv inn tallet du gjetter: 90
-> Tallet ditt er for høyt
Skriv inn tallet du gjetter: 85
-> Tallet ditt er for høyt
Skriv inn tallet du gjetter: 80
-> Hurra! Du klarte det på 5 forsøk!
Jeg antar at du har Python installert for å prøve koden over.
Ekstra Funksjon
La oss legge til et maksimalt antall forsøk en bruker får for å gjette tallet. Hvis brukeren ikke gjettet tallet innenfor det maksimale antall forsøk, taper brukeren spillet.
Hvordan legger vi dette til?
Det er en enkel to-trinns prosess. La oss se på trinnene.
- Definer maksimalt antall forsøk som brukeren får til å gjette tallet.
- Sjekk om brukeren har flere forsøk igjen før du ber om nytt input. Og avslutt spillet hvis brukeren ikke har flere forsøk igjen.
Følgende kodeendringer vil implementere denne funksjonen.
- Legg til følgende kode i `__init__`-metoden.
self.MAX_CHANCES = 10
- Legg til følgende betingelse før brukeren legger inn neste gjett.
if chances == self.MAX_CHANCES:
print("-> Beklager! Du tapte spillet. Du er tom for forsøk")
Prøv nå spillet uten å gjette riktig tall. Du skal se en lignende utskrift som følger:
$ python number_guessing_game.py
Gjett det tilfeldige genererte tallet mellom 1 og 100. Du har 10 forsøk til å gjette.
Skriv inn tallet du gjetter: 1
-> Tallet ditt er for lavt
Skriv inn tallet du gjetter: 2
-> Tallet ditt er for lavt
Skriv inn tallet du gjetter: 3
-> Tallet ditt er for lavt
Skriv inn tallet du gjetter: 4
-> Tallet ditt er for lavt
Skriv inn tallet du gjetter: 5
-> Tallet ditt er for lavt
Skriv inn tallet du gjetter: 6
-> Tallet ditt er for lavt
Skriv inn tallet du gjetter: 7
-> Tallet ditt er for lavt
Skriv inn tallet du gjetter: 8
-> Tallet ditt er for lavt
Skriv inn tallet du gjetter: 9
-> Tallet ditt er for lavt
Skriv inn tallet du gjetter: 10
-> Tallet ditt er for lavt
-> Beklager! Du tapte spillet. Du er tom for forsøk
Hurra! Vi har lagt til en ny funksjon til spillet vårt. Dette er imidlertid ikke slutten. Du kan legge til flere funksjoner for å gjøre det mer engasjerende for brukerne. Det er din tur nå. Fortsett og gjør det enda bedre :).
Konklusjon
Vi har laget et enkelt gjettespill. Nå er det din tur til å tenke på spill du spilte som barn. Prøv å lage dem med programmeringsspråk og del dem med venner. Mange av våre barndomsspill kan digitaliseres.
Utforsk gjerne forskjellige Python IDE og online kompilatorer for å kjøre Python-kode.
Lykke til med koding 🙂
Hvis du er glad i ordspill, her er en artikkel om hvordan du kan bli bedre i Wordle.
Lik artikkelen? Del den gjerne med andre!