NemProgrammering.dk logo

Opsamling | Vi laver et spil!

Lær Python programmering » Opsamling | Vi laver et spil! # 6
Inkluderet:
Livstidsadgang
27 videolektioner
7 timers undervisning
Stil spørgsmål
Kursusbevis

Information om denne video

Underviser: Simon Rotendahl   Video: 17:24   Lektion nr. 6 af 27

Vi ser på hvad vi har lært

I videoen her, kigger vi lidt på hvad vi har lært. Vi skal lave et program, som vi kan spille Sten, Saks, Papir mod. Vi få her trænet betinget udtryk, variabler og tankegangen vi bruger når vi programmere. Vi ser også kort på to ting i ikke kender, det ene er ‘input()’ og det andet er ‘random’. Hvis i ikke helt forstår det efter videoen, så er det helt fint, da vi kommer til det senere.

Det er vigtigt at øve sig, og videoen her skal også ses som en opfordring, til at i prøver at lave små ting selv, da erfaring spiller en stor rolle i at være god til at programmere.

I næste video skal vi se på funktioner.

Spørgsmål og kommentarer

Kun medlemmer med adgang til dette kursus kan stille spørgsmål og kommentere. Bliv medlem her!

  • Henrik H. siger:

    Udmærket video

    Jeg støder dog på to udfordringer.
    Hvis jeg skriver python3 i terminalen får jeg en fejl.

    Jeg er på en pc

    python3 : The term ‘python3’ is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was inclu
    ded, verify that the path is correct and try again.
    At line:1 char:1
    + python3 .\Sten.py
    + ~~~~~~~
    + CategoryInfo : ObjectNotFound: (python3:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

    Men det virker fint med bare af skrive python navn.py

    Noget andet der gavn lidt udfordringer var indryk af de boolske udtryk. F.eks det sidste else skal stå helt til højre så virker det. Hvis det bliver rykket ind under det sidste else med TAP så virker det ikke.

    Jeg valgte også at smide en linje ind i koden så jeg kunne se computerens valg

    if ditValg == Sten:
    if PCvalg ==1:
    print(“Computeren vælger Sten”)
    print(“Uafgjort”)
    elif PCvalg ==2:
    print(“Computeren vælger Saks”)
    print(“Du vandt, sten vinder over saks”)
    #Her under kan der godt bruges else fordi der kun er 3 muligheder og du har tjekket op imod de to så kan det kun være den 3.
    else:
    print(“Computerne vælger Papir”)
    print(“Du tabte, Parir vinder over Sten”)

    1. Simon R. siger:

      Hej Henrik,

      Tak for de pæne ord.

      Mht. python3 så har jeg ikke været god nok til at få det forklaret.
      Så den korte forklaring. På PC har det ingen betydning mht. til kurset her, du skriver bare python det er kun Mac og Linux som skal skrive python3.
      Den længere forklaring. Grunden til at jeg skriver python3, er at min computer bruger styresystemet Ubuntu (en version af Linux). Linux og Mac computere har allerede python2 installeret da styresystemet bruger python2, så jeg har både python2 og python3 installeret, derfor er jeg (og Mac brugere) nød til at specificere om vi gerne vil bruge python2 eller python3, når jeg skriver python så bruger den python2 som standard. Så da du installerede Python på din PC fik du python3, og derfor er det standard. Grunden til at python3 er vigtigt i videoen her er at input funktionen er forskellig i python2 og python3, men langt det meste af tiden gør det ikke nogen forskel hvilken en man bruger.

      Mht. else problemet. Kommentarfeltet her viser ikke indryk så jeg har lidt svært ved helt at forstå hvad du mener. Jeg vil lige prøve at forklare if-else på en lidt anden måde og se om det hjælper. På dansk f.eks vil det ikke give mening bare at sige “ellers gør det her”, man vil altid sige “hvis noget, så gør det ene, ellers så gør det andet”, derfor vil en else altid “tilhøre” en if. Elif står for “else if” altså “hvis ellers”, så det svare til “hvis x gør ting 1, ellers hvis y gør ting 2, ellers så gør ting 3”, på den måde høre en elif også til en if. Så i sten, saks, papir eksemplet så høre elif PCvalg == 2 og else, til if PCvalg == 1. Hvis der i mod else står på samme indrykning som if ditValg == Sten, jamen så tilhøre else if’en ditValg == Sten. Jeg kan forestille mig at den lille smøre her er lidt forvirrende, så jeg har prøvet at lave et eksempel med din koden, som ligger på linket herunder (på linket kan man se indrykningen)
      https://pastebin.com/7gvGLgGi

      For at gøre her med “tilhørsforhold/”/indryk mere tydeligt, så kan Atom faktisk vise det, du kan se på billedet herunder på linket hvordan der går nogle linjer ned. Du kan slå dem til, i Atom, ved at trykke Edit -> Preferences -> Editor -> sæt flueben ved “Show Indent Guide”. Du behøves ikke trykke gem eller noget, ændringen sker så snart du sætter flueben.
      https://ibb.co/KVPgnm6

      Hvis det her ikke svarede på dit spørgsmål (jeg kunne ikke helt gennemskue problemet, så jeg har måske svaret på noget helt forkert) så må du endelig lige skrive igen! Og evt. bruge pastebin.com til at dele din kode med mig, så jeg kan se indrykkende. Håber det hjalp lidt :)

      Mvh.
      Simon

  • Nicky F. siger:

    Hmm okay jeg opdager så nu, at du ikke kan se alle de indryk der er lavet i forbindelse med de forskellige if, elif og else – sætninger. :-(

  • Nicky F. siger:

    Hej Simon
    Jeg sidder og udfordrer mig selv og er ved at lave en godnathistorie til børnene, hvor de kan være med til at bestemme indholdet. Et slags adventure-spil-
    Men jeg er lidt udfordret i min kode, fordi mine if, elif og else kollidere med hinanden. Det gør de jo nok fordi jeg skriver dem i samme række eller hvad man siger. (Det er den del af koden jeg har lavet til en kommentar). Men jeg kan ikke rigtigt se, hvordan historien ellers skulle få alle de her grene, med mindre det er noget helt andet der skal til som ikke er lært endnu?

    Det næste spørgsmål er: Hvordan kan jeg lade computeren gå tilbage til en linje den een gang har været ved. f.eks hvis jeg ønsker at historien skal gå tilbage til et tidligere tidspunkt ved et forkert valg?

    (Koden står her nedenfor)

    print (“Historien om Tommy \n”)

    navn = input(“Hej hvad hedder du? “)

    print (“Jamen hej ” + navn + ” Jeg vil nu fortælle dig en sød lille historie, som du kan være en del af :-) \n”)

    print (“Der var engang en dreng, som hed Tommy.”)
    print (“Tommy var 8 år gammel og var en helt almindelig dreng ligesom alle andre.”)
    print (“Eller der var een mindre forskel og det var at, hvis han trykkede på sin navle,”)
    print (“så blev han helt lille. Helt lille som en lille mus. \n\n”)

    print (“Nå men Tommy sad en dag og legede på sit værelse. Han legede med sin røde ynglingslegetøjsbil”)
    print (“Med sin ene hånd skubbede han bilen frem og tilbage på værelset, mens han sagde: – Wrroooomm -“)
    print (“På et tidspunkt skubbede Tommy bilen lidt for hårdt så den rullede og rullede, indtil den forsvandt, ind i et lille bitte hul, som var i væggen under skrivebordet.”)

    hullet = input (“Hvad skal Tommy gøre? Forsøge at få bilen ud (1), eller lege med noget andet (2)\n”)
    if hullet == “1”:
    print (“\nTommy havde aldrig lagt mærke til det hul i væggen. Han kravlede hurtigt efter bilen og forsøgte at se ind i hullet.”)
    print (“Der var mørkt derinde, og han kunne slet ikke få øje på bilen.\n”)
    mørkt = input (“Hvad skal Tommy gøre? finde en lommelygte (1) eller trykke på sin navle (2) “)
    if mørkt == “1”:
    print (“\n Tommy rejste sig op og gik hen til en kasse som han gennemrodede, indtil han fandt en lille lommelygte.”)
    print(“Han kravlede igen ned til hullet og lyste ind i det med lommelygten. DER var den. Den røde bil. Langt inde i hullet.”)
    print (“Tommy forsøgte at bruge sine hænder til at få bilen ud, men han kunne slet ikke nå bilen. ÆV. Han tænkte sig om. \n”)
    problem = input(“Hvad skal Tommy gøre? Skal han bruge en støvsuger (1), eller skal han trykke på navlen (2), eller skal han bruge et kosteskaft (3)”)
    if problem == “1”:
    print (“Tommy gik ind i stuen og spurgte sin mor om han måtte låne støvsugeren, fordi han bare lige ville støvsuge værelset.”)
    print (“Moderen synes det var virkelig mystisk, fordi Tommy var altså ikke typen, der plejede at støvsuge værelset, men hun lod ham låne støvsugeren alligevel.”)
    print (“Tommy bar støvsugeren ind på værelset, sluttede stikket til, tændte støvsugeren og stak støvsugerøret hen til hullet i væggen.\n”)
    print (“- KLONK! – hørte han pludselig. YES det må være bilen, tænkte Tommy. Men det var det ikke, da han forbavset kikkede på støvsugerøret.”)
    print (“For enden af støvsugerøret sad nemlig en mus. Den så ret gal ud, fordi den faktede helt vilt med arme og ben. Tommy skyndte sig at slukke for støvsugeren. \n”)

    elif mørkt == “2”:
    print (“Tommy trykkede på sin navle. Og pludselig med eet begyndte han at skrumpe og skrumpe. Det tog ikke lang tid og så var han ikke større end en mus.”)
    elif hullet == “2”:
    print (“\nTommy blev lidt ærgerlig over at se den røde ynglingsbil trille ind under skrivebordet, men så kom han til at se ynglingsspidermanden, der stod oven på en af hylderne.”)
    print (“På samme tid kom han i tanker om den spraglede hoppebold, som var oppe på loftet. \n”)

    legetøj = input(“Hvad synes du Tommy skulle? Tage spidermanden ned (1), eller finde hoppebolden på loftet? (2)”)

    #if legetøj == “1”:
    #print (“Tommy tog sin spidermand ned.”)
    #elif legetøj == “2”:
    #print (“Tommy gik op på loftet.”)
    #else:
    #print (“Du skulle skrive 1 eller 2. historien skal genstartes.)

    else:
    print (“Du skulle skrive 1 eller 2. Historien skal genstartes.”)

    1. Simon R. siger:

      Hej Nicky
      Super fedt projekt du er gået i gang med! Jeg har jo undervist børn og unge meget, og jeg er også en del af DR’s projekt Ultra:bit, så jeg håber det kan bringe interessen videre til børnene :)

      Mht. dine if, elif, else statement. Jeg tror måske der mangler et indryk ved legetøjs delen. Du kan se koden på linket nederst. I koden har jeg også tilføjet en lille ting, på linje et skriver jeg “import time” og senere bruger jeg “time.sleep(5)” som går at programmet “står stille” i 5 sekunder, jeg tænker du kan bruge den til at vise teksten lidt langsommere (det med import kommer i video 18, du behøves ikke se den nu, bare brug det, så lærer du om det senere).

      Mht. at vende tilbage til en linje, så skal du bruge en while løkke (video 9), og du vil kunne gøre din kode markant mere overskuelig med funktioner (video 7). Så prøv videre med det, og se et par videoer mere. Når d har set de to videoer så er løsningen ikke helt triviel (åbenlys), så skriv endelig igen der, hvis du syntes det er svært at gennemskue.

      Jeg håber det hjalp lidt, ellers så skriver du bare igen, og skide godt projekt, super godt fundet på :)

      Link til koden: https://pastebin.com/gk6FqpeL

      1. Nicky F. siger:

        Hej Simon,
        Tak for din fine feed-back.
        Jeg har rettet koden lidt til og inddraget noget af dine inputs. Og så har jeg lavet noget “for sjov grafik”.
        Du kan se koden her: https://pastebin.com/CHhdv4vG

        Jeg er så småt ved at se styrken i Python (synes jeg). Men der er meget som også er svært.
        Indtil videre sidder jeg fast i emnet “funktioner” som jeg synes er vildt svært at begribe. Jeg kan godt forstå styrken i det, men kan simpelthen ikke greje, hvordan jeg skulle omsætte det til praksis.
        I min kode har jeg sat de der time.sleep ind. Så er det at jeg tænkte at jeg måske kunne gøre at man startede med at indætte sin alder, hvorefter time.sleep variere hele vejen ned, alt efter om man er god til at læse eller ej.
        Jeg tænkte at jeg skulle bruge time-sleep i en funktion – har jeg ikke ret?

        Nå men der er vel ikke andet for end at kæmpe videre, selvom jeg ville ønske jeg havde mere tid til det :-)

        Ultra:bit? Fedt. Jeg står faktisk nu og tænker at min ældste datter på 6 år snart skal i gang med at programmere lidt :-) Har du nogle anbefalinger?

        Mvh
        Nicky

        1. Simon R. siger:

          Hej Nicky,

          Fedt du kører videre, jeg kender kun alt for godt, det med at finde tid til sådanne ting, det er ikke altid lige nemt.

          Jeg kan ikke lige se noget på linket, jeg tror der er gået noget galt med det desværre.

          Mht. funktioner. Det er oplagt at lave noget til en funktion, hvis du gør en ting ofte, så f.eks det med alder, ville jeg ikke lave til en funktion, for det er kun noget du skal gøre en gang. Du kan lave det til en funktion, men der er ikke så meget mening i det. Derimod vil det give rigtig meget mening at lave det med at tage et valg, til en funktion.

          Jeg har lavet et eksempel på de to ting i linket her i bunden, som du kan bruge, med nogle kommentare i, som skulle forklare hvad jeg gør :)

          Mht. din datter. Super fedt at du vil opmuntre hende til at kode! Jeg har et par forslag.
          1. Scratch. Scratch bruges efterhånden meget i skolen, og det er en super god måde at lære lidt om programmering, især for børn (men er faktisk også lærerigt for voksne). Min storebror er faktisk ved at lave et kursus her til siden, i netop det (link i bunden). Indtil da, så har jeg og ham lavet en “programmerings julekalender” for alinea, også i Scratch, så der er lidt at gå i gang med.
          2. Hvis man gerne vil have noget mere fysisk at se sin kode på, så kan du søge lidt på BBC Micro:bit. Det er en “microcontroller”, som er god til at lære at programmere med, og det er det som DR’s Ultra:bit projekt går ud på (link i bunden).

          Skriv endelig igen, hvis du vil have mere info om noget af det :)

          Kode til dit spil: https://pastebin.com/iSkYMEuS
          Scratch på nemprogrammering: https://www.nemprogrammering.dk/wp/programmering-for-boern/
          Julekalender: https://lærkode.alinea.dk/julekalender/
          Ultra:bit: https://www.dr.dk/skole/ultrabit

          (Jeg har ikke lige haft stavekontrol på, så der er nok en del fejl, det må du undskylde :p )