Processing Werkcollege 3 - condities

download Processing Werkcollege 3 - condities

of 39

  • date post

    14-Jul-2015
  • Category

    Technology

  • view

    217
  • download

    0

Embed Size (px)

Transcript of Processing Werkcollege 3 - condities

Dia 1

Multimedia Technology 2Lessenreeks door Tom Luyten voor Communicatie- en Multimedia Design Maastricht

Werkcollege 3ConditiesGebaseerd op het boek Learning Processing door Daniel SchiffmanEn de PowerPoint van Donald W. Smith

Condities (p.59 80)Wat is een conditie ?if, else, else ifCondities gebruikenHoorcollege 3: conditiesEr is een probleem met ons monsterWe kunnen het monster nu autonoom laten bewegen, maar we verliezen het snel uit het oogEr moet iets gebeuren wanneer het de rand voorbij gaat

Hier hebben we een conditie, of test voor nodig.conditionalsCondities (p.59 80)Wat is een conditie ?if, else, else ifCondities gebruikenLogical operatorsBeslissingsboombooleanHoorcollege 3: conditiesWat is een conditional/conditie ?Een test

Meestal een vergelijkingIs 20 groter dan 10 jaIs 10 groter dan 20 neen

Als de test WAAR is, wordt de code uitgevoerd, anders niet

Vb. In geschreven taal:Als mouseX groter is dan 10, Dan wordt de achtergrond rood.conditionalsSoorten tests die je binnen een conditional kan uitvoeren:

>groter dan=groter dan of gelijk aan 255) { r = 255; } if (r < 0) { r = 0; }

Kan geschreven worden als: r = constrain(r,0,255);constrainGoede manier om fouten te voorkomenHaal de sketch van het vierkantje erbij.

Kunnen we nu het probleem oplossen dat het uit beeld verdwijnt?

conditionalsHoe luidt de test die wij willen uitvoeren ?

In mensentaal:Als het vierkantje het venster verlaat, langs rechts, moet het van richting veranderen.

Wat weten we over de positie van het vierkant? Waar wordt die bijgehouden?- vierkantX

Wat weten we over de rechterrand van het venster ? Hoe kunnen we die aanduiden ?- width

conditionals- Dus als vierkantX groter is dan width omkeren

In code:if(vierkantX > width){vierkantX van richting veranderen}

We houden richting nu bij als +1 of ++We moeten ook de richting in een variabele stoppenAls we dan deze variabele aanpassen, kunnen we de richting benvloeden

if(vierkantX > width){richting = -richting;}vierkantX= vierkantX + richting;conditionalsHoe luidt de test die wij willen uitvoeren ?

In mensentaal:Als het vierkantje het venster verlaat, langs rechts, moet het van richting veranderen.

Wat weten we over de positie van ons vierkant? Waar wordt die bijgehouden?- vierkantX

Wat weten we over de rechterrand van het venster ? Hoe kunnen we die aanduiden ?- width

conditionalsPas het gemaakte programma aan, Zodat het vierkantje links en rechts binnen het venster blijft, Door aan de rand van richting te veranderen.conditionals

10 min.Pas het gemaakte programma aan, Zodat het vierkantje links en rechts binnen het venster blijft, Door aan de rand van richting te veranderen.conditionalsLogical operatorsWe kennen nu het simpele IF statement, Handig, maar beperkt

Wat als ik nu het volgende wil doen?- als ik 37 graden koorts heb EN ik heb hoofdpijn dokter- als ik hoofdpijn heb OF ik heb spierpijn dokter

Tijdens het programmeren:als de muis aan de rechterkant EN de onderkant van het scherm is, teken een rechtoekLogical operatorsLogical operatorsTesten of de muis links of rechts van het venster zat, deden we zo:

if (mouseX < width/2) { //voor linksr = r + 1; }

if (mouseX > width/2) { //voor rechts r = r - 1; }

Maar nu wil ik weten of mijn muis in de linkerbovenhoek zit, Hoe doe ik dat?

Logische AND&&Logische OR||Logische NIET!

Bovengenoemd voorbeeld wordt dan:

if(mouseX < width/2 && mouseY < height/2){}Logical operatorsBeslissingsboomif(x 25){println(x+is greater than 50);}Wat is de uitkomst van deze verschillende opgaven? Waarom?Opgave Cint x = 5

println(x is now + x);

if(x == 5){x = 6;}if(x == 6){x = 5;}

println(x is now + x);BeslissingsboomWat is de uitkomst van deze verschillende opgaven? Waarom?Let op het verschil tussen het gebruik van if en if, else if, else

Merk ook het verschil op tussen enkele = en dubbele ==Opgave Dint x = 5

println(x is now + x);

if(x == 5){x = 6;}Else if(x == 6){x = 5;}

println(x is now + x);ConditiesMerk ook het verschil op tussen enkele = en dubbele ==

if(x == 5){} een dubbel == teken geeft aan dat je 2 zaken met elkaar wil vergelijken, komt voor in een TEST

count = 5;een enkel = teken komt voor als je een getal aan een variabele wil toewijzen (iets in de doos stoppen)

BooleanEen boolean = een variabele waar we true of false kunnen in opslaan en onthouden.

Dit kan worden gebruikt om iets aan of uit te zetten en de status ervan langere tijd vast te houden.Boolean variabeleBoolean omkerenals true, dan falseals false, dan true

boolean test

test = !testBoolean variabeleZorg ervoor dat je monstertje rond beweegt, en van richting veranderd zodra het de kant raakt.

Gebruik een teller die optelt als de kant wordt geraakt. Wanneer de teller 10 is, wordt een boolean test omgezet (van true naar false of omgekeerd).

Staat deze aan, dan heeft het monster 1 kleur, Staat hij uit, een andere.Uitbreiding: optioneelMeerdere rollovers

Les 4 voorbeeld 133

Les 4 voorbeeld 2a

Wat gebeurt er als we button = !button naar de draw verhuizen? Waarom?Les 4 voorbeeld 2bLes 4 voorbeeld 2bEen variabele voor positie bij te houden:x = 0;

We willen 1 pixel naar rechts verplaatsen:x = x + 1;

Hetzelfde naar links wordt:x = x 1;

In programmeren moet je patronen leren herkennen, Dat wil zeggen dat je efficinter kan werken.

x = x + 1;x = x 1;

Is een patroonEen botsende balx = x + 1;x = x 1;

Dit kan worden herschreven als

x = x + snelheid

Door de snelheid in een aparte variabele te stoppen, kunnen we deze veel makkelijker aanpassen/laten variren.

Om van richting te wisselen kunnen we snelheid * -1 doen.

2 * -1 wordt dan 2en -2 * -1 wordt dan 2

Een botsende bal

Les 4 voorbeeld 3aMet zwaartekracht!

Les 4 voorbeeld 3bZwaarterkracht neemt toe naarmate je de grond nadert, dus moet ook speed toenemen. Door bij speed telkens 0.1 bij te tellen simuleren we zwaartekracht.