|
Antwoorden hoofdstuk 4.3 (JavaLogo, animaties)
|
|
|
1a. |
import logotekenap.*;
import java.awt.Font;
public class Opgave1a extends TekenApplet
{
double h=0;
Font f;
public void initialiseer()
{
maakTraceMogelijk();
maakAnimatieMogelijk();
f=new Font("TimesRoman",Font.BOLD,25);
}
public void tekenprogramma()
{
penUit();
links(90);
rechts(h);
driehoek();
stap(70,250);
schrijf("driehoek",f);
penUit();
}
public void driehoek()
{
penAan();
for (int i = 1; i <= 3; i ++)
{
vooruit(300);
rechts(120);
}
penUit();
}
public void animatie()
{ while( animatieLopend() )
{ h=h+1;
tekenOpnieuw();
}
}
} |
1b. |
Vervang bij antwoord 1a de opdracht h=h+1; (die staat op de één na laatste regel) door h=h-1;
|
1c. |
import logotekenap.*;
public class Opgave1c extends TekenApplet
{
double h=0;
public void initialiseer()
{
maakTraceMogelijk();
maakAnimatieMogelijk();
}
public void tekenprogramma()
{
penUit();
vooruit(h);
rechthoek();
penUit();
}
public void rechthoek()
{
penAan();
vulAan(0,0,255);
vooruit(40);
rechts(90);
vooruit(400);
rechts(90);
vooruit(40);
rechts(90);
vooruit(400);
rechts(90);
vulUit();
penUit();
}
public void animatie()
{ while( animatieLopend() )
{ h=h+0.1;
tekenOpnieuw();
}
}
} |
1d. |
Als je bij antwoord 1c de opdracht vooruit(h); (dat is de eerste regel van de methode tekenprogramma) door rechts(h);
vervangt, dan draait de rechthoek om een hoekpunt.
Wil je dat de rechthoek draait om het middelpunt, dan moet je bij het tekenen er van uitgaan dat de cursor in het middelpunt staat
en vanuit dat punt de rechthoek tekenen.
Dan hoef je alleen maar de opdracht stap(-200,-20); toe te voegen bij de methode rechthoek, want dan gaat de cursor eerst
van het middelpunt naar het hoekpunt linksonder.
Dan wordt het als volgt:
import logotekenap.*;
public class Opgave1d extends TekenApplet
{
double h=0;
public void initialiseer()
{
maakTraceMogelijk();
maakAnimatieMogelijk();
}
public void tekenprogramma()
{
penUit();
rechts(h);
rechthoek();
penUit();
}
public void rechthoek()
{
penUit();
stap(-200,-20);
penAan();
vulAan(0,0,255);
vooruit(40);
rechts(90);
vooruit(400);
rechts(90);
vooruit(40);
rechts(90);
vooruit(400);
rechts(90);
vulUit();
penUit();
}
public void animatie()
{ while( animatieLopend() )
{ h=h+0.1;
tekenOpnieuw();
}
}
} |
1e. |
Vervang bij antwoord 1c de opdracht rechts(h); (dat is de eerste regel van de methode tekenprogramma) door stap(h,h);
|
1f. |
import logotekenap.*;
public class Opgave1f extends TekenApplet
{
double h=1;
public void initialiseer()
{
maakTraceMogelijk();
maakAnimatieMogelijk();
}
public void tekenprogramma()
{
penUit();
rechthoek(h);
penUit();
}
public void rechthoek(double h)
{
penUit();
stap(-20*h,-20*h);
penAan();
vulAan(0,0,255);
vooruit(4*h);
rechts(90);
vooruit(40*h);
rechts(90);
vooruit(4*h);
rechts(90);
vooruit(40*h);
rechts(90);
vulUit();
penUit();
}
public void animatie()
{ while( animatieLopend() )
{ h=h+0.01;
tekenOpnieuw();
}
}
} |
1g. |
import logotekenap.*;
public class Opgave1g extends TekenApplet
{
double h=0;
public void initialiseer()
{
maakTraceMogelijk();
maakAnimatieMogelijk();
}
public void tekenprogramma()
{
penUit();
rechts(h);
rechthoek();
penUit();
}
public void rechthoek()
{
// eerst van middelpunt naar linker hoekpunt stappen
penUit();
stap(-200,-20);
penAan();
vulAan(0,0,255);
// rechthoek tekenen
vooruit(40);
rechts(90);
vooruit(400);
rechts(90);
vooruit(40);
rechts(90);
vooruit(400);
rechts(90);
vulUit();
penUit();
// naar middelpunt linker vierkant
penUit();
stap(-20,20);
// zorg voor draaiing linker vierkant
links(2*h);
// linker vierkant tekenen
stap(-20,-20);
vierkant();
stap(20,20);
// terug draaien
rechts(2*h);
// naar middelpunt rechter vierkant
penUit();
stap(440,0);
// zorg voor draaiing rechter vierkant
rechts(3*h);
// rechter vierkant tekenen
stap(-20,-20);
penUit();
vierkant();
}
public void vierkant()
{
penAan();
vulAan(255,0,0);
for (int i = 1; i <= 4; i ++)
{
vooruit(40);
rechts(90);
}
vulUit();
penUit();
}
public void animatie()
{ while( animatieLopend() )
{ h=h+0.1;
tekenOpnieuw();
}
}
}
|
|
|
2a. |
import logotekenap.*;
public class Opgave2a extends TekenApplet
{
double h=0;
public void initialiseer()
{
maakTraceMogelijk();
maakAnimatieMogelijk();
}
public void tekenprogramma()
{
penUit();
links(90);
rechts(h);
driehoek();
penUit();
}
public void driehoek()
{
penAan();
for (int i = 1; i <= 3; i ++)
{
vooruit(200);
rechts(120);
}
penUit();
}
public void animatie()
{ while( animatieLopend() )
{ if (h<=180)
{
h=h+0.1;
tekenOpnieuw();
}
}
}
} |
2b. |
import logotekenap.*;
public class Opgave2b extends TekenApplet
{
double h=0;
int richting=1;
public void initialiseer()
{
maakTraceMogelijk();
maakAnimatieMogelijk();
}
public void tekenprogramma()
{
penUit();
links(90);
rechts(h);
driehoek();
penUit();
}
public void driehoek()
{
penAan();
for (int i = 1; i <= 3; i ++)
{
vooruit(200);
rechts(120);
}
penUit();
}
public void animatie()
{ while( animatieLopend() )
{
if (h>90) { richting=-1;}
if (h<0) { richting=1;}
if (richting == 1) { h=h+0.1;} else { h=h-0.1;}
tekenOpnieuw();
}
}
} |
2c. |
import logotekenap.*;
public class Opgave2c extends TekenApplet
{
double z=50;
public void initialiseer()
{
maakTraceMogelijk();
maakAnimatieMogelijk();
}
public void tekenprogramma()
{
penUit();
stap(0,-200);
links(90);
driehoek(z);
penUit();
}
public void driehoek(double z)
{
penAan();
for (int i = 1; i <= 3; i ++)
{
vooruit(z);
rechts(120);
}
penUit();
}
public void animatie()
{ while( animatieLopend() )
{ if (z<=500)
{
z=z+0.1;
tekenOpnieuw();
}
}
}
}
|
|
|
3a. |
import logotekenap.*;
public class Opgave3a extends TekenApplet
{
double z;
InvoerVariabele v;
public void initialiseer()
{
maakTraceMogelijk();
v = new InvoerVariabele("zijde", 20 ,500 , 200);
maakZichtbaar(v);
z=200;
}
public void tekenprogramma()
{
penUit();
stap(200,z*-0.5);
links(90);
driehoek(z);
penUit();
}
public void driehoek(double z)
{
penAan();
for (int i = 1; i <= 3; i ++)
{
vooruit(z);
rechts(120);
}
penUit();
}
public void invoerVarActie(InvoerVariabele iv)
{
z = v.geefWaarde();
tekenOpnieuw();
}
} |
3b. |
import logotekenap.*;
public class Opgave3b extends TekenApplet
{
int z=5;
InvoerVariabele v;
public void initialiseer()
{
v = new InvoerVariabele("aantal driehoeken", 1 ,20 , 5);
maakZichtbaar(v);
}
public void tekenprogramma()
{
penUit();
stap(-250,0);
links(90);
for (int d=1;d<=z;d++)
{
driehoek();
stap(0,-30);
}
}
public void driehoek()
{
penAan();
for (int i = 1; i <= 3; i ++)
{
vooruit(30);
rechts(120);
}
penUit();
}
public void invoerVarActie(InvoerVariabele iv)
{
z = v.geefWaarde();
tekenOpnieuw();
}
} |
3c. |
import logotekenap.*;
public class Opgave3c extends TekenApplet
{
int z=5;
InvoerVariabele v;
public void initialiseer()
{
v = new InvoerVariabele("aantal hoeken", 3 ,50 , 5);
maakZichtbaar(v);
}
public void tekenprogramma()
{
penUit();
stap(-250,0);
nhoek();
}
public void nhoek()
{
penAan();
for (int i = 1; i <= z; i ++)
{
vooruit(30);
rechts(360/z);
}
penUit();
}
public void invoerVarActie(InvoerVariabele iv)
{
z = v.geefWaarde();
tekenOpnieuw();
}
}
|
|
|
4a. |
import logotekenap.*;
public class Opgave4a extends TekenApplet
{
int z=5;
InvoerVariabele v;
public void initialiseer()
{
v = new InvoerVariabele("aantal hoeken", 3 ,50 , 5);
maakZichtbaar(v);
}
public void tekenprogramma()
{
penUit();
stap(-250,0);
nhoek();
}
public void nhoek()
{
penAan();
for (int i = 1; i <= z; i ++)
{
vooruit(50);
rechts(360/z);
}
penUit();
}
public void invoerVarActie(InvoerVariabele iv)
{
z = v.geefWaarde();
tekenOpnieuw();
}
} |
4b. |
import logotekenap.*;
public class Opgave4b extends TekenApplet
{
int x=0,y=0;
InvoerVariabele v,w;
public void initialiseer()
{
v = new InvoerVariabele("hoeveel naar boven (beneden)", -200 ,200 , 0);
maakZichtbaar(v);
w = new InvoerVariabele("hoeveel naar rechts (links)", -200 ,200 , 0);
maakZichtbaar(w);
}
public void tekenprogramma()
{
penUit();
stap(x,y);
vierkant();
}
public void vierkant()
{
penAan();
for (int i = 1; i <= 4; i ++)
{
vooruit(50);
rechts(90);
}
penUit();
}
public void invoerVarActie(InvoerVariabele iv)
{
if (iv==v)
{
y = v.geefWaarde();
tekenOpnieuw();
}
else
{
x = w.geefWaarde();
tekenOpnieuw();
}
}
}
|
|
|
5a. |
import logotekenap.*;
public class Opgave5a extends TekenApplet
{
double x=0,y=0;
public void initialiseer()
{
maakMuisActieMogelijk();
}
public void tekenprogramma()
{
penUit();
stap(x,y);
vierkant();
}
public void vierkant()
{
penAan();
vulAan(255,0,0);
for (int i = 1; i <= 4; i++)
{
vooruit(100);
rechts(90);
}
penUit();
vulUit();
}
public void muisSleepActie()
{ x = x + geefSleepdx();
if (x>100) {x=100;}
if (x<-100) {x=-100;}
y = y + geefSleepdy();
if (y>100) {y=100;}
if (y<-100) {y=-100;}
tekenOpnieuw();
}
} |
5b. |
import logotekenap.*;
public class Opgave5b extends TekenApplet
{
double h=0;
public void initialiseer()
{
maakMuisActieMogelijk();
}
public void tekenprogramma()
{
penUit();
rechts(h);
driehoek();
}
public void driehoek()
{
penAan();
vulAan(255,0,0);
for (int i = 1; i <= 3; i++)
{
vooruit(200);
rechts(120);
}
penUit();
vulUit();
}
public void muisSleepActie()
{ h = h + geefSleepdx();
h = h + geefSleepdy();
tekenOpnieuw();
}
}
|
|
|
6a. |
import logotekenap3d.*;
public class Opg6a extends TekenApplet3D
{
int h=30;
InvoerVariabele v;
public void initialiseer()
{
v = new InvoerVariabele("aantal graden draaien", -360 ,360 , 30);
maakZichtbaar(v);
}
public void tekenprogramma()
{ xdraai(30); ydraai(h);
//voorvlak
vulAan("oranje");
stapy(100);stapx(100);stapy(-100);stapx(-100);
vulUit();
//benedenvlak
vulAan("blauw");
stapx(100);stapz(100);stapx(-100);stapz(-100);
vulUit();
//linkervlak
vulAan("groen");
stapz(100);stapy(100);stapz(-100);stapy(-100);
vulUit();
//tussenstap naar rechts
stapx(100);
//rechtervlak
vulAan("geel");
stapy(100);stapz(100);stapy(-100);stapz(-100);
vulUit();
//tussenstap naar achteren
stapz(100);
//achtervlak
vulAan("zwart");
stapy(100);stapx(-100);stapy(-100);stapx(100);
vulUit();
//tussenstap naar boven
stapy(100);
//bovenvlak
vulAan("rood");
stapz(-100);stapx(-100);stapz(100);stapx(100);
vulUit();
}
public void invoerVarActie(InvoerVariabele iv)
{
h = v.geefWaarde();
tekenOpnieuw();
}
} |
6b. |
import logotekenap3d.*;
import java.awt.Polygon;
public class Opg6b extends TekenApplet3D
{
int h=0;
Polygon vlak1;
boolean gekliktop1=false;
public void initialiseer()
{
maakMuisActieMogelijk();
}
public void tekenprogramma()
{ xdraai(30); ydraai(30);
//voorvlak
vulAan("oranje");
stapy(100);stapx(100);stapy(-100);stapx(-100);
vulUit();
vlak1 = geefVlak();
//benedenvlak
vulAan("blauw");
stapx(100);stapz(100);stapx(-100);stapz(-100);
vulUit();
//linkervlak
vulAan("groen");
stapz(100);stapy(100);stapz(-100);stapy(-100);
vulUit();
//tussenstap naar rechts
stapx(100);
//rechtervlak
vulAan("geel");
stapy(100);stapz(100);stapy(-100);stapz(-100);
vulUit();
//tussenstap naar achteren
stapz(100);
//achtervlak
vulAan("zwart");
stapy(100);stapx(-100);stapy(-100);stapx(100);
vulUit();
//tussenstap naar boven
stapy(100);
//bovenvlak
vulAan("rood");
stapz(-100);stapx(-100);stapz(100);stapx(100);
vulUit();
//tussenstap
stap(-100,-100,-100);
// voorvlak gedraaid
if (gekliktop1)
{ xdraai(h);
vulAan("oranje");
stapy(100);stapx(100);stapy(-100);stapx(-100);
vulUit();
vulAan("zwart");
stapx(100);stapy(100);stapx(-100);stapy(-100);
vulUit();
}
}
public void muisDrukActie()
{ int x = geefDrukx();
int y = geefDruky();
gekliktop1 = vlak1.contains(x,y);
if (gekliktop1==false) {h=0;}
}
public void muisSleepActie()
{ if (gekliktop1) {h = h - geefSleepdy();}
tekenOpnieuw();
}
}
|
|
|
7a. |
InvoerVariabele v;
|
b. |
v = new InvoerVariabele("hoeveel", -200 ,200 , 0);
|
c. |
maakZichtbaar(v);
|
d. |
if (z>10) {h=90;}
|
e. |
if (z==10) {h=90;} else (h=100;}
|