Esimerkki: Kertolaskupeli hiiriohjauksella



Suoritetaan allaoleva ohjelma, jossa lukuja voi syöttää painikkeiden avulla. Lisätään myös painikkeet laskutoimituksen tarkistamista ja uuden kertolaskun tarkistamista varten. Kokonainen ohejelma on seuraava.

// TR 8.1.2018
String merkki ="0"; // Oletus merkki on 0 boolean n1 = false; // Oletuksena luvun syöttö salittu int luku1 = round(random(1,10)); int luku2 = round(random(1,10)); boolean nappi1=false; boolean nappi2=true; void setup() { size(600,300); // Ikkunan koko textSize(20); // Tekstin koko } void draw () { int x = mouseX; // Lue hiiren paikka int y = mouseY; background(255); // Tyhjennä tausta fill(0); int vastaus1 = luku1*luku2; text("Paljonko on "+luku1+"\u00B7"+luku2+"?",10,100); int vastaus2 = syota_luku(); text("Vastaus: "+vastaus2,200,100); fill(100,200,100); rect(10,125,160,40,10); rect(180,125,160,40,10); fill(0); text("Tarkista",50,155); text("Kysy uudestaan",185,155); if (mousePressed == true) { // Jos hiiren painike pohjassa if ((y > 125) && (y < 165)) { // Jos pystysuuntainen paikka on välillä 125 < y < 165 if ((x > 10) && (x < 170)) { // Jos vaakasuuntainen paikka on välillä 10 < x < 170 fill(255,0,0); // Väritä punaisella rect(10,125,160,40,10); nappi1 = true; } if ((x > 180) && (x < 340)) { // Jos vaakasuuntainen paikka on välillä 180 < x < 340 fill(255,0,0); // Väritä punaisella rect(180,125,160,40,10); if (nappi2 == true) { luku1 = round(random(1,10)); luku2 = round(random(1,10)); merkki="0"; nappi2 = false; nappi1 = false; } } } } else { nappi2 = true; } if (nappi1 == true) { if (vastaus1 == vastaus2) { text("Oikein",10,200); } else { text("Väärin",10,200); } } } int syota_luku () { int x = mouseX; // Lue hiiren paikka int y = mouseY; fill(50,200,200); // Lisää väri rect(5,5,40,40,10); // Luodaan painonapit rect(55,5,40,40,10); rect(105,5,40,40,10); rect(155,5,40,40,10); rect(205,5,40,40,10); rect(255,5,40,40,10); rect(305,5,40,40,10); rect(355,5,40,40,10); rect(405,5,40,40,10); rect(455,5,40,40,10); rect(505,5,40,40,10); rect(555,5,40,40,10); textSize(30); // Tekstin koko 30 fill(0); // Tekstin väri musta text("1",15,40); // Tulosta painonapeille tekstit text("2",65,40); text("3",115,40); text("4",165,40); text("5",215,40); text("6",265,40); text("7",315,40); text("8",365,40); text("9",415,40); text("0",465,40); text(",",515,40); text("C",565,40); if (mousePressed == true) { // Jos hiiren painike pohjassa if ((y > 5) && (y < 45)) { // Jos pystysuuntainen paikka on välillä 5 < y < 45 if ((x > 5) && (x < 45)) { // Jos vaakasuuntainen paikka on välillä 5 < x < 45 fill(255,0,0); // Väritä punaisella rect(5,5,40,40,10); if (n1 == false) { // Jos n1:n arvo false, niin lisää yksi merkki merkki = merkki+"1"; } } if ((x > 55) && (x < 95)) { // Jos vaakasuuntainen paikka on välillä 55 < x < 95 fill(255,0,0); rect(55,5,40,40,10); if (n1 == false) { merkki = merkki+"2"; } } if ((x > 105) && (x < 145)) { // Jos vaakasuuntainen paikka on välillä 105 < x < 145 fill(255,0,0); rect(105,5,40,40,10); if (n1 == false) { merkki = merkki+"3"; } } if ((x > 155) && (x < 195)) { // Jos vaakasuuntainen paikka on välillä 155 < x < 195 fill(255,0,0); rect(155,5,40,40,10); if (n1 == false) { merkki = merkki+"4"; } } if ((x > 205) && (x < 245)) { // Jos vaakasuuntainen paikka on välillä 205 < x < 245 fill(255,0,0); rect(205,5,40,40,10); if (n1 == false) { merkki = merkki+"5"; } } if ((x > 255) && (x < 295)) { // Jos vaakasuuntainen paikka on välillä 255 < x < 295 fill(255,0,0); rect(355,5,40,40,10); rect(255,5,40,40,10); if (n1 == false) { merkki = merkki+"6"; } } if ((x > 305) && (x < 345)) { // Jos vaakasuuntainen paikka on välillä 305 < x < 345 fill(255,0,0); rect(305,5,40,40,10); if (n1 == false) { merkki = merkki+"7"; } } if ((x > 355) && (x < 395)) { // Jos vaakasuuntainen paikka on välillä 355 < x < 395 fill(255,0,0); rect(355,5,40,40,10); if (n1 == false) { merkki = merkki+"8"; } } if ((x > 405) && (x < 445)) { // Jos vaakasuuntainen paikka on välillä 405 < x < 455 fill(255,0,0); rect(405,5,40,40,10); if (n1 == false) { merkki = merkki+"9"; } } if ((x > 455) && (x < 495)) { // Jos vaakasuuntainen paikka on välillä 455 < x < 495 fill(255,0,0); rect(455,5,40,40,10); if (n1 == false) { merkki = merkki+"0"; } } if ((x > 505) && (x < 545)) { // Jos vaakasuuntainen paikka on välillä 505 < x < 545 fill(255,0,0); rect(505,5,40,40,10); if (n1 == false) { merkki = merkki+"."; } } if ((x > 555) && (x < 595)) { // Jos vaakasuuntainen paikka on välillä 555 < x < 595 fill(255,0,0); rect(555,5,40,40,10); if (n1 == false) { merkki = "0"; } } n1 = true; // Tämä on nyt true, kunnes vapautat hiiren painikkeen } } else { n1 = false; // Kun vapautat hiiren painikkeen, niin salli merkkien syöttö } fill(0); // Oletus tekstin väri on musta textSize(20); // Oletus tekstin koko on 20 int luku = int(merkki); // Muuta syötetty merkkijono luvuksi return luku ; // Palauta syötetty luku }