Tämä yksinkertainen pelin opetusohjelma auttaa sinua harjoittelemaan Python-ohjelmoinnin perusteita.

"Rock, Paper, Scissors" -pelin luominen Pythonissa on loistava tapa parantaa ohjelmointitaitojasi. Voit luoda pelin yhdellä Python-skriptillä ja pelata sitä komentorivillä.

Peli alkaa kysymällä pelaajalta valintaa: "kivi", "paperi" tai "sakset". Sitten se odottaa heidän kirjoittavan vastauksensa. Voit pelata peliä "tietokone"-pelaajaa vastaan, joka valitsee automaattisesti siirtonsa.

Peli voi sisältää myös useita kierroksia. Joten vaikka häviät ensimmäisen kierroksen, voit silti yrittää voittaa kaksi kolmesta!

Pelin perustaminen ja pelaajan pyytäminen liikkeelle

Kun peli alkaa, Python-ohjelman tulee pyytää pelaajaa syöttämään joko "rock", "paper" tai "scissors" ja ottamaan vastaan ​​pelaajan vastaus. Jos haluat määrittää uuden pelin, aloita luomalla uusi Python-tiedosto, jonka tunniste on .py.

Tämän opetusohjelman koko koodi on saatavilla osoitteessa GitHub-arkisto.

  1. Luo uusi tiedosto nimeltä RockPaperScissors.py.
  2. Avaa uusi Python-tiedosto millä tahansa tekstieditorilla, kuten Notepad++ tai Visual Studio Code.
  3. Tuo satunnainen moduuli tiedoston yläosassa. Käytät tätä myöhemmin pelissä valitaksesi satunnaisesti liikkeen tietokoneen vuorolle.
    tuonti satunnainen
  4. Esitä pelaajalle viesti ja pyydä häntä syöttämään joko kiviä, paperia tai saksia.
    userChoice = input("Kivi, paperi vai sakset? ").alempi()
  5. Alusta "moveOptions"-niminen taulukko, joka tallentaa luettelon käytettävissä olevista liikkeistä, joita joko sinä tai tietokone voit pelata.
    moveOptions = ['rock', 'paperi', 'sakset']
  6. Kun pelaaja syöttää syötteen, vahvista se varmistaaksesi, että se on yksi käytettävissä olevista siirroista. Kun pelaaja on tehnyt kelvollisen siirron, tulosta vahvistusviesti.
    sillä aikaa (userChoice ei sisään MoveOptions):
    userChoice = input("Virheellinen valinta. Täytyy olla kiveä, paperia tai saksia: ").alempi()

    Tulosta("")
    Tulosta(f"Sinä valitsit {userChoice}.")

Vuorotellen tietokoneen kanssa ja liikkeiden vertailu

Kun olet tehnyt siirtosi, tietokone ottaa vuoronsa valitsemalla satunnaisesti joko "kivi", "paperi" tai "sakset". Pelin on sitten verrattava siirtoasi tietokoneen siirtoon määrittääkseen, kuka voitti.

  1. Käytä satunnaista moduulia saadaksesi tietokoneen valitsemaan satunnaisesti käytettävissä olevien liikkeiden luettelosta.
    computerChoice = random.choice (moveOptions)
    Tulosta(f"Tietokone valitsi {computerChoice}.")
  2. Sinun on verrattava siirtoasi tietokoneen siirtoon määrittääksesi, kuka voitti. Voit tehdä tämän luomalla uuden sanakirjan. Tämä sanakirja sisältää jokaisen liikkeen (esimerkiksi "kivi") ja sen, minkä liikkeen se voittaa tai häviää (esimerkiksi "kivi" voittaa "sakset" ja häviää "paperille").
    liikkeet = {
    'rock': { 'beat': 'sakset', 'losesTo': 'paperi' },
    'sakset': { 'beat': 'paperi', 'losesTo': 'rock' },
    'paperi': { 'beat': 'rock', 'losesTo': 'sakset' },
    }
  3. Käytä Python if -lausetta tarkistaaksesi, johtavatko siirtosi ja tietokoneen siirto tasatulokseen. Muussa tapauksessa käytä siirtosanakirjaa vertaamaan pelaajan siirtoa tietokoneen siirtoon.
    if userChoice == computerChoice:
    Tulosta(f"Sekä sinä että tietokone valitsit {userChoice}. Se on tasapeli!")
    muu:
    jos (liikkuu[userChoice]['beat'] == computerChoice):
    Tulosta(f"{userChoice} lyö {computerChoice}. Sinä voitat!")

    jos (liikkuu[userChoice]['losesTo'] == computerChoice):
    Tulosta(f"{userChoice} häviää {computerChoice}. Tietokone voittaa!")
    Esimerkiksi, jos valitsit "rock", liikkeen [userChoice]['beats'] arvo olisi "sakset". Jos tietokoneen valinta oli "sakset", se tarkoittaa, että siirtosi päihitti heidän.

Kuinka pitää pisteet pelaajan ja tietokoneen välillä useiden kierrosten välillä

Voit myös lisätä lisäkierroksia, joissa sinä ja tietokone käännätte kumpikin kolme kierrosta.

