På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

Like dokumenter
På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

Hemmelige koder. Kodeklubb-koden. Steg 1: Alfabetet. Sjekkliste. Introduksjon

Skilpaddefraktaler Erfaren Python PDF

Enarmet banditt Nybegynner Scratch Lærerveiledning

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

Skilpadder hele veien ned. Steg 1: Tegn et fjell. Sjekkliste. Introduksjon. Hent frem skilpaddene dine, åpne IDLE, det er på tide å tegne igjen.

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

Stjerner og galakser Nybegynner Python PDF

Skilpadder hele veien ned

Hangman. Level. Introduksjon

Skilpadder hele veien ned

Kanter, kanter, mange mangekanter

Straffespark Introduksjon Scratch Lærerveiledning

Mattespill Nybegynner Python PDF

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

Steg 2: La løvinnen og papegøyen bevege seg

Hva er det? Steg 1: Få flere ting til å vise seg på tavlen. Sjekkliste. Test prosjektet. Introduksjon

Hvor i All Verden? Del 3 Erfaren Scratch PDF

Løpende strekmann Erfaren Videregående Python PDF

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

Felix og Herbert Introduksjon Scratch PDF

Hvor i All Verden? Del 2 Erfaren Scratch PDF

Skilpadder Introduksjon Python PDF

Legg bort skilpaddene dine, i dag skal vi lære hvordan vi kan sende hemmelige beskjeder!

Klask-en-Muldvarp. Steg 1: Gjøre klart spillbrettet. Sjekkliste. Introduksjon

Soloball. Steg 1: En roterende katt. Sjekkliste. Test prosjektet. Introduksjon. Vi begynner med å se på hvordan vi kan få kattefiguren til å rotere.

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

Steg 1: Husker du skilpadden?

Steg 1: Lag en figur som bytter drakt

Flaksefugl Nybegynner Scratch Lærerveiledning

Bygge et hus. Steg 1: Vegger. Sjekkliste. Introduksjon

Gangemesteren Nybegynner Scratch PDF

Tegneprogram Journeyman Scratch PDF

Legg bort skilpaddene dine, i dag skal vi lære hvordan vi kan sende hemmelige beskjeder!

Fyrverkeri Nybegynner Scratch Lærerveiledning

Skilpaddetekst. Steg 1: Tekst på flere linjer. Sjekkliste. Introduksjon

Pong. Oversikt over prosjektet. Steg 1: En sprettende ball. Plan. Sjekkliste. Introduksjon

Start et nytt Scratch-prosjekt. Slett kattefiguren, for eksempel ved å høyreklikke på den og velge slett.

ToPlayer. Steg 1: Kom i gang med metodene setup og draw. Gjør dette: Introduksjon:

For å sjekke at Python virker som det skal begynner vi med å lage et kjempeenkelt program. Vi vil bare skrive en enkel hilsen på skjermen.

Snake Expert Scratch PDF

Farger Introduksjon Processing PDF

Steg 1: Tekst på flere linjer

Utførelse av programmer, metoder og synlighet av variabler i JSP

Spøkelsesjakten. Steg 1: Lag et flyvende spøkelse. Sjekkliste. Introduksjon

Sprettball Erfaren ComputerCraft PDF

3. Introduksjon til prosjektet Hringr. Scratch fra scratch Enkel programmering for nybegynnere

Legg merke til at at over de blå klossene er det flere kategorier av kommandoer i forskjellige farger, for eksempel

Skilpaddekunst. Steg 1: Møt skilpadden. Sjekkliste. Introduksjon. Turtles

Robotinvasjon Introduksjon ComputerCraft PDF

Asteroids. Oversikt over prosjektet. Steg 1: Enda et flyvende romskip. Plan. Sjekkliste. Introduksjon

Spøkelsesjakten. Introduksjon

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF

PGZ - Hangman Ekspert Python Lærerveiledning

Steg 1: JafseFisk følger musepekeren

Bruk av oppgaver og grupper i

