Göm meny

Temauppgift 1


Nyckelbegrepp

Nyckelbegreppen i denna uppgift kommer vi att gå igenom i djupare detalj i tema 2 och 3. I denna temalabb är syftet att ni försöker sätta egna ord på dem och placera ut dem på er egen mentala begreppskarta.

Nyckelbegrep: program, skript, uttryck, sats, loop, variabel, villkor, programflöde

Inlärningsmål

Syftet med den här uppgiften är en introduktion till programmering som koncept genom att skriva ett program i Scratch. Uppgiften kopplar följande kursmål:

  • förklara vad ett program är och hur ett program fungerar
  • förklara programkod de själva och andra på kursen skrivit
  • använda grundläggande datatyper/datastrukturer och styrstrukturer för att skriva enklare program

Muntlig redovisning

Labben redovisas vid särskilt redovisningstillfälle, se deadlines.

För G krävs en godkänd redovisning av del 1, 2 och 3. För VG krävs en godkänd redovisning av del 1, 2, och 3 samt en godkänd redovisning av del 4.

Gruppindelning för redovisningstillfället

  • 13-14: Grupp F, G, H
  • 14-15: Grupp C, D, E
  • 15-16: Grupp A, B

Komplettering

Missad redosivning kompletteras genom att skicka in en screencast där du demonstrerar ditt program och svarar på de frågor som finns till varje steg i demonstrationen.

Du behöver inte redigera screencasten på något speciellt sätt. Se bara till att det du vill visa syns, samt att din röst hörs. Screencasten får vara max 5 minuter lång.

Temauppgift 1: Pong

På lektionen har vi gått igenom grunderna i Scratch och bekantat oss med miljön och nu är det dags att skapa ett eget pong-spel. Gå in på scratch.mit.edu. För att kunna spara projekt krävs en registrerad användare så har du inte någon sådan, skapa en. Tryck sedan på Skapa/Create för att börja skapa ditt spel.

För att visa de detaljerade instruktionerna/ledtrådarna till instruktionerna, klicka på de suddiga avsnitten.

Del 1 - Skapa racket

Din första uppgift blir att skapa rackets för båda spelarna. Ta bort den ursprunliga sprajten och rita det första racket genom att trycka på penseln vid Ny sprajt. Se till att göra en för varje spelare och att varje racket ska utgöra en egen sprajt. Döp dina nya sprajtar till något passande, exempelvis Racket1 och Racket2.

Skapa skript för varje sprajt så att de kan röra sig upp och ner med olika tangenter. Klicka på den sprajt som du vill modifiera och skapa ett script där.

Ledtråd 1: Om tangenten ‘w’ är nedtryckt, ändra koordinaten y med 10

Ledtråd 2

När startknappen klickas på:
    Om tangenten 'w' är nedtryckt:
        ändrar koordinaten y med 10
    Om tangenten 's' är nedtryckt:
          ändrar koordinaten y med -10

Ditt pong-spel blir ju roligast med två spelare. Gör antingen samma sak för den andra sprajten (fast med andra tangenter för att röra den upp och ned) eller modifiera scriptet så datorn blir din motståndare.

Testkör! Gör programmet vad du vill att det ska göra? Se till att du förstår programflödet. När anropas skripten som du lagt på dina sprajts?

Del 2 - Lägg till en boll

Nästa steg är att skapa bollen. Skapa en nen ny sprajt. Rita en ny sprajt eller välj en passande i sprajt-biblioteket. Bollen ska studsa mellan våra två rackets. I bollens script vill vi först och främst att den ska visa sig på scenen när vi trycker på startflaggan och sedan att sen ska börja röra på sig i en slumpad riktning.

Ledtråd 1:

När startknappen klickas på:
    Visa bollsprajten
    Låt bollen peka i (slumptal 0 till 360) riktning
    Starta en loop där
        Bollen rör sig 10 steg
        ...
    Slut på loop

Ledtråd 2:

När startknappen klickas på:
    Visa bollsprajten
    Låt bollen peka i (slumptal 0 till 360) riktning
    Starta en loop där
        Bollen rör sig 10 steg
        Bollen studsar vid kanten
            Om (rör Racket1) då:
                 Vänd (slumptal 110 till 250 grader)
            Slut på villkor
            Om (rör Racket2) då:
                 Vänd (slumptal 110 till 250 grader)
    Slut på loop 

Del 3 - Poäng

Nu har vi en boll som kan studsa runt på scenen och vi kan få bollen att flytta på sig med hjälp av våra rackets. Dags att införa poäng i vårt spel. Lägg till två poängvariabler genom att gå in på Data och klicka på “Skapa en ny variabel” och döp dem till “Poäng (spelare 1)” och “Poäng (spelare 2)”. I bollens script lägger vi till att poängen ska sättas till 0 för både spelare 1 och spelare 2 när vi klickar på startflaggan, innan bollen visas.

Poäng ska delas ut när bollen studsar in bakom någon av racket-sprajterna, och går utanför planen. För att bollen ska känna igen att den har tagit sig utanför planen måste vi lägga till två nya sprajts, som vi kan kalla Ute1 och Ute2. Placera dina ute-sprajtar bakom varje racket.

I scripten för ute-sprajtarna lägger vi till någonting som gör att poäng-variabeln räknas upp varje gång bollen rör ute-området:

När startknappen klickas på:
    Starta en loop där
       Vi väntar tills bollen rör ute2-området
       Då ändrar vi poängen spelare 1 med 1
    Slut på loop 

… och gör samma sak för den andra ute-sprajten, fast här gäller ju poängökningen istället spelare 2.

Du har nu skapat ditt första egna spel. Fungerar det som det ska?

Del 4 - för VG

För VG, implementera minst en av följande expansioner till ditt script:

  • Att få spelet att sluta när viss poäng har uppnåtts
  • Öka bollens hastighet efter en viss tid
  • Slumpmässigt uppdykande bonussprajter som ger extra poäng om man prickar dem med bollen
  • Utveckla spelet till att gälla fyra spelare

Komplettering vid missat redovisningstillfälle

Missat redovisningstillfälle kompletteras genom att svara på följande frågor i

  • en skriftlig komplettering med illustrerande screenshots från ditt Scratch-projekt (max 1000 ord lång), eller
  • screencast där du svarar på frågorna samtidigt som du visar relevanta delar av ditt Scratch-projekt (max 5 minuter lång)

Skicka länk till ditt Scratch-projekt.

Kompletteringsfrågor

  • Vad är det som får rackettet att röra på sig? Vilken kod? När körs koden?
  • Är det skillnad på skripten som ligger på racket 1 och racket 2?
  • Var finns koden som gör att det studsar mot
    • racket 1
    • racket 2
    • kanten
  • Beskriv hur poäng för spelare 1 räknas. Vad krävs (måste inträffa) för att spelare 1 ska få poäng?
  • Om du implementerat någon/några av VG-uppgifterna, demonstrera dem och förklara de skript som är inblandade.

Sidansvarig: Jody Foo
Senast uppdaterad: 2017-09-29