Konnagrafiikkaa for-silmukan kanssa
Konnagrafiikkaa for-silmukan kanssa

Tämä simulaatio havainnollistaa konnagrafiikkaa for-silmukan avulla. Kopioi alla oleva koodi ja aja ohjelma. Älä tee koodiin muutoksia.
// Ohjelman tehnyt: e-Oppi Oy
// 28.2.2018
int a = 350; // Laskurin alkuarvo
int b = 280; // Laskurin alkuarvo
int c = 318; // Laskurin alkuarvo
int d = 237; // Laskurin alkuarvo
int e = 118; // Laskurin alkuarvo
int x = 0;
int y = 0;
int w = 10; // Kynän paksuus (voit muuttaa)
void setup () {
size(1000,700); // ikkunan koko
stroke(0); // Musta viivan väri
textSize(30); // Tekstin koko
}
void draw() {
background(255); // Tyhjennä tausta
int a2 = round(map(a,0,950,1,20));
int b2 = round(map(b,0,950,1,10));
int c2 = round(map(c,0,950,0,300));
int d2 = round(map(d,0,950,0,360));
int e2 = round(map(e,0,950,0,360));
fill(0,200,255);
fill(255);
rect(500,200,500,500);
stroke(200);
pushMatrix();
translate(750,450);
scale(1,-1);
for (int t=-10; t <= 10; t++) {
line(t*50,-300,t*50,300);
line(-300,t*50,300,t*50);
}
fill(255,0,0,200);
strokeWeight(1);
noStroke();
for (int s=1; s <= a2; s++) {
fill(255,0,0);
for (int t=1; t <= b2; t++) {
eteen(c2);
vasemmalle(d2);
}
vasemmalle(e2);
}
popMatrix();
fill(240);
noStroke();
rect(0,200,500,500);
rect(0,0,1000,200);
stroke(0);
strokeWeight(1);
fill(255,255,0); // Keltainen täyttöväri
rect(0,0,999,30); // Piirrä keltainen suorakulmio
rect(0,30,999,30); // Piirrä keltainen suorakulmio
rect(0,60,999,30); // Piirrä keltainen suorakulmio
rect(0,90,999,30); // Piirrä keltainen suorakulmio
rect(0,120,999,30); // Piirrä keltainen suorakulmio
fill(255,100,100); // Punainen täyttöväri
rect(a,0,60,30); // Piirrä punainen neliö
rect(b,30,60,30); // Piirrä punainen neliö
rect(c,60,60,30); // Piirrä punainen neliö
rect(d,90,60,30); // Piirrä punainen neliö
rect(e,120,60,30); // Piirrä punainen neliö
int x1 = mouseX; // Selvitä hiiren vaakakoordinaatti
int y1 = mouseY;
if (mousePressed == true) {
if ((y1 > 0) && (y1 < 30)) {
if ((x1>a) && (a < 950)) { // Jos hiiri on oikealla puolen
a++; // niin kasvata laskuria
}
if ((x1<a) && (a >= 0)) { // Jos hiiri on vasemmalla puolen
a--; // niin pienennä laskuria
}
}
if ((y1 > 30) && (y1 < 60)) {
if ((x1>b) && (b < 950)) { // Jos hiiri on oikealla puolen
b++; // niin kasvata laskuria
}
if ((x1<b) && (b >= 0)) { // Jos hiiri on vasemmalla puolen
b--; // niin pienennä laskuria
}
}
if ((y1 > 60) && (y1 < 90)) {
if ((x1>c) && (c < 950)) { // Jos hiiri on oikealla puolen
c++; // niin kasvata laskuria
}
if ((x1<c) && (c > 0)){ // Jos hiiri on vasemmalla puolen
c--; // niin pienennä laskuria
}
}
if ((y1 > 90) && (y1 < 120)) {
if ((x1>d) && (d < 950)) { // Jos hiiri on oikealla puolen
d++; // niin kasvata laskuria
}
if ((x1<d) && (d > 0)){ // Jos hiiri on vasemmalla puolen
d--; // niin pienennä laskuria
}
}
if ((y1 > 120) && (y1 < 150)) {
if ((x1>e) && (e < 950)) { // Jos hiiri on oikealla puolen
e++; // niin kasvata laskuria
}
if ((x1<e) && (e > 0)){ // Jos hiiri on vasemmalla puolen
e--; // niin pienennä laskuria
}
}
}
fill(0); // Musta tekstin väri
textSize(20); // Tekstin koko
text(a2,a+5,25);
text(b2,b+5,55);
text(c2,c+5,85);
text(d2,d+5,115);
text(e2,e+5,145);
textSize(25); // Tekstin koko
text("void draw () {",10,240);
text("translate(width/2,height/2);",30,270);
text("scale(1,-1)",30,300);
text("for (int a=1; a <= "+a2+"; a++) {",30,330);
text("fill(255,0,0);",50,360);
text("for (int b=1; b <= "+b2+"; b++) {",50,390);
text("eteen("+c2+");",70,420);
text("vasemmalle("+d2+");",70,450);
text("}",50,480);
text("vasemmalle("+e2+");",50,510);
text("}",30,540);
text("}",10,570);
fill(255);
rect(50,550,400,120);
fill(0);
text("Huomio: Tässä on vain näytetty",60,590);
text("pääohjelma. Aliohjelmien koodi",60,620);
text("myös tarvitaan!",60,650);
}
void eteen(int askel) {
for (int a = 0; a < askel; a++) {
x = x + 1;
ellipse(x,y,w,w);
}
translate(askel,0);
x = 0;
}
void taakse(int askel) {
for (int a = 0; a < askel; a++) {
x = x - 1;
ellipse(x,y,w,w);
}
translate(-askel,0);
x = 0;
}
void vasemmalle(int kulma) {
rotate(radians(kulma));
}
void oikealle(int kulma) {
rotate(radians(-kulma));
}