Zde máme jednoduchý příklad pohybu míčku po hřišti. V tomto případě se míček odráží od
mantinelů a svislý pohyb ovládáme myší , jedná se pouze o základní ukázku.
int i=0;
int m=0;
void setup(){
size(480,280);
}
void draw(){
background(255,255,255); //barva hriste
//micek
fill(237,10,30); //barva mice
ellipse(i,mouseY,30,30);
//sit
fill(10,237,30); //barva site
rect(width/2,0,5,280);
// Pohyb mice
if (i>=(width-15))m=1;
if (m==0)i++;
if (m==1)i--;
if (i<=15)m=0;
}
Nyní přikládám funkční program včetně komentářů, předpokládám že bude vše jasné.
/***************************** PROGRAM TENIS ************************/
// Ukazkový program TENIS
import ddf.minim.*;
Minim minim;
AudioSample kick;
AudioSample snare;
int x=50; //vodorovná osa pohybu míče
int y=50; //svislá osa pohybu míče
int ny=0;
int mx=0; //paměť pohybu míče ve vodorovné ose
int my=0; //paměť pohybu míče ve svislé osa
float p=0; //pozice pálky počítače
int score_l=0; // skore počítače
int score_p=0; // moje skore
boolean hra= false; //paměť běhu hry
boolean Game=false; //paměť ukončení hry při dosažení skore
void setup()
{
size(500,300);
frameRate(100);
y=100;
minim = new Minim(this);
// load BD.wav from the data folder
kick = minim.loadSample( "BD.mp3",512);
if ( kick == null ) println("Nelze otevřít kick!");
// load SD.wav from the data folder
snare = minim.loadSample("SD.wav", 512);
if ( snare == null ) println("Nelze otevřít snare!");
}
void draw(){
//pozadí hřiště
background(255,255,255);
// síť
fill(10,237,30);
rect(width/2,0,5,400);
//tenisák
fill(245,198,44);
ellipse(x,y,30,30);
// moje pálka
fill(10,30,237);
rect(475,mouseY,5,50);
//pohyb pálky počítače
if (y>p)p=p+0.8;
else p=p-0.8;
// pálka počítače
fill(237,10,30);
rect(20,p,5,50);
//zobrazení skore
textSize(40);
text(score_l+":"+ score_p,223,35);
if (hra)
{
Leva_p(); //volání funkce vyhodnocení kontaktu míčku s pálkou počítače
Prava_p(); //volání funkce vyhodnocení kontaktu míčku s mojí pálkou
// vyhodnocení dosažení pravéhu mantinelu
if (x>=495)
{
mx=1;
score_l++;
snare.trigger(); //zvuk
}
//pohyb míčku vpravo
if (mx==0)x=x+5;
//pohyb míčku vlevo
if (mx==1)x=x-5;
// vyhodnocení dosažení levého mantinelu
if (x<=5)
{
mx=0;
score_p++;
snare.trigger(); //zvuk
}
switch (my) //přepínač pohybu míčku ve svislé ose
{
case 0:
y=y;
break;
case 1:
y=y+1;
break;
case 2:
y=y-1;
break;
}
//odraz od spodního okraje hřiště
if (y>=285)my=2;
//odraz od horního okraje hřiště
if (y<=15)my=1;
//výpis skore na obrazovku
if (score_l==9 |score_p==9) // Konec hry
{
Game=true;
hra=false;
}
}
else
{
if (Game==false) //Zobrazí informace po zapnutí nebo ručním ukončení
{
fill(37,68,216);
textSize(40);
text("TENIS ",200,100);
fill(216,148,37);
textSize(25);
text("Start klávesou s nebo S ",100,200);
text("Konec klávesou k nebo K ",100,250);
}
else // Výpis při dosažení skore
{
fill(37,68,216);
textSize(40);
text("KONEC HRY ",150,100);
}
}
}
void keyPressed() // test stisknutí klávesnice
{
if ( key == 's' | key == 'S' ) //start hry
{
hra=true;
Game=false;
score_l=0;
score_p=0;
}
if ( key == 'k' | key == 'K' ) hra=false; //konec hry
}
void Leva_p() //pálka počítače
{
if ((x<=40) & (x>=20))
{
if ((y<=p+33) & (y>=(p+17)))
{ //rovne
mx=0; //paměť pohybu míče ve vodorovné ose
my=0; //paměť pohybu míče ve svislé ose
kick.trigger(); //zvuk pálky
}
if ((y>=p) & (y<(p+17)))
{ // nahoru
mx=0;
my=2;
kick.trigger(); //zvuk pálky
}
if ((y>p+33) & (y<=(p+50)))
{ // dolu
mx=0;
my=1;
kick.trigger(); //zvuk pálky
}
}
}
void Prava_p() //moje pálka
{
if ((x>=460) & (x<=480))
{
if ((y<=mouseY+33) & (y>=(mouseY+17)))
{ // rovne
mx=1; //paměť pohybu míče ve vodorovné ose
my=0; //paměť pohybu míče ve svislé ose
kick.trigger(); //zvuk pálky
}
if ((y>=mouseY) & (y<(mouseY+17)))
{ // nahoru
mx=1;
my=2;
kick.trigger(); //zvuk pálky
}
if ((y>=mouseY+33) & (y<=(mouseY+50)))
{ // dolu
mx=1;
my=1;
kick.trigger(); //zvuk pálky
}
}
}
Záměrně nechávám program opsat případně zkopírovat , aby jste se zamysleli nad řešením jednotlivých úkolů, případně si udělali vlastní vylepšení.
Pro funkci zvuku musíme vytvořit adresář data v adresáři programu a do tohoto adresáře zkopírovat soubory BD.mp3 a SD.wav z adresáře příkladů, které jsou uloženy v adresáři kde máte nainstalován Processing. V mém případě je cesta následující:
c:\processing-2.1\modes\java\libraries\minim\examples\TriggerASample\data\
V opačném případě můžete zakomentovat všechny odkazy na zvuk a pracovat bez zvuku