WebProg-2014/Gyakorlat3

A MathWikiből
(Változatok közti eltérés)
 
(egy szerkesztő 2 közbeeső változata nincs mutatva)
1. sor: 1. sor:
=== Mindenek elõtt ===
+
== Mindenek elõtt ==
  
Hozzatok létre egy új projectet '''Asteroids''' néven. Hozzatok benne létre egy '''asteroids''' package-et. Majd töltsétek le [http://math.bme.hu/~kkovacs/ innen] a hiányos java file-okat.
+
Hozzatok létre egy új projectet '''Asteroids''' néven. Hozzatok benne létre egy '''asteroids''' package-et. Majd töltsétek le [http://math.bme.hu/~kkovacs/webprog2015/asteroids.zip innen] a hiányos java file-okat.
  
=== 1. Asteroid ===
+
== 1. Asteroid ==
  
 
Egészítsétek ki az '''Asteroid''' osztályt, mely reprezentálni fogja a játékban az aszteroidákat. A következõ (privát) adattagjai vannak:
 
Egészítsétek ki az '''Asteroid''' osztályt, mely reprezentálni fogja a játékban az aszteroidákat. A következõ (privát) adattagjai vannak:
22. sor: 22. sor:
 
** eltolja az aszteroida pozícióját az (x, y) vektorral.
 
** eltolja az aszteroida pozícióját az (x, y) vektorral.
  
 
+
== 2. SpaceShip ==
=== 2. SpaceShip ===
+
  
 
Egészítsétek ki a '''SpaceShip''' osztályt, mely a játékos ûrhajóját reprezentálja. A következõ (privát) adattagjai vannak:
 
Egészítsétek ki a '''SpaceShip''' osztályt, mely a játékos ûrhajóját reprezentálja. A következõ (privát) adattagjai vannak:
44. sor: 43. sor:
 
** a kapott '''float''' hosszú, '''rotation''' irányú vektorral eltolja a hajót, használva a Math.cos(Math.toRadians(?)) és Math.sin(Math.toRadians(?)) függvényeket.
 
** a kapott '''float''' hosszú, '''rotation''' irányú vektorral eltolja a hajót, használva a Math.cos(Math.toRadians(?)) és Math.sin(Math.toRadians(?)) függvényeket.
  
=== 3. További kiegészítések ===
+
== 3. További kiegészítések ==
  
 
Írjátok meg az '''Asteroid''' utolsó hiányzó metódusát:
 
Írjátok meg az '''Asteroid''' utolsó hiányzó metódusát:

A lap jelenlegi, 2015. február 25., 11:28-kori változata

Tartalomjegyzék

Mindenek elõtt

Hozzatok létre egy új projectet Asteroids néven. Hozzatok benne létre egy asteroids package-et. Majd töltsétek le innen a hiányos java file-okat.

1. Asteroid

Egészítsétek ki az Asteroid osztályt, mely reprezentálni fogja a játékban az aszteroidákat. A következõ (privát) adattagjai vannak:

  • position: használja a korábban megírt Position-t
  • size: egész szám

A következõ metódusokat kellene megírni hozzá:

  • konstruktorok
    • default
    • Position és int-bõl
    • két float és egy int-bõl

Ha a konstruktorokat megírtátok az a jutalmatok, hogy elindul a játék, ha az AsteroidsGame osztályt megnyitjátok és futtatjátok. Ahhoz, hogy történjen is valami, meg kell írni még a további metódusot:

  • move:
    • nem ad vissza semmit
    • kap két float-ot x és y-t
    • eltolja az aszteroida pozícióját az (x, y) vektorral.

2. SpaceShip

Egészítsétek ki a SpaceShip osztályt, mely a játékos ûrhajóját reprezentálja. A következõ (privát) adattagjai vannak:

  • position: használja a korábban megírt Position-t
  • rotation: float ami tárolja fokokban, hogy mennyire van elforgatva a hajó

A konstruktor már meg van írva, a következõ metódusokat kellene megírni, ha ezek megvannak akkor a billentyûzet nyilaival lehet irányítani a hajót, space-el lehet lõni:

  • move:
    • nem ad vissza semmit
    • kap két float-ot x és y-t
    • eltolja az ûrhajó pozícióját az (x, y) vektorral.
  • turn:
    • nem ad vissza semmit
    • kap egy float-ot
    • a kapott float-al elforgatja a hajót (az eddigi rotációhoz hozzáveszi a kapottat), vigyázva arra, hogy 360 fok föle sose menjen (ekkor ugorjon vissza 0 fokra).
  • accelerate:
    • nem ad vissza semmit
    • kap egy float-ot
    • a kapott float hosszú, rotation irányú vektorral eltolja a hajót, használva a Math.cos(Math.toRadians(?)) és Math.sin(Math.toRadians(?)) függvényeket.

3. További kiegészítések

Írjátok meg az Asteroid utolsó hiányzó metódusát:

  • destroy:
    • egy aszteroida tömböt ad vissza
    • nem kap semmit
    • az elõadáson látotthoz hasonló aszteroida szétesést valósítja meg, azaz létrehoz annyi új eggyel kisebb aszteroidát amekkora a mérete és visszaadja ezek tömbjét. Igaz ez nem a legjobb megoldás, de most legyenek mind az eredeti aszteroida pozícióján.
    • Ne zavarjon meg, hogy AsteroidExtended-et ad vissza, ezt kezeljétek úgy, mintha simán Asteroid lenne.

Randomizálhatjátok az újonnan létrejövõ aszteroidák számát / méretét a Random osztály segítségével, egy példa:

Random rand = new Random();
int randomInteger = rand.nextInt();
float randomFloat = rand.nextFloat();

Ha mindennel megvagytok és nem találtok már szépíteni valót a kódon nézzetek bele elõször hogyan mûködik a SpaceShipExtended osztály, ez talán a legolvashatóbb, majd az AsteroidExtended, stb.

Ha igazán menõk vagyotok, akkor próbáljátok meg elérni, hogy az aszteroidák folyamatosan forogjanak, ehhez a kód legjelentõsebb részét az AsteroidExtended draw metódusában és a SpaceShipExtended draw metódusában találjátok, hasonlítsátok össze ezt a kettõt.

Személyes eszközök