Kun olet valinnut tietokoneen kanssa joko kiven, paperin tai sakset, peli kysyy sinulta uudelleen ja pitää kirjaa tuloksistasi. Pelaajan pisteet kasvavat sen mukaan, kuka voitti kyseisen kierroksen.

  1. Nykyinen koodi edustaa yhtä kierrosta, jotka pelaaja ja tietokone tekevät. Lisää kaikki nykyinen koodi paitsi tuontilauseke uuteen turn()-funktioon. Voit myös muuttaa tulosviestejä vastaavasti sanoaksesi "Voit voitat tämän kierroksen" "Sinä voitat" sijaan:
    defvuoro():
    userChoice = input("Kivi, paperi vai sakset? ").alempi()

    moveOptions = ['rock', 'paperi', 'sakset']

    sillä aikaa (userChoice ei sisään MoveOptions):
    userChoice = input("Virheellinen valinta. Täytyy olla kiveä, paperia tai saksia: ").alempi()

    Tulosta("")
    Tulosta(f"Sinä valitsit {userChoice}.")

    computerChoice = random.choice (moveOptions)
    Tulosta(f"Tietokone valitsi {computerChoice}.")

    liikkeet = {
    'rock': { 'beat': 'sakset', 'losesTo': 'paperi' },
    'sakset': { 'beat': 'paperi', 'losesTo': 'rock' },
    'paperi': { 'beat': 'rock', 'losesTo': 'sakset' },
    }

    if userChoice == computerChoice:
    Tulosta(f"Sekä sinä että tietokone valitsit {userChoice}. Se on tasapeli!")
    muu:
    jos (liikkuu[userChoice]['beat'] == computerChoice):
    Tulosta(f"{userChoice} lyö {computerChoice}. Voitat tämän kierroksen!")

    jos (liikkuu[userChoice]['losesTo'] == computerChoice):
    Tulosta(f"{userChoice} häviää {computerChoice}. Tietokone voittaa!")

  2. Soitin ja tietokone saavat kukin kolme kierrosta. Lisää globaali muuttuja nimeltä "turns" tiedoston yläosaan.
    kierrokset = 3
  3. turn()-funktion jälkeen käytä Python for silmukkaa toistaa kierros kolme kertaa. Tulosta jokaisen kierroksen alussa kierroksen numero. Kutsu turn()-funktio ja pyydä pelaajaa ja tietokonetta tekemään liikkeensä tälle kierrokselle.
    i kantaman sisällä (käännös):
    Tulosta("")
    Tulosta(f" Pyöreä {i+1}: ")
    vuoro()
  4. Voit seurata kunkin kierroksen voittajia lisäämällä jokaiselle pelaajalle pistemuuttujan tiedoston yläosaan. Annat arvot näille muuttujille turn()-funktion sisällä, joten muista käyttää niitä globaaleina muuttujina.
    ComputerScore = 0
    pelaajapisteet = 0

    defvuoro():
    maailmanlaajuisesti computerScore, playerScore

  5. Kun sekä pelaaja että tietokone ovat tehneet siirtonsa turn()-funktion sisällä, voit lisätä pisteen voittajan pisteeseen. Muokkaa if-lausetta kasvattaaksesi joko "playerScore"- tai "computerScore"-muuttujan arvoa.
    jos (liikkuu[userChoice]['beat'] == computerChoice):
    Tulosta(f"{userChoice} lyö {computerChoice}. Voitat tämän kierroksen!")
    pelaajapisteet += 1

    jos (liikkuu[userChoice]['losesTo'] == computerChoice):
    Tulosta(f"{userChoice} häviää {computerChoice}. Tietokone voittaa!")
    ComputerScore += 1

  6. Tulosta turn()-funktion lopussa päivitys kunkin pelaajan kokonaispisteisiin.
    # Tulosta päivitys kokonaistuloksista kierroksen jälkeen
    Tulosta("")
    Tulosta(f"SCOREBOARD | Pelaajan tulos: {playerScore} | Tietokoneen pisteet: {computerScore}")
  7. Pelin lopussa ja for-silmukan jälkeen, joka toistaa pelaajan ja tietokoneen vuoroja, tulosta lopullinen voittaja.
    Tulosta("")

    jos (computerScore > playerScore):
    Tulosta(f"Tietokone voittaa {computerScore} pisteitä!")
    elif (playerScore > computerScore):
    Tulosta(f"Sinä voitat kanssa {playerScore} pisteitä!")
    muu:
    Tulosta(f"Se on tasapeli! Voitatte molemmat {playerScore} pisteitä!")

Pelin ajaminen

Voit pelata peliä suorittamalla Python-komentosarjan terminaalin tai komentokehotteen avulla. Tee siirtosi ja odota, että tietokone tekee omansa. Kun olet suorittanut kolme kierrosta, ohjelma näyttää voittajan.

  1. Avaa komentokehote tai pääte ja siirry kansioon, johon tallennat Python-tiedoston.
  2. Käytä python-komentoa komentosarjan suorittamiseen:
    pythonKivi paperi sakset.py
  3. Pelaa peliä kirjoittamalla joko "kivi", "paperi" tai "sakset".

Opi Python luomalla pelejä

Yksinkertaisten pelien, kuten "Rock, Paper, Scissors" -pelin luominen on loistava tapa tutustua ohjelmointikonsepteihin. Pythonilla voit tehdä monia muita hauskoja pelejä, kuten tekstipohjaisen seikkailupelin.