// komentář programu - určitě jej hojně využívejte, aby jste si zajistili přehled i po nějakém čase
/* blokový komentář začátek
tyto řádky budou programem nezpracovány – lze s výhodou použít i pro dočasné vynechání části programu
*/ blokový komentář konec
int x=0; //definice proměnné integer – celé číslo běžně může dosahovat hodnoty +/- 32767
// s nastavením počáteční hodnoty
boolean mx=false; // definice logické proměnné která má poze dvě hodnoty pravda = true
// nepravda = false
int pozice_X[]=new int[40]; /* definice proměnné typu pole s velikostí 40 prvků
přístup k jednotlivým prvkům je pak pomocí indexu v hranaté závorce viz příklad pozice_X[0] = 15;
nebo a = pozice_X[1]; */
void setup() //--- Funkce pro nastavení programu čte se pouze jednou při startu programu
void draw() //--- Hlavní tělo programu - Opakuje se stále až do ukončení programu
size (rozsah_x,rozsah_y); // velikost obrazu ve které se zadává velikost v ose x , velikost v ose y
frameRate (100); //počet překreslení obrazovek za jednu sekundu
background (255,255,255); // barva pozadí obrazu hodnota 0-255 pro barvu(červená,zelená,modrá)
fill (30,10,307); //barva objektu hodnota 0-255 pro barvu(červená,zelená,modrá)
stroke (0,0,0); //okraj objektu hodnota 0-255 pro barvu(červená,zelená,modrá)
ellipse (x,y,30,30); //vykreslení kruhu(elipsy)-pozice x,y,velikost x,velikost y
rect (X,Y,50,25); // vykreslení obdélníku (čtverce)-pozice x,y,velikost x,velikost y
if (podmínka) jeden příkaz; //když je podmínka platná vykoná příkaz
else jedn příkaz; // když podmínka není platná vykoná příkaz za else
{
neco( ); // pro názvy proměnných a funkcí nepoužívejte českou diakritiku !
neco_jineho( );
} //{ } potřebujeme li zpracovat více příkazů , pak je uzavřeme do těchto závorek
// potřebujeme li volit mezi více hodnotami lze s výhodou použít takzvaný přepínač
switch (my) //přepínač pohybu míčku ve svislé ose výběr z hodnoty 0 až 4
{
case 0:
y=y;
break;
case 1:
y=y+1;
break;
case 2:
y=y-1;
break;
case 3:
y=y+2;
break;
case 4:
y=y-2;
break;
}
// pro vnoření příkazů dodržujte formát viz funkce něco z důvodu přehlednosti programu
void neco() // název funkce něco bez předání vstupních nebo výstupních parametrů(hodnot)
{
if(odraz >= y)
{
if((x>(mouseX-40)) & (x<mouseX+40))
{
my=true; // změna směru koule při kontaktu koule
modpal=true; //nastavení paměti při kontaktu koule
}
}
}
Nakonec ještě funkce výstupu
print(1+1); // výstup do konzole programu to je to černé okno pod editačním oknem
println("TENIS "); // výstup do konzole programu s odřádkováním
textSize(40); // velikost textu na grafické obrazovce pro barvu se použije opět příkaz fill...
text("TENIS ",200,100); //výstup na grafickou obrazovku („text“, pozice X, pozice Y)
Nyní konečně slíbená hra: | |
/**********************************
*********** Bourání cihlel ************
* příklad řešení pro výuku programování *
* KRA Písek *
***********************************/
//- definice proměnných
int pozice_X[]=new int[40]; //souřadnice cihly v ose X
int pozice_Y[]=new int[40]; //souřadnice cihly v ose Y
boolean cihla[]=new boolean[40]; // stav cihly
int x=0; //pozice koule v ose X
int y=130; //pozice koule v ose Y
int zx=0; //pozice cihly při stavění v ose X
int zy=0; //pozice cihly při stavění v ose Y
int i=0; // indexová proměná vybírá konkrétní cihlu
int odraz=350; // pozice odrazu v ose Y
boolean mx=false; // paměť pohyby koule v ose X
boolean my=false; // paměť pohyby koule v ose Y
boolean modpal=false; // pamet dotyku s odrazkou
boolean novaz=true; // nová zeď - paměť
int rozsah_x=350; //rozměr v ose X
int rozsah_y=350; //rozměr v ose Y
//---SETUP---
void setup()
{
size(rozsah_x,rozsah_y);
frameRate(100); //počet překreslení obrazovek
odraz=rozsah_y-75;
}
//--- Hlavní tělo programu -----
void draw()
{
background(255,255,255);
if (novaz)nova_zed(); //zavolá funkci postavení nové zdi
else zed(); // pak už pokračuje funkcí stavu zdi
pohyb_x(); //funkce řeší pohyb koule v ose X
pohyb_y(); //funkce řeší pohyb koule v ose Y
fill(30,10,307); //barva koule
ellipse(x,y,30,30); //vykreslení koule
odpal(); //funkce kontroluje dotek koule z odpalem
fill(10,307,30); //barva odpalu
stroke(0,0,0); //okraj odpalu
rect(mouseX-40,odraz,80,15); //vykreslení odpalu
}
// ********** FUNKCE **************
//--funkce řeší kontakt cyhly s koulí případně ji přebarví
void zed()
{
stroke(255,255,255); //okraj cihly
for (i=0;i<40;i++) //Vyber cihel
{
if (modpal) //paměť - byl dotek s odpalem
{
if ((x>=pozice_X[i]) & (x<=(pozice_X[i]+50)))
{
if ((y>=pozice_Y[i]) & (y<=(pozice_Y[i]+25)))
{
if (cihla[i])
{
modpal=false; //zrušení - dotek s odpalem
cihla[i]=false; // paměť-vybourání cihly
}
}
}
}
if(cihla[i]) fill(193,10,10); //barva cihla
else fill(255,255,255); //barva - není cihla
rect(pozice_X[i],pozice_Y[i],50,25); // vykreslení cihly
}
}
// ---postavi novou zed -----
void nova_zed()
{
stroke(255,255,255); //okraj cihly
fill(193,10,10); //barva cihly
for (zy=1;zy<5;zy=zy+1) //Sloupec cihel
{
for (zx=0;zx<(rozsah_x+25);zx=zx+50) //Řada cihel
{
if (zy==1||zy==3) //1. a 3. řada cihel
{
rect(zx,zy*25,50,25);
pozice_X[i]=zx;
pozice_Y[i]=zy*25;
}
else //posun cihel 2. a 4. řady
{
rect(zx-25,zy*25,50,25);
pozice_X[i]=zx-25;
pozice_Y[i]=zy*25;
}
cihla[i]=true; // nastavení paměti - je cihla
i++;
}
}
novaz=false; //vymazání paměti nové zdi
}
//---pohyb koule v ose X----
void pohyb_x()
{
if(x>=(rozsah_x-15))mx=true; //změna směru koule v ose X
if(mx==false)x=x+3; //posun koule v ose X
if(mx==true)x=x-3; //posun koule v ose X
if(x<=15)mx=false; //změna směru koule v ose X
}
//---pohyb koule v ose Y---
void pohyb_y()
{
if(y>=(rozsah_y-15)) //změna směru koule v ose Y
{
my=true;
modpal=false; //dotek koule dole - smazání paměti odpalu
}
if(my==false)y=y+3; //posun koule v ose Y
if(my==true)y=y-3; //posun koule v ose Y
if(y<=15)my=false; //změna směru koule v ose Y
}
//---dotek z odrazovou plochou----
void odpal()
{
if(odraz >= (y) & (odraz <=(y+15)))
{
if((x>(mouseX-40)) & (x<mouseX+40))
{
my=true; // změna směru koule při kontaktu koule
modpal=true; //nastavení paměti při kontaktu koule
}
}
}
//-----Konec programu --------