Flagg Erfaren Scratch Lærerveiledning

ToPlayer. Introduksjon: Skrevet av: Ruben Gjerstad Eide og Kine Gjerstad Eide

Skilpadder. Introduksjon: Steg 1: Hei, Skilpadde! Sjekkliste. Skrevet av: Oversatt fra Code Club UK (//codeclub.org.uk)

Sprettende ball Introduksjon Processing PDF

I denne oppgaven skal vi bruke funksjoner for å gjøre programmene vi skriver enklere og mer oversiktlige.

Hvor i All Verden? Del 3. Introduksjon. Steg 0: Forrige gang. Sjekkliste. Skrevet av: Geir Arne Hjelle

Start et nytt Scratch-prosjekt. Slett kattefiguren, for eksempel ved å høyreklikke på den og velge slett.

HTML: Legg til lyd og video

Rosetta og Philae. Steg 1: Skilpadden blir et romskip. Sjekkliste. Introduksjon

Introduksjon til ComputerCraft Introduksjon ComputerCraft PDF

1. I denne tekstboksen kan du søke etter venner, grupper eller sider.

Forberedelser: Last ned bildefiler

Verden. Steg 1: Vinduet. Introduksjon

Øvingsforelesning i Python (TDT4110)

Steg 1: Få flere ting til å vise seg på tavlen


Steg 1: Felix følger musepekeren

Skilpaddekunst. Introduksjon. Skrevet av: Geir Arne Hjelle

Legg bort skilpaddene dine, i dag skal vi lære hvordan vi kan sende hemmelige beskjeder!

Hvor i All Verden? Del 2. Introduksjon. Steg 0: Forrige gang. Skrevet av: Geir Arne Hjelle

Steg 0: Installere Pygame Zero

Steg 1: Katten og fotballbanen

King Kong Erfaren Scratch PDF

Forberedelser: Last ned bildefiler

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

Om du allerede kjenner Scratch og har en Scratchbruker kan du gå videre til Steg 1.

Fra datax til Visma eaccounting

IN1000 Obligatorisk innlevering 7

Redd verden. Steg 1: Legg til Ronny og søppelet. Sjekkliste. Introduksjon

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Felix og Herbert. Felix og Herbert. Introduksjon

Steg 1: Lag en scene og legg til figurer

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

Repetisjon Novice Videregående Python PDF

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

Lage en ny spillverden

PXT: Himmelfall. Introduksjon. Skrevet av: Helene Isnes og Julie Revdahl

Kan micro:biten vår brukes som en terning? Ja, det er faktisk ganske enkelt!

PXT: Det regner mat! Introduksjon. Steg 1: Grunnlag. Sjekkliste. Skrevet av: Helene Isnes

Transkript:

Tre på rad Erfaren Python Introduksjon På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad. Steg 1: Tegne rutenettet Vi vil tegne fire linjer, i et #-mønster, som dette: Vi kunne brukt skilpadde-kommandoer for å tegne rutenettet, men i dag skal vi i stedet lære å bruke tk-biblioteket til tegning. Åpne IDLE, lag en ny fil og lagre den som 'xox.py' Skriv følgende kode main = Tk( c = Canvas(main, width=600, height=600 c.pack( 200, 0, 200, 600 400, 0, 400, 600 0, 200, 600, 200 0, 400, 600, 400 mainloop( Lagre og kjør programmet ditt. Du vil se et rutenett tegnet på skjermen! Steng vinduet rutenettet ble tegnet i for å avslutte programmet ditt. Lerretet På samme måte som vi brukte turtle -biblioteket når vi tegnet med skilpadder bruker vi her tkinter -biblioteket. Vi lager et 600 ganger 600-piksler lerret som tegnes i et vindu med kommandoen c = Canvas(main, width=600, height=600. For datamaskinen ser dette slik ut:

0 200 400 600... 0+--------+--------+--------+-----> bortover 200 A B 400 C D 600... V nedover Her er punkt A ved 200 bortover, 200 nedover. Punkt B er ved 400 bortover, 200 nedover. Punkt C er ved 200 bortover, 400 nedover. Til slutt er punkt D ved 400 bortover, 400 nedover. Hver av kodelinjene bortover1, nedover1, bortover2, nedover2 tegner en linje på skjermen, hvor de fire tallene beskriver hvor linjer starter og slutter. For eksempel, om vi vil tegne en linje fra A til D kan vi bruke 200, 200, 400, 400. 0 200 400 600... 0 +--------A--------B--------+-----> bortover 200 M O 400 N P 600 C D... V nedover Med punktene som i den siste figuren vil vi tegne linjer fra A til C, B til D, M til O og N til P. 200, 0, 200, 600 # A til C 400, 0, 400, 600 # B til D 0, 200, 600, 200 # M til O 0, 400, 600, 400 # N til P Når vi koder kaller vi ofte bortover for x, mens nedover ofte kalles y. Dette rutenettet ligner ganske mye på koordinatene du kanskje har lært om i mattetimen. Forskjellen er at her begynner vi i øvre, i stedet for nedre, venstre hjørne, slik at y blir større når vi går nedover. Steg 2: Tegne en sirkel

I den samme filen vil vi nå legge til en prosedyre som kan tegne en sirkel når du klikker med musen! main = Tk( c = Canvas(main, width=600, height=600 c.pack( 200, 0, 200, 600 400, 0, 400, 600 0, 200, 600, 200 0, 400, 600, 400 def click(event: 200, 200, 400, 400 c.bind("<button-1>", click mainloop( Kjør koden din, og klikk et sted i rutenettet. Hva skjer? Du skal se en sirkel i den midterste ruta på skjermen. La oss endre på koden slik at vi tegner sirkelen i den samme ruta som du klikker i. For å gjøre dette må vi finne posisjonen til muspekeren og regne ut hvilken rute i rutenettet dette tilsvarer. Dette gjør vi ved å endre på click -prosedyren. main = Tk( c = Canvas(main, width=600, height=600 c.pack( 200, 0, 200, 600 400, 0, 400, 600 0, 200, 600, 200 0, 400, 600, 400 def click(event: across = int(c.canvasx(event.x / 200 down = int(c.canvasy(event.y / 200 (across+1 * 200, (down+1 * 200 c.bind("<button-1>", click mainloop( Linjen int(c.canvasx(event.x / 200 finner først posisjonen til muspekeren event.x, gjør om denne til en lerret-posisjon, c.canvas(event.x og deler denne på 200 og runder nedover slik at vi får et tall som er enten 0, 1 eller 2. Dette tallet forteller oss i hvilken kolonne muspekeren er. Linjen int(c.canvasy(event.y / 200 finner på samme måte ut hvilken rad muspekeren befinner seg i. Kjør koden. Legg merke til at hver gang du klikker i en rute tegnes en sirkel i den ruten. Koden (across+1 * 200, (down+1 * 200 gjør om 'Bortover 1, Nedover 2' til posisjoner på lerretet som Bortover 200, Nedover 400.

Steg 3: Holde oversikten Tilsvarende slik vi gjorde i forrige leksjon om Hangman, vil vi nå innføre en liste som kan holde oversikten over hvor vi allerede har klikket. Dette vil være viktig når vi senere vil sjekke om man har tre på rad. Vi lager først en liste grid med ni elementer, en for hver rute. Legg til følgende kode rett før definisjonen av prosedyren click : grid = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", ] Vi kunne ha startet listen med ni tomme strenger, grid = ["", "", "", "", "", "", "", "", ""], men ved å skrive listen som vi gjør er det enklere å huske hvordan rutene på brettet er nummerert. Nå vil vi registrere at vi tegner sirkler i denne listen. Bytt ut click -prosedyren med følgende: def click(event: across = int(c.canvasx(event.x / 200 down = int(c.canvasy(event.y / 200 square = across + (down * 3 if grid[square] == "O": print("du har allerede klikket i rute " + str(square print("du klikket i rute " + str(square (across+1 * 200, (down+1 * 200 grid[square] = "O" For å teste at listen virker bruker vi en enkel print -kommando som forteller oss hvilken rute vi klikker i, og om vi klikker i samme rute to ganger. str gjør om et tall til tekst (en streng slik at den kan skrives ut sammen med den forklarende teksten. Kjør koden. Klikk i forskjellige ruter slik at du skjønner hvordan vi har nummerert rutene på brettet. Steg 4: Tegne et kryss Vi vil nå legge til en spiller til, som tegner kryss i stedet for sirkel. Vi lager en prosedyre som bestemmer hvem sin tur det er. choose_shape undersøker grid -listen vår og lar det være X sin tur dersom det allerede er flere O enn X i listen. Vi utvider også click -prosedyren slik at den kan tegne både sirkler og kryss. Koden ser nå slik ut:

main = Tk( c = Canvas(main, width=600, height=600 c.pack( 200, 0, 200, 600 400, 0, 400, 600 0, 200, 600, 200 0, 400, 600, 400 grid = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", ] def click(event: shape = choose_shape( across = int(c.canvasx(event.x / 200 down = int(c.canvasy(event.y / 200 square = across + (down * 3 if grid[square] == "X" or grid[square] == "O": return if shape == "O": (across+1 * 200, (down+1 * 200 grid[square] = "O" (across+1 * 200, (down+1 * 200 across * 200, (down+1 * 200, (across+1 * 200, down * 200 grid[square] = "X" def choose_shape(: if grid.count("o" > grid.count("x": return "X" return "O" c.bind("<button-1>", click mainloop( Kjør programmet ditt. Prøv å trykk på en rute. Det skal tegnes en O. Klikk på en annen rute. Nå tegnes en X. Steg 5: Å finne en vinner Nå er vi nesten ferdige med spillet, vi mangler bare å sjekke om noen får tre på rad! I den samme filen vil vi nå skrive en ny prosedyre winner. Vi kaller denne etter hvert klikk for å sjekke om en av spillerene

har vunnet. Den ferdige koden ser ut som følger: main = Tk( c = Canvas(main, width=600, height=600 c.pack( 200, 0, 200, 600 400, 0, 400, 600 0, 200, 600, 200 0, 400, 600, 400 grid = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", ] def click(event: shape = choose_shape( across = int(c.canvasx(event.x / 200 down = int(c.canvasy(event.y / 200 square = across + (down * 3 if grid[square] == "X" or grid[square] == "O": return if winner(: return if shape == "O": (across+1 * 200, (down+1 * 200 grid[square] = "O" (across+1 * 200, (down+1 * 200 across * 200, (down+1 * 200, (across+1 * 200, down * 200 grid[square] = "X" def choose_shape(: if grid.count("o" > grid.count("x": return "X" return "O" def winner(: for across in range(3: row = across * 3 line = grid[row] + grid[row+1] + grid[row+2] for down in range(3: line = grid[down] + grid[down+3] + grid[down+6] line = grid[0] + grid[4] + grid[8]

line = grid[2] + grid[4] + grid[6] c.bind("<button-1>", click mainloop( Prøv å spill spillet slik at du får tre på rad. Kan du klikke i noen flere ruter? Prosedyren winner undersøker de fire forskjellige måtene man kan få tre på rad på: Sjekk hver rad om det er tre X'er eller O'er, Sjekk hver kolonne om det er tre X'er eller O'er, Sjekk diagonalen fra øvre venstre til nedre høyre hjørne, Sjekk diagonalen fra øvre høyre til nedre venstre hjørne. Steg 6: Du er ferdig med en enkel versjon av tre på rad! Prøv å endre koden, for eksempel slik at den tegner andre symboler. Lisens: Code Club World Limited Terms of Service Forfatter: Oversatt fra Code Club UK Oversetter: Geir Arne Hjelle