Whack a mole!

Svårighetsgrad

60 - 90 min

Upplev spänningen med Python programmering!

I denna uppgift finner du instruktioner som visar dig hur du skapar ditt eget whack-a-mole spel i Python. Skapa ett projekt, utforska de olika funktionerna och lär dig använda verktyget som finns i: https://replit.com/ 

Replit är en  utvecklingsmiljö där du direkt i webbläsaren kan skapa kodprojekt som kallas Repls. Genom Replit kan användare skapa, testa och dela sina program direkt i webbläsaren. Plattformen stöder flera programmeringsspråk och erbjuder en användarvänlig miljö för både nybörjare och erfarna utvecklare.

Skapa ett konto i Replit:

  1. Börja med att gå in på: https://replit.com/ och tryck på den lilla blåa rutan högst uppe i högra hörnet där det står “Sign up.”

2. Följ instruktionerna med att fylla i din email-adress och skapa ett lösenord.

3. När ni har skapat ett konto så är det dags att öppna ett nytt projekt. I replit kallas detta för “Repl.” Tryck på den blåa knappen “+ Create Repl.”

4. Sök på “Python” i Template-alternativet. Välj Python och namnge ditt projekt med en titel. Tryck sedan på den blåa knappen “Create Repl” nere till höger i rutan.

Tips!
Här kan ni se hur slutprojektet kan se ut när ni kodat klart: https://replit.com/@sophdani/Whackamole?v=1

AI i Replit

Att stänga av AI på Replit är som att sätta paus på den smarta hjälpen som ger tips när du skriver kod. För att göra det, leta efter en knapp eller en inställning som säger "stäng av kodhjälp" eller "stäng av AI-assistent". När du trycker på knappen kommer den smarta assistenten att sluta ge förslag och låta dig skriva koden helt själv. Det är som att stänga av en magisk kodhjälpare när du vill prova på att klara det själv!

För att stänga av AI, tryck på den lilla rutan längst ner till vänster och klicka ur “Enable”

Steg 1: Fråga om spelaren är redo att spela

Vi välkomnar spelaren och använder input() för att fråga spelaren om hen är redo att börja spela. Spelarens svar sparas i variabeln answer.

Tips!

print() skriver ut text till spelaren.

input() ställer en fråga som spelaren kan svara på genom att skriva.

answer är en variabel som sparar spelarens svar.

Steg 2: Hantera spelarens svar

Vi använder oss av if och elif satser för att reagera på spelarens svar. If- och elif-satserna ger oss möjlighet att skapa annorlunda händelser baserat på vad spelaren svarar. Om spelaren svarar med n så skriver vi ut ett tråkigt meddelande och spelet avslutas. Om spelaren svarar med j så går vi vidare!

Tips! Se till att skriva din kod på rätt rad så att allting kommer i rätt ordning!

Steg 3: En loop

Nu ska vi skapa en loop. En loop gör samma sak flera gånger och för att förstå hur det fungerar ska vi öva lite först:

Vi börjar med att skapa en for-loop som skriver hej 10 gånger, den kommer att se ut så här:

Och kommer att visa det här:

Prova att byta ut 10 till ett annat nummer och räkna hur många hej du får!

Vi kan också byta ut hej med i. i är alltid lika med antalet gånger vår for-loop redan har repeterats. Vår loop kommer nu att skriva ut hur många gånger den redan har repeterats om och om igen. Detta ser vi som att den räknar!

Vilket ger:

Prova att byta ut 10 till ett annat nummer och se vad som händer

Vi kan radera denna loop som vi övat med och gå vidare till att skapa en ny loop som uppdaterar vårt välkomstmeddelande.

Tips!

Kom ihåg att radera koden vi skapade för att lära oss hur en loop fungerar

Steg 4: Uppdatera vårt välkomstmeddelande

Vi använder två for-loopar för att skriva ut 10 tomma rader innan vårt startmeddelande och 5 tomma rader efter vårt meddelande om spelaren svarar med j. Vi lägger också till mer instruktioner i vårt meddelande som berättar vad spelaren borde göra i spelet.

Vi lägger också till quit() om spelaren svarar med n. Detta kommer att avsluta vårt spel.

Tips!

Använd bilderna som hjälp och jämför dem med din egen kod för att se till att allt har blivit rätt

