Du er nå mest av veien gjennom denne nybegynners serien på Scratch. Du har laget et spill der brukeren jager en katt med en krabbe, katten sier 'Ouch!' når krabben nipper den, og en poengsum holdes. Spillet har noen animasjoner og holder poeng, som det viser på slutten.
I denne delen fortsetter vi å jobbe med dette prosjektet. Vi bruker en egendefinert blokk for å gjøre koden enklere og enklere å jobbe med.
Tilpassede blokker har noen bruksområder:
I denne opplæringen bruker vi de tre første tilnærmingene.
For å fullføre denne opplæringen må du:
Vi skal jobbe med prosjektet som ble opprettet i den siste delen av denne serien, på animasjoner. Vi bruker eiendommene og skriptene vi har laget så langt, og legger til flere.
Avhengig av om du jobbet sammen med den opplæringen, er det to måter å komme i gang for denne opplæringen:
Alternativt kan du bare fortsette å jobbe i det samme prosjektet du allerede har opprettet. Slik gjør du hver av disse (du trenger bare å gjøre en).
Åpne Skrap og gå til prosjektet du vil duplisere. Pass på at du har klikket på Se innsiden knappen slik at du kan se prosjektets arbeid.
Klikk på i verktøylinjen Fil> Lagre som en kopi:
Skrap vil åpne din nye kopi. Gi nytt navn til det og begynn å jobbe med det.
Logg inn på Skrap og gå til siden for prosjektet mitt på animasjoner.
Klikk på Se innsiden knappen for å se prosjektet:
Klikk nå på Remix knapp. Skrap vil lagre en duplikat av prosjektet mitt som et nytt prosjekt i kontoen din. Gi nytt navn til det, og du er god til å gå!
Først må du identifisere hvor en tilpasset blokk vil gjøre skriptene dine mer effektive. I dette prosjektet inneholder hovedskriptet for scenen noen repetisjon av to linjer:
vent 1 sek
endre timeren med -1
Dette er ikke mye gjentakende kode, så i et reelt prosjekt kan du velge å forlate det som det er, men for formålet med denne opplæringen la vi erstatte den med en egendefinert blokk.
Velg Scene og klikk på Flere blokker. Klikk på Lag en blokk knapp. Du blir presentert med Ny blokk dialogboks:
Du ser nå et nytt skript "hat" som heter Definer Count ned hvert sekund
(eller hva du har kalt det):
For å definere denne blokken må du legge til blokkene som den vil erstatte under den "hatten". Disse vil være vent 1 sek
og endre timeren med -1
blokker.
Når du har gjort det, rediger manuset med de to gjentatte blokkene i det, slik at de to blokkene blir erstattet av din egendefinerte blokk hver gang. Skriptet vil nå ha 11 blokker med kode i stedet for 14:
Dette har bare redusert koden med tre linjer i det skriptet, men du kan se hvordan hvis du brukte større rutiner eller gjentar dem oftere, for forskjellige sprites kanskje, ville det gjøre ting mer effektive. Hvis du vil lage en egendefinert blokk gjelder for alle dine sprites, opprett den i scenen.
En annen måte du kan bruke egendefinerte blokker på, er å erstatte store rutiner i skriptene, slik at skriptene dine blir kortere og enklere å administrere. Katten sprite har for øyeblikket ganske mange blokker i hovedskriptet, så la oss bruke dette prinsippet til det.
Slik ser katteskriptene ut nå:
La oss lage to tilpassede blokker: en for rutinen som ber brukeren å definere hva katten vil si, og en for rutinen som gjør at katten reagerer på å bli fanget av krabbe.
Pass på at du har valgt katten, og gå til Flere blokker seksjon. Klikk på Lag en blokk knappen, og navn din første blokk. Jeg skal kalle det: 'Bruker definerer kattelyd'.
Dra nå blokkene som kjører den rutinen til "hatten" for din egendefinerte blokk. Blokkene du trenger å flytte er følgende:
spør Skal katten mjøte eller skrike når den er nippet av krabbe? og vent
hvis svaret = meow da
si meow i 2 sekunder
ellers
hvis svar = skrik da
si skrik! i 2 sekunder
Pass på at du drar noen blokker under disse tilbake til det opprinnelige skriptet.
Legg nå til Bruker definerer kattelyd
blokkere inn i ditt opprinnelige manuskript på stedet der du tok ut blokkene over.
Gjenta dette for linjene med kode under det, og opprett en ny tilpasset blokk som heter Cat reagerer på å bli fanget
, legger blokkene til det, og legger til det nye Cat reagerer på å bli fanget
blokkere til det opprinnelige skriptet ditt.
Her ser kattens skript ut akkurat nå:
Kodenes størrelse er den samme, men ved å skille ut de to rutinene du har gjort det lettere å se hva som skjer i ditt originale skript. Dette er en teknikk som noen vil finne nyttige, mens andre kanskje foretrekker å holde fast med å holde alle blokkene dine i ett langt skript!
En annen bruk for en tilpasset blokk er å lage en rekursiv rutine, der en rutine kan kjøres inne i seg selv. Det er lettere å forklare ved å lage en.
De Bruker definerer kattelyd
egendefinert blokk som vi nettopp har definert, ber brukeren å skrive inn en lyd som katten skal gjøre. Hvis brukeren skriver 'meow' eller 'scream', reagerer manuset på det. Men hva om brukeren mistypes eller skriver noe annet? Hvis det skjer, vil vi vise en melding til brukeren og deretter stille spørsmålet på nytt. Vi kan gjøre det ved å lage Bruker definerer lyd
rutinemessig rekursiv.
Velg kattesprite og rediger Bruker definerer kattelyd
egendefinert blokk. Start med å erstatte hvis
blokkere inne i ellers
delen av hvis - ellers
blokkere med et sekund hvis - ellers
blokkere. Pass på at du kopierer betingelsene (svar = skrik
) fra originalen din hvis
blokkere inn i hvis
delen av den nye hvis - ellers
blokkere. Flytt si skrik! i 2 sekunder
blokkere inne i hvis
loop i det hvis - ellers
blokkere.
Nå i ellers
delen av hvis - ellers
blokkere, legg til disse blokkene:
si Beklager, jeg fikk ikke det i 1 sekund
sett Timer til 0
Bruker definerer kattelyd
Slik ser du skriptet ditt:
Nå, hvis brukeren skriver feil svar, vil katten si, "Beklager, jeg fikk ikke det," vil timeren nullstilles, og rutinen vil bli kjørt igjen, og spør brukeren hvilken lyd de vil at katten skal gjøre.
Tilpassede blokker er et veldig nyttig verktøy i Scratch. Som du har lært i denne opplæringen, kan du bruke dem til å lagre gjentatt et sett med blokker igjen og igjen i prosjektet ditt, eller du kan definere rutiner som du deretter legger til i et skript, noe som gjør skriptene mer overskuelige. Hvis du må gjenta en rutine hvis en tilstand er oppfylt, kan du opprette en rekursiv rutine som den du har laget for katten.
Du kan også inkludere strenge, tall og boolske innganger i dine egendefinerte blokker, noe som betyr at hver gang du legger til en blokk til et skript, kan du endre måten det fungerer på. For mer informasjon om dette, sjekk ut Scratch wiki.
Skrapeløpet ditt er nå fullført! I neste og siste del av denne serien ser vi på hvordan du kan dele arbeidet ditt og lage studioer for å jobbe sammen.