Grundlæggende opgaver
Indholdsfortegnelse
- G1: Interaktion med musen
- G2: Rækkefølgens betydning
- G3: Forståelseopgave
- G4: if/else 1
- G5: if/else 2
- G6: && operatoren
- G7: mouseIsPressed
- G8: keyIsDown (piletaster)
- G9: keyIsDown (bogstaver)
- G10: mousePressed
- G11: Koordinatsystemet
- G12: Søgning i reference
- G13: for loop
- G14: Kode rækkefølge
- G15: Objekt bevægelse
- G16: Objekt retningsskift 1
- G17: Objekt retningsskift 2
- G18: Objekt retningsskift 3
- G19: random()
- G20: Opret objekt 1
- G21: Flyt objekt 1
- G22: Flyt objekt 2
- G23: Objekt referencer
- G24: Arrays
- G25: Objekter i arrays
- G26: Startværdier 1
- G27: Startværdier 2
- G28: Opret objekt 2
- G29: On/off knap
- G30: Fjern objekt fra skærm
- G31: Fjern objekt fra array
- G32: Objekt kommunikation 1
- G33: Følg cursor
- G34: Objekt kommunikation 2
- G35: map() funktionen
- G36: Peg mod punkt
- G37: Skyd med objekt
- G38: Stjernehimmel
Opgave G1 - Interaktion med musen
Lav et program så en hvid firkant med kraftig rød ramme følger musen. Baggrunden skal være grå. Herudover skal du skrive “mouseX:” samt værdien af mouseX ud til Console.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/XE7hQNMRp
Hint
Søg på stroke, rect, strokeWeight, background og mouseX i reference f.eks. https://p5js.org/reference/#/p5/stroke
Hint
Hvis man tegner flere ting på skærmen, så bliver de tegnet i samme rækkefølge som de står i koden.
Hint
Man kan skrive til console således: console.log("mouseX: " + mouseX)
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/XE7hQNMRp
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G2 - Rækkefølgens betydning for kodelinierne
Lav et program så en gul firkant uden ramme følger musen. Musens cursor skal være i midten af kassen. Baggrunden skal være lilla. Der skal også være blå ellipse og en firesidet rød polygon. Den gule firkant skal bevæge sig ind over den blå ellipse men bag ved den røde polygon.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/LWKm_2eTG
Hint
Se farve koder her: https://www.w3schools.com/colors/colors_picker.asp
Hint
Søg efter ellipse, noStroke og fill i reference
Hint
Slå op i reference (under “2D Primitives” (Shapes)) og find ud af hvad en polygon er og hvordan man tegner den.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/LWKm_2eTG
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G3 - Forståelseopgave
Lav et program så der er tre bolde som bevæger sig forskelligt afhængig af hvor langt til hhv. højre og venstre man har sin muse cursor. En blå bold skal have en fast y koordinat men følge muse cursoren i x koordinaten. En grøn bold skal have en fast y koordinat man x koordinaten skal kun være det halve af musens x koordinat. Den røde bold skal bevæge sig op og ned når man bevæger muse curoren til højre og venstre.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/Z27mhTg_n
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/Z27mhTg_n
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G4 - “if” og “else”. Part 1
Lav et program hvor canvas er delt i to lige store dele. Når muse cursoren er over den venstre halvdel, så skal den venstre halvdel farves sort og når muse cursoren er over den højre halvdel, så skal den højre halvdel være sort (som vist nedenfor)
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/YhWEoypjP
Hint
Søg efter if-else i reference
Hint
Når musen er i højre side, så tegn en sort kasse til højre, og når musen er i venstre side, så tegn en sort kasse til venstre.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/YhWEoypjP
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G5 - “if” og “else”. Part 2
Løs samme opgave som Opgave G4 men hvor canvas er delt i tre lige store dele.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/4vyCamh3i
Hint
Man kan skrive:
if (mouseX < 100) {
…
} else if (mouseX < 200) {
…
}
else {
…
}
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/4vyCamh3i
Opgave G6 - “&&” (og) operatoren
Tegn et canvas som vist her. Hvis muse cursoren er over firkanten i midten, så skal den farves hvid.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/EBgr-HhtzW
Hint
Hvis flere betingelser skal være opfyldt i en if statement kan man skrive:
if ((mouseX > 100) && (mouseY > 100)){
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/EBgr-HhtzW
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G7 - mouseIsPressed
Tegn et canvas som vist her. Hvis muse cursoren er over firkanten i midten og man samtidig holder muse knappen nede, så skal firkanten farves hvid
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/Sb_M_w-Fq
Hint
Søg på mouseIsPressed
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/Sb_M_w-Fq
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G8 - keyIsDown (piletasterne)
Tegn et canvas som vist her. Hvis man holder venstre pilen på tastaturet nede, så skal firkanten bevæge sig til venstre (Husk at man skal klikke på canvas med musen før det bliver aktivt)
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/tB3LbyDVt
Hint
Søg på keyIsDown
Hint
Lav en variabel ved navn x som holder styr på x-koordinaten. Dette gøres ved på aller første linie at skrive “let x = 25”
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/tB3LbyDVt
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G9 - keyIsDown (bogstaver)
Tegn et canvas som vist her. Hvis man holder ‘s’ nede, så skal firkanten blive større og hvis man holder ‘m’ nede, så skal den blive mindre (Husk at man skal klikke på canvas med musen før det bliver aktivt)
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/D1CYgx4Z8
Hint
Søg på key i reference
Hint
Lave en variabel s som holder styr på størrelsen
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/D1CYgx4Z8
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G10 - mousePressed
Tegn et canvas med sort baggrund. Hver gang man klikker med musen skal baggrunden blive lidt mere grå/hvid. Den skal ikke blive hurtig hvid bare fordi man holder muse knappen nede (Husk at man skal klikke på canvas med musen før det bliver aktivt).
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/o0ZSTNvl3
Hint
Søg på mousePressed
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/o0ZSTNvl3
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G11 - Forståelse af koordinat systemet
Tegn en trekant der fylder en fjerdedel af canvasa
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/-KfaVIM-E
Note: Husk at tegne koordinatsystemet op først.
Opgave G12 - Søgning i reference
Tegn tre cirkler ved siden af hinanden som bliver mere og mere gennemsigtige
Hint
I reference står følgende syntaks for fill: fill(v1, v2, v3, [alpha]) hvilket betyder at den fjerde parameter (alpha) er valgfri. Den skal i spil her.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/EfwBXMShM
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G13 - for loop
Byg videre på opgave G12. Tegn 5 cirker ved siden af hinanden som bliver mere og mere gennemsigtige ved brug af et for loop. Se https://p5js.org/reference/p5/for/ i reference for syntaksen.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/f4bPmZLeu
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G14 - Kode rækkefølgens betydning
Tegn en rød bold med kraftig grå ramme, to grønne bolde uden ramme og en stor tekst uden ramme hvor der står “Hello” med hvid skrift.
Hint
Søg på strokeWeight, textSize og text
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/YP9C6LjGp
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G15 - Hvordan får man en bold til selv at bevæge sig
Tegn en blå bold der langsomt men sikkert af sig selv bevæger sig mod højre
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/xyr39IqsA
Hint
Søg efter width
Hint
Lav en variabel x og udfør “x = x + 1” i draw funktionen
Hint
x += 1” er det samme som “x = x + 1”
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/xyr39IqsA
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G16 - Hvordan får man en bold til at vende rundt
Tilret løsningen fra Opgave G15, så bolden vender rundt og bevæger sig den anden vej når den når til højre side af canvas
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/Wx6ZGCq0I
Hint
lav en variabel ved navn retning som starter med at være 1. Hvis bolden når ud over højre side, så skal retning ganges med minus en. Når vi lægger 1 (eller f.eks. 5) til x så ganger vi bare med retning således at fortegnet på det vi lægger til x skifter, dvs. at vi lægger et negativt tal til x når bolden bevæger sig med venstre
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/Wx6ZGCq0I
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G17 - Hvordan får man en bold til at vende rundt 2
Tilret løsningen fra Opgave G16, så bolden også vender rundt og bevæger sig den anden vej når den når til venstre side af canvas
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/GSJEvLL87
Hint
Operatoren "||" betyder eller
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/GSJEvLL87
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G18 - Hvordan får man en bold til at vende rundt 3
Tilret løsningen fra Opgave G17, så bolden bevæger sig rundt som på et billard bord.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/UkgoL13Sa
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/UkgoL13Sa
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G19 - Brug af random (tilfældighedsgenerator)
Tilret løsning fra Opgave G17, så bolden skifter til en tilfældig farve når den skifter retning.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/ZrVdS-uBT
Hint
random(0, 255) returnerer et tilfældigt tal mellem 0 og 255
Hint
Lav variabler der holder farven for hhv. rød, grøn og blå
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/ZrVdS-uBT
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G20 - Hvordan laver man et objekt 1
Lav en klasse ved navn Bold. Bold klassen skal have variablerne this.x og this.y defineret i constructor metoden, se hintet nedenfor. Når man skriver “this.” foran en variabel betyder det at det er objektets variabel at man refererer til. Den skal også have en metode ved navn show() som tegner en blå cirkel. Opret (i setup) et objekt ved navn bold som er af klassen/typen Bold og vis bolden i draw().
Hint
Link til noget dokumentation: https://p5js.org/reference/p5/Object/
Hint
A class is defined like this:
class Ball {
constructor(){
this.x = 30
this.y = 30
}
show(){
fill(0,0,255, 200)
circle(this.x, this.y, 30)
}
}
Hint
Du må gerne se i løsningseksemplet for at se syntaksen for hvordan man laver en bold
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/sAOYYbgpL
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G21 - Hvordan får man et objekt til at flytte sig 1
Tilret løsningen fra Opgave G20. Lav en metode i Bold ved navn move() som bevæger bolden mod højre. Kald move() metoden i draw således at bolden bevæger sig mod højre.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/_4Izl2uaF
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/_4Izl2uaF
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G22 - Hvordan får man et objekt til at flytte sig 2
Tilret løsningen fra Opgave G21, så move bevæger en bold rundt som en billardkugle. Tilret så bolden starter på en tilfældig x og y koordinat mellem 50 og 350 samt at det er tilfældig hvilken retning den starter med at bevæge sig i.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/M3DDYyviB
Hint
Se opgave G18
Hint
Alle variabler der har noget med bolden at gøre skal defineres i constructoren. Husk at skrive this foran alle de variabler der hører til objektet.
Hint
Lave en variabel ved navn xDirection (Dansk: retning i x aksen). Til at starte med sættes xDirection til 1. Dette betyder at bolden skal bevæge sig mod højre. Hvis bolden når helt ud til højre kan man gange xDirection med minus 1. Hvis man ganger xDirection med det tal som bestemmer hvor meget man vil flytte bolden ad gangen, så vil bolden bevæge sig i den rigtige retning.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/M3DDYyviB
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G23 - Hvordan virker det når en funktion modtager en reference til et objekt og manipulerer det.
Se på løsningseksemplet og forstå koden. Forklar koden til en anden.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/rbA8TaLDv
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/rbA8TaLDv
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G24 - Hvordan virker et Array (tabel)
Lav et program som putter fire navne ind i et array (tabel) og skriver dem ud i draw ved brug at et for loop.
Hint
Det er en ny syntax. Du må gerne se på løsningseksemplet.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/Qh15SAR8i
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G25 - Hvordan putter man objekter i et Array
Tilret løsningen fra Opgave G24 så man putter bolde i arrayet i stedet for tekster. Bold klassen kan kopieres fra Opgave G23. Vigtigt: Når man bruger en objekt orienteret programmeringsstil, så er det nemt at genbruge klasser i andre programmer.
Hint
Hvis det er lidt svært må du gerne se på løsningseksemplet.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/ZPTVyUO3J
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G26 - Hvordan giver man start værdier når et objekt oprettes 1
Tilret løsningen for opgave G20 så der oprettes to bolde. Når en bold oprettes skal man angive hvor bolden skal pladseres. Den ene bold skal pladseres øverst til venstre og den anden bold skal pladseres nederst til højre.
Hint
Det er en ny syntax. Du må gerne se på løsningseksemplet.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/FIZ9H54on
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G27 - Hvordan giver man start værdier når et objekt oprettes 2
Tilret løsningen for opgave G26, så boldene oprettes med forskellig farve.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/SVRwK0mye
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G28 - Hvordan laver man et objekt 2
Løs samme opgave som Opgave G1, men hvor firkanten er lavet som et objekt i stedet.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/tCDuWsLsP
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/tCDuWsLsP
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G29 - Hvordan laver man en on/off knap
Vi skal i denne øvelse lave en kontakt som til at starte med er slukket. Når man trykker på den så er den tændt og hvis man herefter trykker på den igen, så er den slukket.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/irak79Ufe
Du skal kombinere det du har lært i hele tre opgaver.
I Opgave G28 lavede vi en firkant som et objekt
I Opgave G6 lærte vi hvordan man tester for om muse cursoren er inde over en firkant
I Opgave G7 lærte vi hvordan man tester for om museknappen er trykket ned
Hint
Søg på mouseClicked (i reference)
Hint
Lav et Klasse ved navn OnOffButton. I dens constructor metode skal du definere variablerne this.x, this.y, this.w (bredde), this.h (højde) samt en boolean variabel ved navn isClicked (En boolean variabel kan altid kun være true eller false). Klassen skal have metoden checkIfPressed som skal kaldes fra mouseClicked funktionen. I checkIfPressed kan du have følgende linie “this.isClicked = !this.isClicked”. ! betyder ikke dvs. at vi sætter this.isClicked til det modsatte af hvad den er. Hvis den har værdien false, så bliver den true og omvendt. I show() metoden skal vi have en “if” betingelse der tester på this.isClicked.
Hint
Du må gerne kikke på løsningseksemplet er lidt for svær at lave uden hjælp
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/irak79Ufe
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G30 - Hvordan fjerner man et objekt fra skærmen
Opret to bold (objekter) og tegn dem på skærmen. Hvis man klikker på en bold skal den forsvinde.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/ixyccu5DY
Hint
Bold klassen skal ud over variablerne this.x, this.y, this.r også have en boolean variabel ved navn this.exists som til at starte med er true. Klassen skal have en metode som hedder removeIfClicked. Her skal du lave følgende kode:
if (dist(this.x, this.y,mouseX, mouseY) < this.r){
this.exists = false
}
Den indbyggede p5js funktion “dist” finder afstanden mellem to punkter. Hvis afstanden mellem midten af bolden og muse cursoren
er mindre end radius af cirklen, så må muse cursoren være inden for cirklen.
Hint
Søg inspiration i Opgave 29 for hvordan man se om der er klikket på et objekt.
Hint
removeIfClicked skal kaldes fra mouseClicked funktionen.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/ixyccu5DY
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G31 - Hvordan fjerner man et objekt fra et Array
Vi skal her lære at fjerne objekter fra et Array. Tag udgangspunkt i løsningen fra Opgave G25. Tilret så en bold fjernes hvis der klikkes på den.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/E6lZycruy
Hint
Bold klassen skal have en metode ved navn isClicked skal returnere true hvis der er klikket inden for bolden og som ellers returnere false.
Hint
Benyt mousePressed som du gjorde i Opgave G10. Her skal du have følgende kode som løber arrayet med bolde igennem bagfra og fjerner en bold hvis der er klikket på den.
for (let i = bolde.length - 1; i >= 0; i--) {
if (bolde[i].isClicked()){
// JavaScript functionen splice kan fjerne et element fra Arrayet
bolde.splice(i,1)
}
}
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/E6lZycruy
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G32 - Hvordan kommunikerer to objekter med hinanden
Du skal her arbejde med hvordan to objekter (af samme klasse) kan kommunikere med hinanden. Tag udgangspunkt i løsningen fra Opgave G25. Lav en ekstra bold der er meget større end de andre. Hvis den store bold og en af de små bolde støder sammen, så skal den lille bold forsvinde.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/5AiddKYCI
Hint
Bold klassen skal have følgende metode:
intersects(other) {
// Bemærk at denne linie returnerer true hvis bolden og den anden bold (other) rører ved hinanden
return dist(this.x, this.y, other.x, other.y) < this.r + other.r;
}
Når alle boldene løbes igennem i draw metoden, så skal man for hver bold kalde dens intersects metode med navnet på den store bold som argument.
Hint
Du må gerne kikke i løsningseksemplet hvis du synes at opgaven er lidt svær.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/5AiddKYCI
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G33 - Lav et objekt der langsomt følger efter muse cursoren
Lav et bold objekt der langsomt følger efter muse cursoren. Hvis bolden rører muse cursoren skal den vokse sig større.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/ojx4Y9My-
Hint
I boldens move metode skal du gå hhv. til højre og venstre afhængig af hvor bolden er i forhold til muse cursoren. Det samme med op og ned.
Hint
Den skal også have en grow metode som tester på hvornår den skal vokse.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/ojx4Y9My-
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G34 - Hvordan kommunikerer mange objekter med hinanden
Lad os oprette en helt masse bolde der flyver rundt i et rum. Hvis de rammer hinanden skal de ændre retning.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/-9GUjLQzB
Hint
Løsningen er lidt svær. Du må gerne se på løsningseksemplet og læse kommentarer for at forstå hvordan man kan løse denne opgave.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/-9GUjLQzB
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G35 - map funktionen
Lav et objekt som er en bold der langsomt men sikkert af sig selv bevæger sig mod højre og skifter retning når den når til hhv. højre og venstre side af canvas. Herudover skal der være en kasse nederst i højre hjørne (på 100x100) der skal fungere som minimap. MiniMappet skal med en lille bold (et objekt ved navn minibold) vise hvor den store bold er på canvas.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/3trrEYOSIt
Hint
Den indbyggede p5js “map” funktion mapper den første værdi (dvs. den store bolds x koordinat) således at intervallet 0 til 400 bliver mappet over i intervallet 300 til 400.
Hint
Du kan søge efter “map” funktionen i reference.
Hint
Hvis opgaven er lidt svær må du gerne se i løsningseksemplet.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/3trrEYOSIt
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G36 - Peg et objekt mod et punkt
Tegn et objekt så man tydeligt kan se hvilken retning det peger. Gør så objektet altid peger mod muse cursoren.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/h5eC38rJ_
Hint
Hvis opgaven er lidt svær så må du gerne se i løsningseksemplet.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/h5eC38rJ_
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G37 - Hvordan får man et objekt til at skyde en lille bold afsted
Tilret Opgave G36 så vores Hero skyder en lille gul bold i den retning som Hero peger hver gang der er gået to sekunder.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/uVC3-3jMh
Hint
Hvis opgaven er lidt svær så må du gerne se i løsningseksemplet.
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/uVC3-3jMh
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Opgave G38 - Lav en stjernehimmel
Lav en stjernehimmel hvor stjernerne bevæger sig med forskellig hastighed. De stjerner der flyver hurtigt skal være størst og klarest.
Afprøv funktionaliteten: https://editor.p5js.org/JensValdez/full/ybWzmAXed
Løsningseksempel: https://editor.p5js.org/JensValdez/sketches/ybWzmAXed
Hvad nu!!: Find en eller to at arbejde sammen med. I skal nu give hinanden en opgave hvor i bruger det i har lært. Alternativt kan i eksperimentere lidt eller lave det i har lyst til indtil i starter på næste opgave.
Basic p5js Exercises
Table of Contents
- G1: Mouse Interaction
- G2: Code Sequence Importance
- G3: Understanding Exercise
- G4: if/else 1
- G5: if/else 2
- G6: && Operator
- G7: mouseIsPressed
- G8: keyIsDown (arrow keys)
- G9: keyIsDown (letters)
- G10: mousePressed
- G11: Coordinate System
- G12: Reference Searching
- G13: for loop
- G14: Code Sequence
- G15: Object Movement
- G16: Object Direction Change 1
- G17: Object Direction Change 2
- G18: Object Direction Change 3
- G19: random()
- G20: Creating Object 1
- G21: Moving Object 1
- G22: Moving Object 2
- G23: Object References
- G24: Arrays
- G25: Objects in Arrays
- G26: Initial Values 1
- G27: Initial Values 2
- G28: Creating Object 2
- G29: On/off Button
- G30: Remove Object from Screen
- G31: Remove Object from Array
- G32: Object Communication 1
- G33: Follow Cursor
- G34: Object Communication 2
- G35: map() Function
- G36: Point Object to Point
- G37: Object Shooting
- G38: Starry Sky
Exercise G1 - Mouse Interaction
Create a program where a white square with a thick red border follows the mouse. The background should be gray. Additionally, write "mouseX:" and the value of mouseX to the Console.
Try the functionality: https://editor.p5js.org/JensValdez/full/Jr9VUuOVi
Hint
Look up stroke, rect, strokeWeight, background, and mouseX in the reference, e.g., https://p5js.org/reference/#/p5/stroke
Hint
When drawing multiple things on the screen, they are drawn in the same order as they appear in the code.
Hint
You can write to the console like this: console.log("mouseX: " + mouseX)
Solution example: https://editor.p5js.org/JensValdez/sketches/Jr9VUuOVi
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G2 - Code Sequence Importance
Create a program where a yellow square without a border follows the mouse. The mouse cursor should be in the center of the square. The background should be purple. There should also be a blue ellipse and a four-sided red polygon. The yellow square should move over the blue ellipse but behind the red polygon.
Try the functionality: https://editor.p5js.org/JensValdez/full/MQ4rprVzY
Hint
See color codes here: https://www.w3schools.com/colors/colors_picker.asp
Hint
Search for ellipse, noStroke and fill in the reference
Hint
Look in the reference (under "2D Primitives" (Shapes)) and find out what a polygon is and how to draw it.
Solution example: https://editor.p5js.org/JensValdez/sketches/MQ4rprVzY
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G3 - Understanding Exercise
Create a program with three balls that move differently depending on how far left or right your mouse cursor is. A blue ball should have a fixed y-coordinate but follow the mouse cursor on the x-coordinate. A green ball should have a fixed y-coordinate but its x-coordinate should only be half of the mouse's x-coordinate. The red ball should move up and down when you move the mouse cursor left and right.
Try the functionality: https://editor.p5js.org/JensValdez/full/HeGWk9hXX
Solution example: https://editor.p5js.org/JensValdez/sketches/HeGWk9hXX
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G4 - if/else 1
Create a program where the canvas is divided into two equal parts. When the mouse cursor is over the left half, the left half should be colored black, and when the mouse cursor is over the right half, the right half should be black (as shown below).
Try the functionality: https://editor.p5js.org/JensValdez/full/t6vGfd_qX
Hint
Look up if-else in the references
Hint
When the mouse is on the right side, draw a black box on the right, and when the mouse is on the left side, draw a black box on the left.
Solution example: https://editor.p5js.org/JensValdez/sketches/t6vGfd_qX
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G5 - if/else 2
Solve the same task as Exercise G4 but where the canvas is divided into three equal parts.
Try the functionality: https://editor.p5js.org/JensValdez/full/1qZ8McYdg
Hint
You can write:
if (mouseX < 100) {
…
} else if (mouseX < 200) {
…
}
else {
…
}
Solution example: https://editor.p5js.org/JensValdez/sketches/1qZ8McYdg
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G6 - && (AND) Operator
Draw a canvas as shown here. If the mouse cursor is over the square in the middle, it should be colored white.
Try the functionality: https://editor.p5js.org/JensValdez/full/1ZYSw-kQm
Hint
Use && (AND) to check if the mouse cursor is both within the x and y coordinates of the square.
if ((mouseX > 100) && (mouseY > 100)){
Solution example: https://editor.p5js.org/JensValdez/sketches/1ZYSw-kQm
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G7 - mouseIsPressed
Draw a canvas as shown here. If the mouse cursor is over the square in the middle and you're holding down the mouse button at the same time, the square should turn white.
Try the functionality: https://editor.p5js.org/JensValdez/full/YEQFMnWAu
Hint
Look up mouseIsPressed in the reference
Solution example: https://editor.p5js.org/JensValdez/sketches/YEQFMnWAu
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G8 - keyIsDown (arrow keys)
Draw a canvas as shown here. If you hold down the left arrow key on the keyboard, the square should move to the left. (Remember that you need to click on the canvas with the mouse first to make it active)
Try the functionality: https://editor.p5js.org/JensValdez/full/8L2bwgf3g
Hint
Look up keyIsDown in the reference
Hint
Create a variable called x that keeps track of the x-coordinate. Do this by writing "let x = 25" on the very first line
Solution example: https://editor.p5js.org/JensValdez/sketches/8L2bwgf3g
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G9 - keyIsDown (letters)
Draw a canvas as shown here. If you hold down 's', the square should get larger, and if you hold down 'm', it should get smaller (Remember that you need to click on the canvas with the mouse first to make it active)
Try the functionality: https://editor.p5js.org/JensValdez/full/leEupVrtF
Hint
Look up key in the reference
Hint
Create a variable s that keeps track of the size
Solution example: https://editor.p5js.org/JensValdez/sketches/leEupVrtF
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G10 - mousePressed
Draw a canvas with a black background. Each time you click with the mouse, the background should become slightly more gray/white. It should not turn white quickly just because you hold the mouse button down (Remember that you need to click on the canvas with the mouse first to make it active).
Try the functionality: https://editor.p5js.org/JensValdez/full/pmsrxBUYC
Hint
Look up mousePressed
Solution example: https://editor.p5js.org/JensValdez/sketches/pmsrxBUYC
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G11 - Understanding the Coordinate System
Draw a triangle that fills a quarter of the canvas
Solution example: https://editor.p5js.org/JensValdez/sketches/Z96nXYLr6
Note: Remember to draw out the coordinate system first.
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G12 - Searching in Reference
Draw three circles next to each other that become more and more transparent
Hint
In the reference, the syntax for fill is: fill(v1, v2, v3, [alpha]) which means the fourth parameter (alpha) is optional. That's the one you need to use here.
Solution example: https://editor.p5js.org/JensValdez/sketches/b5mRyijFt
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G13 - for loop
Build on Exercise G12. Draw 5 circles next to each other that become more and more transparent using a for loop. See https://p5js.org/reference/p5/for/ in the reference for syntax.
Solution example: https://editor.p5js.org/JensValdez/sketches/8hAQIpaU
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G14 - Code Sequence Importance
Draw a red circle with a thick gray outline, two green circles without outlines, and a large text without an outline that says "Hello" in white.
Hint
Search for strokeWeight, textSize, and text
Solution example: https://editor.p5js.org/JensValdez/sketches/3dBOE-ebb
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G15 - How to Make an Object Move by Itself
Draw a blue ball that slowly but steadily moves to the right by itself
Try the functionality: https://editor.p5js.org/JensValdez/full/hYIRVvk6m
Hint
Look up width in the reference
Hint
Create a variable x and execute "x = x + 1" in the draw function
Hint
"x += 1" is the same as "x = x + 1"
Solution example: https://editor.p5js.org/JensValdez/sketches/hYIRVvk6m
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G16 - Object Direction Change 1
Modify the solution from Exercise G15 so that the ball turns around and moves in the opposite direction when it reaches the right side of the canvas.
Try the functionality: https://editor.p5js.org/JensValdez/full/md754qAH8
Hint
Create a variable called 'direction' that starts with a value of 1. If the ball reaches the right side, multiply 'direction' by -1. When adding to x, multiply by 'direction' so that the sign of what we add to x changes, meaning we add a negative number to x when the ball is moving left.
Solution example: https://editor.p5js.org/JensValdez/sketches/md754qAH8
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G17 - Object Direction Change 2
Modify the solution from Exercise G16 so that the ball also turns around and moves in the opposite direction when it reaches the left side of the canvas.
Try the functionality: https://editor.p5js.org/JensValdez/full/KcEuBzzMN
Hint
The operator "||" means OR
Solution example: https://editor.p5js.org/JensValdez/sketches/KcEuBzzMN
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G18 - Object Direction Change 3
Modify the solution from Exercise G17 so that the ball moves around like on a billiard table.
Try the functionality: https://editor.p5js.org/JensValdez/full/c6bbSnWkR
Solution example: https://editor.p5js.org/JensValdez/sketches/c6bbSnWkR
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G19 - random()
Modify the solution from Exercise G17 so the ball changes to a random color when it changes direction.
Try the functionality: https://editor.p5js.org/JensValdez/full/akF-RW1qp
Hint
random(0, 255) returns a random number between 0 and 255
Hint
Create variables to hold the color for red, green, and blue
Solution example: https://editor.p5js.org/JensValdez/sketches/akF-RW1qp
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G20 - Creating Object 1
Create a class called Ball. The Ball class should have the variables this.x and this.y for position. In setup(), create a variable called ball that is an instance of the Ball class, and display the ball in draw().
Hint
Link to some documentation: https://p5js.org/reference/p5/Object/
Hint
A class is defined like this:
class Ball {
constructor(){
this.x = 30
this.y = 30
}
show(){
fill(0,0,255, 200)
circle(this.x, this.y, 30)
}
}
Hint
You are allowed to look in the solution if it tricky.
Solution example: https://editor.p5js.org/JensValdez/sketches/9fQ7kH9eh
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G21 - Moving Object 1
Modify the solution from Exercise G20. Create a method in the Ball class called move() that makes the ball move to the right. Call the move() method in draw() so that the ball moves across the screen.
Try the functionality: https://editor.p5js.org/JensValdez/full/FShufVA-F
Solution example: https://editor.p5js.org/JensValdez/sketches/FShufVA-F
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G22 - Moving Object 2
Modify the solution from Exercise G21 so that the move() method moves the ball around like a billiard ball. Adjust so the ball starts at a random x and y coordinate between 50 and 350, and it starts moving in a random direction.
Try the functionality: https://editor.p5js.org/JensValdez/full/Z3I-Vl7dh
Hint
See Exercise G18
Hint
All variables related to the ball must be defined in the constructor. Remember to write "this" before all variables that belong to the object.
Hint
Create a variable called xDirection. Initially, set xDirection to 1. This means the ball should move to the right. If the ball reaches the right edge, multiply xDirection by -1. If you multiply xDirection by the number that determines how much to move the ball at a time, the ball will move in the correct direction.
Solution example: https://editor.p5js.org/JensValdez/sketches/Z3I-Vl7dh
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G23 - Object References
Look at the solution example and understand the code. Explain the code to someone else.
Try the functionality: https://editor.p5js.org/JensValdez/full/M-KkFfFXR
Solution example: https://editor.p5js.org/JensValdez/sketches/M-KkFfFXR
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G24 - Arrays
Create a program that puts four names into an array and prints them in draw() using a for loop.
Hint
This is a new syntax. You can look at the solution example.
Solution example: https://editor.p5js.org/JensValdez/sketches/CEi9my8x6
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G25 - Objects in Arrays
Modify the solution from Exercise G24 to store balls in the array instead of text. The Ball class can be copied from Exercise G23. Important: When using an object-oriented programming style, it's easy to reuse classes in other programs.
Hint
If it's a bit difficult, you can look at the solution example.
Solution example: https://editor.p5js.org/JensValdez/sketches/eKUJx8jdr
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G26 - Initial Values 1
Modify the solution from Exercise G20 to create two balls. When a ball is created, you should specify where to place it. One ball should be placed in the top-left corner and the other in the bottom-right corner.
Hint
This is a new syntax. You can look at the solution example.
Solution example: https://editor.p5js.org/JensValdez/sketches/5fVC4QjaE
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G27 - Initial Values 2
Modify the solution from Exercise G26 so that the balls are created with different colors.
Solution example: https://editor.p5js.org/JensValdez/sketches/rBiVhnhdm
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G28 - Creating Object 2
Solve the same task as Exercise G1, but make the square an object instead.
Try the functionality: https://editor.p5js.org/JensValdez/full/-xEkHMtWG
Solution example: https://editor.p5js.org/JensValdez/sketches/-xEkHMtWG
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G29 - On/off Button
In this exercise, we need to create a switch that is initially turned off. When clicked, it turns on, and if clicked again, it turns off.
Try the functionality: https://editor.p5js.org/JensValdez/full/cAUHYBREm
You'll need to combine what you've learned in three different exercises:
In Exercise G28, we created a square as an object.
In Exercise G6, we learned how to test if the mouse cursor is over a square.
In Exercise G7, we learned how to test if the mouse button is pressed.
Hint
Search for mouseClicked (in the reference)
Hint
Create a class called OnOffButton. In its constructor method, define the variables this.x, this.y, this.w (width), this.h (height), and a boolean variable called isClicked (A boolean variable can only be true or false). The class should have a checkIfPressed method that is called from the mouseClicked function. In checkIfPressed, you can have the line "this.isClicked = !this.isClicked". ! means "not" so we set this.isClicked to the opposite of what it is. If it has the value false, it becomes true and vice versa. In the show() method, we need an "if" condition that checks this.isClicked.
Hint
You can look at the solution example if this is too difficult to create without help.
Solution example: https://editor.p5js.org/JensValdez/sketches/cAUHYBREm
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G30 - Remove Object from Screen
Create two balls (objects) and draw them on the screen. If you click on a ball, it should disappear.
Try the functionality: https://editor.p5js.org/JensValdez/full/GeCiCAiqu
Hint
In addition to the variables this.x, this.y, this.r, the Ball class should also have a boolean variable called this.exists which is initially true. The class should have a method called removeIfClicked. Here you should have the following code:
if (dist(this.x, this.y,mouseX, mouseY) < this.r){
this.exists = false
}
The built-in p5.js function "dist" finds the distance between two points. If the distance between the center of the ball and the mouse cursor is less than the radius of the circle, then the mouse cursor must be inside the circle.
Hint
Look for inspiration in Exercise 29 for how to check if an object has been clicked.
Hint
removeIfClicked should be called from the mouseClicked function.
Solution example: https://editor.p5js.org/JensValdez/sketches/GeCiCAiqu
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G31 - Remove Object from Array
Here we will learn to remove objects from an array. Start with the solution from Exercise G25. Modify it so that a ball is removed if it is clicked.
Try the functionality: https://editor.p5js.org/JensValdez/full/u-7vP2l1S
Hint
The Ball class should have a method called isClicked that returns true if the ball has been clicked and false otherwise.
Hint
Use mousePressed as you did in Exercise G10. Here you should have the following code that loops through the array of balls backwards and removes a ball if it has been clicked:
for (let i = balls.length - 1; i >= 0; i--) {
if (balls[i].isClicked()){
// The JavaScript function splice can remove an element from the array
balls.splice(i,1)
}
}
Solution example: https://editor.p5js.org/JensValdez/sketches/u-7vP2l1S
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G32 - Object Communication 1
Here you will work on how two objects (of the same class) can communicate with each other. Start with the solution from Exercise G25. Create an extra ball that is much larger than the others. If the large ball and one of the small balls collide, the small ball should disappear.
Try the functionality: https://editor.p5js.org/JensValdez/full/KFO5e0XSo
Hint
The Ball class should have the following method:
intersects(other) {
// Note that this line returns true if the ball and the other ball (other) touch each other
return dist(this.x, this.y, other.x, other.y) < this.r + other.r;
}
When iterating through all the balls in the draw method, for each ball, call its intersects method with the name of the large ball as the argument.
Hint
You can look at the solution example if you find this exercise a bit difficult.
Solution example: https://editor.p5js.org/JensValdez/sketches/KFO5e0XSo
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G33 - Follow Cursor
Create a ball object that slowly follows the mouse cursor. If the ball touches the mouse cursor, it should grow larger.
Try the functionality: https://editor.p5js.org/JensValdez/full/H9rINWJpR
Hint
In the ball's move method, you should move right or left depending on where the ball is relative to the mouse cursor. Same with up and down.
Hint
It should also have a grow method that tests when it should grow.
Solution example: https://editor.p5js.org/JensValdez/sketches/H9rINWJpR
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G34 - Object Communication 2
Let's create a lot of balls that fly around in a room. If they hit each other, they should change direction.
Try the functionality: https://editor.p5js.org/JensValdez/full/ZHhYLK17p
Hint
The solution is a bit challenging. You can look at the solution example and read the comments to understand how to solve this task.
Solution example: https://editor.p5js.org/JensValdez/sketches/ZHhYLK17p
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G35 - map() Function
Create an object that is a ball that slowly but surely moves to the right by itself and changes direction when it reaches the right and left sides of the canvas. Additionally, there should be a box in the bottom right corner (100x100) that functions as a minimap. The minimap should use a small ball (an object called miniball) to show where the big ball is on the canvas.
Try the functionality: https://editor.p5js.org/JensValdez/full/cyYr29QEH
Hint
The built-in p5.js "map" function maps the first value (i.e., the large ball's x coordinate) so that the range 0 to 400 is mapped to the range 300 to 400.
Hint
You can search for the "map" function in the reference.
Hint
If the task is a bit difficult, you can look at the solution example.
Solution example: https://editor.p5js.org/JensValdez/sketches/cyYr29QEH
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G36 - Point Object to Point
Draw an object so you can clearly see which direction it's pointing. Make the object always point towards the mouse cursor.
Try the functionality: https://editor.p5js.org/JensValdez/full/36vwot4Dm
Hint
If the task is a bit difficult, you can look at the solution example.
Solution example: https://editor.p5js.org/JensValdez/sketches/36vwot4Dm
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G37 - Object Shooting
Modify Exercise G36 so that our Hero shoots a small yellow ball in the direction the Hero is pointing every two seconds.
Try the functionality: https://editor.p5js.org/JensValdez/full/RmdzKavho
Hint
If the task is a bit difficult, you can look at the solution example.
Solution example: https://editor.p5js.org/JensValdez/sketches/RmdzKavho
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.
Exercise G38 - Create a Starry Sky
Create a starry sky where the stars move at different speeds. The stars that move fastest should be largest and brightest.
Try the functionality: https://editor.p5js.org/JensValdez/full/sDH7z8Vbq
Solution example: https://editor.p5js.org/JensValdez/sketches/sDH7z8Vbq
What now!!: Find one or two people to work with. Now give each other a task where you use what you've learned. Alternatively, you can experiment a bit or do what you feel like until you start the next task.