Steg 5: Skapa en spelplan

Vi kommer nu att skapa vår spelplan. När vi är klara kommer den att se ut så här:

Vi börjar med att skapa variablerna, score och mole.

score visar hur många poäng spelaren har samlat ihop hittills

mole visar vilken position mellan 1 och 9 som våran mullvad finns på just nu. Mole betyder mullvad på engelska

Tredje raden visar nio hål och markerar mullvadens position. Vi skapar en variabel för att markera och ändra denna markering varje runda

Först skapar vi en tom playArea-variabel och sätter mole-variabeln till en siffra mellan 1 och 9. Sedan använder vi en for-loop (1 till 9) för att fylla playArea med hål (0) och markerar mullvadens position med ett X. Inuti loopen använder vi en if-else-sats för att kolla om i är lika med mole. Om det är sant, lägger vi till ett X, annars lägger vi till 0. Till sist skrivs spelplanen ut med hjälp av print().

Vi gör något liknande som vi tidigare har lärt oss, som att använda print() för att visa saker på skärmen och + för att sätta ihop text med vår score-variabel. Det är som att skapa en berättelse där vi visar hur bra det går genom att lägga till poängen till texten som vi skriver ut. Den tredje raden innehåller våran playArea-variabel och nu har vi hela vår spelplan färdig

Du kan testa att byta siffran för mole till en annan siffra mellan 1 och 9 och se hur X:et flyttar sig.

Låt datorn bestämma var mullvaden är

Vi vill att datorn ska bestämma en position för mullvaden och att positionen ska ändras för varje runda. För att göra det ska vi använda oss av en funktion som heter random.randrange().

random.randrange() kommer att ge oss en slumpmässig siffra större än eller lika med den vänstra siffran och mindre än den högra siffran som vi skriver in i funktionen.

Random betyder “slumpmässigt” på engelska.

Till exempel så kommer random.randrange(1, 10) att ge oss en siffra mellan 1 och 10. När vi använder och oss av range() med två tal så kommer det inte att inkludera det högra talet, utan det tal som är ett mindre. Till exempel så ger range (1, 5) ger 1, 2, 3, 4 men inte 5 och range(1, 10) ger 1 till 9 men inte 10. Den kommer aldrig att ge oss 10 eftersom att siffran vi får måste vara mindre än 10.

random.randrange är en speciell funktion och kräver att vi skriver import random högst upp i våran kod, denna del måste komma innan någon annan kod.

Nu kan vi sätta vår mole-variabel till random.randrange(1, 10). När du startar spelet kommer mullvaden att ha en ny slumpmässig position varje gång. Testa att köra din kod några gånger och se var mullvaden hamnar.

Vi har nu en fungerande spelplan som visar vart mullvaden är och har gjort så att datorn väljer en slumpmässig position för mullvaden varje gång vi börjar spela.

Tips!

Se till att du har stavat rätt i din kod och att stor och liten bokstav har hamnat på rätt plats

Steg 6: Låt spelaren gissa mullvadens position

Nu använder vi samma teknik som när vi frågar spelaren om hen är redo att börja spela för att kolla om svaret spelaren skriver in är samma som mullvadens position..

När vi jämför mole med det spelaren skriver in så vill vi konvertera det till text (mole är vanligtvis en siffra), då använder vi str() funktionen. Om spelaren gissar rätt så lägger vi till en poäng till score och om spelaren gissar fel så skriver vi “Game over!” med hjälp av print() funktionen.

Om du nu testar ditt spel så får mullvaden en ny slumpmässig position varje gång och du kan gissa var mullvaden är genom att skriva in en siffra mellan 1 och 9. Om du gissar rätt så visas det att du får ett poäng och om du gissar fel så står det “Game over!”. Men spelet tar slut efter en enda gissning, så nästa steg är att vi ska lägga till så att man kan spela flera rundor istället för bara en.

Bra jobbat att klara dig ända hit! Så här ser vår kod ut än så länge:

Tips!
Fungerar inte din kodning? Se då till att gå igenom din kodning och kolla så du har kodat på rätt rad, har stora och små bokstäver på rätt plats samt inte har några extra tecken i din kod.

Steg 7: Spelloop

Nu ska vi börja skapa en spelloop. Vår spelloop kommer att göra så att vi kan spela flera rundor av vårt spel och låta spelaren samla poäng. Våran spelloop kommer att bestå av en while-loop.

