Denne enkle spillopplæringen vil hjelpe deg å øve på det grunnleggende i Python-programmering.
Å lage et "Rock, Paper, Scissors"-spill i Python er en fin måte å forbedre programmeringsferdighetene dine på. Du kan lage spillet med et enkelt Python-skript, og spille det på kommandolinjen.
Spillet starter med å spørre spilleren om deres valg: "stein", "papir" eller "saks". Deretter venter den på at de skriver inn svaret sitt. Du kan spille spillet mot en "datamaskin"-spiller, som automatisk velger sitt trekk.
Spillet kan også inneholde mange runder. Så selv om du taper første runde, kan du fortsatt prøve å vinne to av tre!
Hvordan sette opp spillet og spørre spilleren om trekk
Når spillet starter, bør Python-programmet be spilleren om å skrive inn enten "stein", "papir" eller "saks", og ta inn spillerens svar. For å sette opp et nytt spill, start med å lage en ny Python-fil med en .py-utvidelse.
Den fullstendige koden for denne opplæringen er tilgjengelig i et GitHub-depot.
- Opprett en ny fil kalt RockPaperScissors.py.
- Åpne den nye Python-filen ved å bruke et hvilket som helst tekstredigeringsprogram, for eksempel Notepad++ eller Visual Studio Code.
- Importer den tilfeldige modulen øverst i filen. Du vil bruke dette senere i spillet til å velge tilfeldig et trekk for datamaskinens tur.
import tilfeldig
- Presenter en melding til spilleren, og be dem om å skrive inn enten stein, papir eller saks.
brukervalg = input("Sten, papir eller saks? ").Nedre()
- Initialiser en matrise kalt "moveOptions" som lagrer en liste over tilgjengelige trekk som enten du eller datamaskinen kan spille.
moveOptions = ['stein', 'papir', 'saks']
- Når spilleren legger inn en inngang, valider den for å sikre at det er et av de tilgjengelige trekkene. Når spilleren har lagt inn et gyldig trekk, skriv ut en bekreftelsesmelding.
samtidig som (brukervalg ikke i flyttealternativer):
brukervalg = input("Ugyldig valg. Må være stein, papir eller saks: ").Nedre()
skrive ut("")
skrive ut(f "Du valgte {userChoice}.")
Hvordan ta svinger med datamaskinen og sammenligne bevegelser
Når du har lagt inn trekket ditt, vil datamaskinen ta sin tur ved å tilfeldig velge enten "stein", "papir" eller "saks". Spillet må da sammenligne ditt trekk med datamaskinens trekk for å finne ut hvem som vant.
- Bruk den tilfeldige modulen for å få datamaskinen til å velge tilfeldig fra listen over tilgjengelige trekk.
computerChoice = random.choice (moveOptions)
skrive ut(f"Datamaskinen valgte {computerChoice}.") - Du må sammenligne trekket ditt med datamaskinens trekk for å finne ut hvem som har vunnet. Du kan gjøre dette ved å opprette en ny ordbok. Denne ordboken inneholder hvert trekk (for eksempel "stein"), og hvilket trekk den vinner eller taper for (for eksempel "stein" slår "saks" og taper mot "papir").
trekk = {
'stein': { 'beats': 'saks', 'taperTil': 'papir' },
'saks': { 'beats': 'papir', 'taperTil': 'stein' },
'papir': { 'beats': 'stein', 'taperTil': 'saks' },
} -
Bruk Python if-setningen for å sjekke om trekket ditt og datamaskinens trekk resulterer i uavgjort. Ellers kan du bruke trekkordboken for å sammenligne spillerens trekk med datamaskinens trekk.
Som et eksempel, hvis du velger "rock", vil verdien av moves[userChoice]['beats'] være "saks". Hvis datamaskinens valg var "saks", betyr det at ditt trekk slo deres.if userChoice == computerChoice:
skrive ut(f"Både du og datamaskinen valgte {userChoice}. Det er uavgjort!")
ellers:
hvis (flytter[brukervalg]['beats'] == datamaskinvalg):
skrive ut(f"{userChoice} beats {computerChoice}. Du vinner!")
hvis (flytter[brukervalg]['taperTil'] == datamaskinvalg):
skrive ut(f"{userChoice} taper til {computerChoice}. Datamaskinen vinner!")
Hvordan holde poengsum mellom spilleren og datamaskinen mellom flere runder
Du kan også legge til flere runder, hvor du og datamaskinen tar tre runder hver.
Når du og datamaskinen har valgt enten stein, papir eller saks, vil spillet spørre deg igjen og holde styr på poengsummene dine. Poengsummen for spilleren øker basert på hvem som vant den aktuelle runden.
- Den gjeldende koden representerer en enkelt runde med svinger laget av både spilleren og datamaskinen. Legg til all gjeldende kode bortsett fra importsetningen i en ny turn()-funksjon. Du kan også endre utgangsmeldingene tilsvarende, for å si "Du vinner denne runden" i stedet for "Du vinner":
defsving():
brukervalg = input("Sten, papir eller saks? ").Nedre()moveOptions = ['stein', 'papir', 'saks']
samtidig som (brukervalg ikke i flyttealternativer):
brukervalg = input("Ugyldig valg. Må være stein, papir eller saks: ").Nedre()skrive ut("")
skrive ut(f "Du valgte {userChoice}.")computerChoice = random.choice (moveOptions)
skrive ut(f"Datamaskinen valgte {computerChoice}.")trekk = {
'stein': { 'beats': 'saks', 'taperTil': 'papir' },
'saks': { 'beats': 'papir', 'taperTil': 'stein' },
'papir': { 'beats': 'stein', 'taperTil': 'saks' },
}if userChoice == computerChoice:
skrive ut(f"Både du og datamaskinen valgte {userChoice}. Det er uavgjort!")
ellers:
hvis (flytter[brukervalg]['beats'] == datamaskinvalg):
skrive ut(f"{userChoice} beats {computerChoice}. Du vinner denne runden!")hvis (flytter[brukervalg]['taperTil'] == datamaskinvalg):
skrive ut(f"{userChoice} taper til {computerChoice}. Datamaskinen vinner!") - Spilleren og datamaskinen får ta tre omganger hver. Legg til en global variabel kalt "svinger" øverst i filen.
svinger = 3
- Etter funksjonen turn() bruk en Python for loop å gjenta runden tre ganger. Skriv ut rundnummeret i begynnelsen av hver runde. Ring turn()-funksjonen for å be spilleren og datamaskinen om å gjøre trekk for den runden.
for i innen rekkevidde (svinger):
skrive ut("")
skrive ut(f" runde {i+1}: ")
sving() - For å holde styr på hvem som vant hver runde, legg til en poengvariabel for hver spiller, øverst i filen. Du vil tilordne verdier til disse variablene i turn()-funksjonen, så sørg for å bruke dem som globale variabler.
datamaskinscore = 0
spillerscore = 0defsving():
global datamaskinScore, playerScore - Inne i turn()-funksjonen, når både spilleren og datamaskinen har gjort sitt trekk, legg til et poeng til vinnerens poengsum. Endre if-setningen for å øke verdien til enten "playerScore"- eller "computerScore"-variabelen.
hvis (flytter[brukervalg]['beats'] == datamaskinvalg):
skrive ut(f"{userChoice} beats {computerChoice}. Du vinner denne runden!")
spillerscore += 1hvis (flytter[brukervalg]['taperTil'] == datamaskinvalg):
skrive ut(f"{userChoice} taper til {computerChoice}. Datamaskinen vinner!")
datamaskinScore += 1 - På slutten av turn()-funksjonen, skriv ut en oppdatering av den totale poengsummen for hver spiller.
# Skriv ut en oppdatering om totalpoengsummen etter runden
skrive ut("")
skrive ut(f"POORTAVLE | Spillerens poengsum: {playerScore} | Datamaskinens poengsum: {computerScore}") - Helt på slutten av spillet, og etter for-løkken som gjentar spillerens og datamaskinens svinger, skriv ut den endelige vinneren.
skrive ut("")
if (datamaskinScore > playerScore):
skrive ut(f"Datamaskinen vinner med {computerScore} poeng!")
elif (playerScore > computerScore):
skrive ut(f"Du vinner med {playerScore} poeng!")
ellers:
skrive ut(f "Det er uavgjort! Dere vinner begge med {playerScore} poeng!")
Hvordan kjøre spillet
For å spille spillet, kjør Python-skriptet ved hjelp av en terminal eller ledetekst. Skriv inn ditt trekk og vent til datamaskinen gjør sitt. Når du har fullført tre runder, vil programmet vise vinneren.
- Åpne en ledetekst eller terminal, og naviger til mappen der du lagrer Python-filen.
- Bruk python-kommandoen for å kjøre skriptet:
pythonStein saks papir.py
- Spill spillet ved å skrive inn enten 'stein', 'papir' eller 'saks'.
Lær Python ved å lage spill
Å lage enkle spill som et "Rock, Paper, Scissors"-spill er en fin måte å bli mer kjent med programmeringskonsepter på. Det er så mange andre morsomme spill du kan lage med Python, for eksempel et tekstbasert eventyrspill.