Lisätietoa

Väriarvon lukeminen

Seuraavalla rakenteella voidaan lukea yksittäisen pisteen, joka on tässä (100, 100), väriarvot (R, G, B).

 color vari = get(100,100);
float r = red(vari);
float g = green(vari);
float b = blue(vari);

Tehdään ohjelma, joka lukee punaisen ympyrän värikoordinaatin.

// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
void setup () {
size(400,400); // Ikkunan koko
background(255); // Taustaväri valkoinen
textSize(24); // Tekstin koko 24
}

void draw () {
fill(255,0,0); // Täyttöväri punainen
ellipse (100,100,100,100); // Piirrä punainen ympyrä
fill(0); // Musta täyttöväri tekstiä varten
color vari = get(100,100); // Lue pisteen väriarvot vari-muuttujaan.
float r = red(vari); // Selvitä värin R-arvo
float g = green(vari); // Selvitä värin G-arvo
float b = blue(vari); // Selvitä värin B-arvo
text("R = "+r,50,200); // Tulosta R arvo
text("G = "+g,50,250); // Tulosta G arvo
text("B = "+b,50,300); // Tulosta B arvo
}

Ohjelma tutkii pisteen (100, 100) ja tulostaa sen pisteen väriarvot.

Sokkelopeli

Tehdään sokkelo, jossa maalialue on kuvattu sinisellä, sallittu alue on kuvattu keltaisella ja kielletty alue on kuvattu punaisella. Mustaa ympyrää voidaan liikutella nuolinäppäimillä: oikealle, vasemmalle, ylös ja alas. Kun musta ympyrä törmää punaiseen väriin, niin laskuri ei enää kasva ja ympyrä ei liiku. Kun musta ympyrä törmää siniseen väriin, niin peli päättyy voitokkaasti. Kun musta ympyrä törmää vihreään monsteriin, niin peli päättyy tappiollisesti.




Ohjelman koodi on seuraava.

// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
int x = 0; // Mustan ympyrän vaakakoordinaatti
int y = 0; // Mustan ympyrän pystykoordinaatti
int suunta = 0; // Ympyrän suunta
boolean peli = true; // true = peli käynnissä, false = peli loppui
boolean voitto = false; // true = voitit pelin, false = hävisit pelin

void setup () {
size(600,600); // Ikkunan koko
}

void draw () {
background(255,255,0); // Tyhjennä tausta ja väritä se keltaseksi
fill(255,0,0); // Punainen väri
noStroke(); // Reunaviivan väri
rect(0,0,10,600); // Piirretään punaiset viivat eli luodaan sokkelo
rect(0,0,600,10);
rect(590,0,10,600);
rect(0,590,600,10);
rect(100,0,10,500);
rect(200,100,10,250);
rect(200,400,10,200);
rect(300,0,10,500);
rect(400,100,10,250);
rect(400,400,10,200);
rect(500,0,10,500); // Sokkelo loppuu
fill(0,0,255); // Sininen väri
rect(525,25,50,50); // Piirrä maalialue
fill(0,255,0); // Vihreä väri
arc(160,150,80,80,radians(45), radians(305),PIE); // Monsteri

// Mustan ympyrän liikkuminen
if ((keyPressed == true) && (peli == true)) { // Jos näppäin pohjassa ja peli käynnissä
if (keyCode == RIGHT) { // Jos painetaan oikealle
x++; // Kasvata laskuria
suunta = 1; // Tallenna suunta muistiin
}
if (keyCode == LEFT) { // Jos painietaan vasemmalle
x--; // Pienennä laskuria
suunta = 2; // Tallenna suunta muistiin
}
if (keyCode == UP) { // Jos painietaan ylös
y--; // Pienennä laskuria
suunta = 3; // Tallenna suunta muistiin
}
if (keyCode == DOWN) { // Jos painetaan alas
y++; // Kasvata laskuria
suunta = 4; // Tallenna suunta muistiin
}
// Tutkitaan punainen piste eli seinä tulee vastaan
color vari = get(50+x,50+y); // Lue tämän hetkinen piste
float r = red(vari); // R arvo muistiin
float g = green(vari); // G arvo muistiin
float b = blue(vari); // G arvo muistiin
if ((round(r) == 255) && (round(g) == 0) && (round(b) == 0)) { // Jos punainen
if (suunta == 1) { // Jos suunta oli oikealle, niin
x--; // mene vasemmalle
}
if (suunta == 2) { // Jos suunta oli vasemmalle, niin
x++; // mene oikealle
}
if (suunta == 3) { // Jos suunta oli ylös
y++; // mene alas
}
if (suunta == 4) { // Jos suunta oli alas
y--; // Niin mene ylös
}
}
}
// Tutkitaan tämänhetksen pisteen väri arvot
color vari = get(50+x,50+y); // Tutkitaan nykyinen piste
float r = red(vari); // R arvo muistiin
float g = green(vari); // G arvo muistiin
float b = blue(vari); // B arvo muistiin
// Tutkitaan onko maalialue
if ((round(r) == 0) && (round(g) == 0) && (round(b) == 255)) { // Jos sininen
peli = false; voitto = true; // Muuta pelin tila falseksi = peli päättyi
}
// Tutkitaan onko mensteri
if ((round(r) == 0) && (round(g) == 255) && (round(b) == 0)) {
peli = false; voitto = false;
}
if (peli == false) { // Jos peli on päättynyt
textSize(80); // Aseta tekstin koko 80
fill(0); // Tekstin väri musta
background(255); // Tyhjennä tausta ja väritä se valkoiseksi
text("PELI PÄÄTTYI",50,250); // Tulosta teksti
if (voitto == true) { // Jos pääsit ehjänä perille
text("VOITIT PELIN",50,400); // Tulosta teksti
} else { // Muutoin, jos monsteri söi
text("HÄVISIT PELIN",20,400); // Tulosta teksti
}
} else { // Jos peli jatkuu (peli ==true)
fill(0); // Musta tekstin väri
stroke(0); // Musta reunaviivan väri
ellipse(50+x,50+y,10,10); // Piirrä musta ympyrä
}
}

Voit kehitellä peliä vapaasti eteenpäin.