Vi kommer att sätta all kod som vi vill ska vara en del av en runda i vårt spel i en while-loop. En while-loop fungerar likt en for-loop men den kommer fortsätta oändligt tills dess att variabeln i toppen av while-loopen får värdet False.

Tips!

True och False kommer också från engelska och står för sant eller inte sant.

Vi skapar en while-loop med variabeln gameOn. Sedan flyttar vi våran for-loop inuti denna enligt bilden. Du kan göra det här lätt genom att markera koden och trycka på *tab-*knappen (tangenten till vänster om Q på ditt tangentbord). Vi flyttar också in variablerna playArea och mole inuti våran while-loop.

gameOn sätter vi till False när spelet inte har börjat eller när vi vill avsluta spelet. När vi vill att spelet ska fortsätta så vill vi att den är True. Vi skapar en gameOn variabel som börjar som False och sätter den till True när spelaren vill börja spela.

Tips!

gameOn betyder “spelet är igång” på engelska. Vi kan tänka på detta som ja eller nej: Borde spelet vara igång? Ja eller nej? Om spelet borde vara igång sätter vi gameOn till True och borde det inte vara igång sätter gameOn den till False.

Vi vill också sätta gameOn till False när spelaren förlorar spelet.

Tips!

Kom ihåg att testa din kod och jämför med bilderna för att se till att din kod hamnar i rätt ordning!

Snyggt jobbat! Nu är vårat spel färdigt! Så här borde våran kod se ut i slutändan, jämför gärna med bilden för att hjälpa dig lösa problem i din kod.

Felsökning:

  • Kolla stavfel/felaktiga tecken
  • Kolla ordningen på koden
  • "Följ tråden"
  • Använd print

Python begrepp:

Print - Används för att få datorn att visa text eller resultat på skärmen. Till exempel kan du använda "print('Hej!')" för att få datorn att visa ordet "Hej!" på skärmen.

Input - Används för att få information från personen som använder programmet. Till exempel kan du använda "input('Vad är ditt namn? ')" för att be personen att ange sitt namn, och sedan använda det svaret i ditt program.

If - Används för att göra ett beslut i programmet baserat på om en viss villkor är sant eller falskt. Till exempel kan du använda "if ålder > 10:" för att kontrollera om en person är över 10 år.

Elif - Kort för "else if", används när du har flera villkor att kontrollera i följd. Till exempel kan du använda "elif ålder > 5:" efter en "if" för att göra en annan kontroll om åldern är över 5 men inte över 10.

For - Används för att upprepa en viss kod flera gånger. Till exempel kan du använda "for i in range(5):" för att köra en bit kod 5 gånger.

Range - Används med "for"-loopar för att bestämma hur många gånger loopen ska köras. Till exempel kan du använda "range(3)" för att loopa tre gånger.

While - Används för att upprepa en bit kod så länge ett visst villkor är sant. Till exempel kan du använda "while antal < 10:" för att fortsätta köra en bit kod så länge ett variabeln "antal" är mindre än 10.

Spelloop - Det är en typ av loop som fortsätter att köra så länge ett visst villkor är sant.

Variabler - Används för att lagra information som kan ändras under körningen av programmet. Till exempel kan du ha variabler som "poäng" för att hålla reda på hur bra någon spelar ett spel, "mullvad" för att hålla reda på antalet mullvadar som dyker upp i ett spel, och "spelområde" för att hålla reda på storleken på spelområdet.

Våra variabler:

  • Score - Variabeln som används för att hålla reda på hur många poäng en spelare har fått. Till exempel, om en spelare klarar en utmaning eller besegrar ett hinder i ett spel, kan deras poäng öka och sparas i variabeln "Score".
  • Mole - En variabel som kan användas för att hålla reda på olika egenskaper hos en "mullvad" i ett spel. Till exempel kan det användas för att spara information om var spelområdet en mullvad dyker upp eller hur många poäng spelaren får när de träffar mullvaden.

Playarea - En variabel som används för att hålla reda på information om spelområdet, till exempel dess storlek, layout eller andra egenskaper. Till exempel kan "Playarea" användas för att spara information om antalet rader och kolumner i ett spel, eller om det finns hinder eller belöningar på spelområdet.