Need for Speed
Elkészítjük a Need for Speed egyszerűsített változatát. A játékban lesz egy út és egy autó.A grafikus felület 640x480 pixel lesz. A játék elején az út egyenes és a grafikus felület közepén helyezkedik el. Az út szélessége 100 pixel. Az út alján helyezkedik el az autó. Az autót nyilakkal irányíthatjuk jobb-balra. A játékosnak az úton kell tartania az autót. Az út 48 sorból áll, mindegyik 10 pixlenyi magas. Függőlegesen az autó minig ugyanott van. A játék során az út mozog, nem az autó. Az út lefelé "gördül", az első sor véletlenszerűen generálódik, de úgy hogy +- 10 pixel legyen a különbség a második sorhoz képest. Tehát az első sor generálódik, majd lefelé mozog, amíg el nem éri a vászon alját. A játékban be van biztosítva, hogy az út ne menjen ki a vászon jobb, illetve bal oldalán.

Először létrehozzuk a canvas-t, és a sorok változóban fogjuk tárolni a sorok számát, hogy esetleg később könnyen változtatni tudjunk rajta. A vászon zöld színű lesz, amire mi a fehér utat fogjuk rajzolni. Ez egyszerűbb, mint a fehérre rajzolni a zöldet, főként mert az két részből áll. Így a két téglalap helyett elegendő lesz középre egy fehéret rajzolni.
Minden sort az útból az ut változóban fogunk tárolni, jelöljük őket 0.-tól 47. sorig. A mi esetünkben a sor koordinátája a sor baloldali x koordinátája. A játék elején az út középen van. A vásznunk közepe 320-ban van, vagyis az út bal széle 320 - 50 (mivel 100 a szélessége) = 270 lesz.
A következő lépésben megrajzoljuk az utat. Elkészítjük az utatrajzol() eljárást. Az eljárás először törli az utat a tag alapján. Ezután forciklus segítségével végigmegyünk az összes soron és mindegyikbe kirajzolunk egy fehér téglalapot, amik az utat fogják képezni.

Az időzítőben (animacio() eljárás) meghívjuk az utatmozgat() eljárást, amely az utat egy sorral lejjebb mozdítja és generál egy új első sort. Ezután kirajzoljuk az utat, majd újabb animációt indítunk.
Most meg kell írnunk az utatmozgat() eljárást. Ebben számoljuk ki az új sor koordinátáját. A jelenlegi első sor koordinátájából számoljuk ki méghozzá úgy, hogy vagy hozzáadunk 10-et, vagy kivonunk belőle. Ezután azonban meg kell bizonyosodnunk arról, hogy az út nem fog kilódni a vászonból, vagyis a koordináta nem lehet kisebb 0-nál és nem lehet nagyobb mint 540. Ezt könnyen ellenőrizhetjük két if segítségével. Ha megvan a megfelelő koordináta, akkor azt beszúrjuk a listánk elejére az insert utasítással. Az utolsó sort pedig a pop utasítással töröljük.
Most már csak el kell indátanunk az animacio() eljárást és már működik is az út generálása.


Következhet maga az autó. Meg kell jegyzenünk az autó x és y koordinátáját, ezért globálisan definiáljunk egy autox és autoy változót és olyan értékeket rendeljünk hozzájuk, hogy az autó az utolsó előtti sor közepén legyen. Létrehozunk egy eljárásokat is, amik a nyilak segítségével fogják mozgatni az autónkat jobbra-balra.


Feladatok
1. Egészítsd ki a programot, hogy az ellenőrizze, hogy az autó az úton van-e.
2. Módosítsd a programot úgy, hogy a játékosnak maximum 3 balesete lehessen (amikor letér az útról). Ha kimerítette a lehetőségeket, a játék megáll és kiírja, milyen hosszú utat (mennyi sort) tettünk meg.
3. Módosítsd a programot úgy, hogy a játék fokozatosan nehezebb legyen. Pl az út keskenyedhet, gyorsulhat az animáció...
4. Javíts a játékon úgy, hogy hosszabb ideig menjen az út jobbra vagy balra.
5. Egészítsd ki a játékot, hogy a játékmenetet egy fájlba mentse. Így azt vissza lehet nézni ebben vagy egy másik programban. Gondold végig, mi mindent kell elmenteni a fájlba, hogy lehető legkevesebb adat legyen elmentve (kisebb legyen a fájlméret).
6. Helyezz el egy gombot a játékban, amivel bekapcsolhatjuk az autopolótát (a számítógép maga fog játszani).
7. Javíts a játék grafikáján, pl legyen lágyabb az út azzal, hogy nem 10 pixeles sorokból fog állni.
