Konnagrafiikkaa

Konnagrafiikkaa



Tämä simulaatio havainnollistaa aliohjelmien eteen(), oikealle() ja vasemmalle() käyttöä. Kopioi alla oleva koodi ja aja ohjelma. Älä tee koodiin muutoksia. 

// Ohjelman tehnyt: e-Oppi Oy
// 28.2.2018
int a = 100; // Laskurin alkuarvo 
int b = 200; // Laskurin alkuarvo 
int c = 270; // Laskurin alkuarvo 
int d = 170; // Laskurin alkuarvo 
int e = 260; // Laskurin alkuarvo 
int f = 160; // 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,0,360));
     int b2 = round(map(b,0,950,0,500));
     int c2 = round(map(c,0,950,0,360));
     int d2 = round(map(d,0,950,0,500));
     int e2 = round(map(e,0,950,0,360));
     int f2 = round(map(f,0,950,0,500));
     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();
     fill(255,0,0);
     oikealle(a2);
     eteen(b2);
     vasemmalle(c2);
     eteen(d2);
     oikealle(e2);
     eteen(f2);
     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
     rect(0,150,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ö
     rect(f,150,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
          }
     }
     if ((y1 > 150) && (y1 < 180)) {
          if ((x1>f) && (f < 950)) { // Jos hiiri on oikealla puolen
                f++; // niin kasvata laskuria
          }
          if ((x1<f) && (f > 0)){ // Jos hiiri on vasemmalla puolen
                f--; // 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);
     text(f2,f+5,175);
      
     textSize(25); // Tekstin koko
     text("void draw () {",10,240);
     text("translate(width/2,height/2);",50,270);
     text("scale(1,-1)",50,300);
     text("oikealle("+a2+");",50,330);
     text("eteen("+b2+");",50,360);
     text("vasemmalle("+c2+");",50,390);
     text("eteen("+d2+");",50,420);
     text("oikealle("+e2+");",50,450);
     text("eteen("+f2+");",50,480);
     text("}",10,510);
     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));
}