Kezdőoldal » Számítástechnika » Programozás » Hogyan kell megtervezni egy...

Hogyan kell megtervezni egy jó nagy osztályt amiben további nagy osztályok példányai is lesznek de előtte ezeket is el kéne készíteni?

Figyelt kérdés

Egy 2d oldalnézetes verekedős játék rengeteg varázslattal támadással olyan speciális támadásokkal is amit csak bizonyis karaktert lehetne támadni azt is csak akkor ha pont úgy jönnek ki a kombók.


Bonyolult az egésznek a váza.


Legyen egy bázisosztály amibe azok a támadások kerülnek majd amiket mindeggyik karakter tud. Pl a mozgás. Vagy én nem is tudom,higy kéne.


Animációk is rengeteg volna külön kéne csinálni egy nagy animationcontroller osztályt de ezt sem látom át hogyan kéne.


Nagy effekt osztály meg a többi áááá.


Hiába tanultam meg a nyelvi elemeket szar* sem érek vele ha ez ennyire bonyolult lesz. Ti hogyan csinálnátok. C# nyelv.


2015. máj. 16. 16:47
 1/6 anonim ***** válasza:
LoL
2015. máj. 16. 17:15
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:
Én hogyan csinálnám? Hát ha fingom sincs, hogyan kell egy programot megtervezni, akkor előbb programtervezést tanulnék és gyakorolnék, a legegyszerűbb példáktól. Kezdve azzal, hogy a toronyóralánccal játékot azonnal elfelejtem.
2015. máj. 16. 17:40
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:

Milyen magyar könyv van programtervezésre?

Le írhattátok volna az elképzeléseiteket,hogyan csinálnátok erre lettem vokna kíváncsi. Azért írtam le nagyjából hogy miket képzelek el a játékba és nem hülyeségből.


Az első válaszolónak pedig üzenem,hogy a te válaszodra sokkal inkább illő a lol mint az én kérdésemre.

2015. máj. 16. 18:22
 4/6 anonim ***** válasza:

[link]

nézelődj, a felrakott projektek doksiait is nézd meg, ezek egy projekt elkészítését mutatják be, teljesen a legelejétől.

2015. máj. 16. 23:08
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:

Kezd a leglényegesebb dolgokkal, a többit pedig mindig told hozzá. Nyilván nem fogsz első nekifutásra mortal combatot írni, de valahol el kell kezdeni. Kezdetnek talán annyi, hogy 2 kocka sétál a pályán. Aztán ezek egy osztály öröklődve tudnak ugrani. Majd szétválaszthatod őket kocka1 és kocka2-re. Egyik képes csúszni, mondjuk másik teleportál. (Később úgy is 3× újraírod az egészet :D )

A szétválasztás annyira nem nagy dolog:


JátékObjektum

|

|

Karakter, Lövedék, TerepTárgy, Látványrészecskék, stb


A játékobjektum a mindent közrefogó osztály. Mivel minden ebből öröklődik neki érdemes a legalapvetőbb tulajdonságokat adni, pl elhelyezkedés, x,y pozíció.

Egy rajzolás függvényt is ide helyeznék el, így a játék ciklusban mikor egy listába foglalod az összes tárgyat, ezt meghívva mindenki rajzolódik:


Lista<JátékObjektum> lista = new ...

JátékObjektum lövedék = new Lövedék(...)

JátékObjektum karakter= new Karakter(...)

...


lista.add(lövedék)

lista.add(karakter)

.....



ciklus(még nincs vége a játéknak)

foreach(JátékObjektum jo : lista){

jo.tick(ms); // utolsó cselekvés óta ms millisecundum telt el

jo.rajzol();

}



Ez egy egyszerű példa, ahogy majd egy-egy objektum cselekvést hajt végre és kirajzolódik.

A játékObjektum részen egy nagyon alapvető kirajzolást írsz, ami csak megjeleníti egy képsorozatot, míg a bonyolultabb(karakter) részen, már ezeket felülírod.


Karakter

|

|

CsúszóKocka, TeleportálóKocka, VarázslóKocka


Karakterben lehetségessé teszed, hogy a játékos használhassa a varázslat1, varázslat2, ütés, mozgás stb függvényeket, aztán később a különböző karaktereknél ezek működését felülírod. Karakter simán lehet absztrakt. Így ugyanarra a gomb lenyomására a csúszó és a teleportáló mást fog csinálni.



Rajzolás se vészes. Játék elején betöltöd az összes animációt és egyszerű pointerként hozzáadod a Kockákhoz a megfelelőt, pl

Képek{

static CsúszóKockaBeállás1 = betölt(...../beállás1.png)

static CsúszóKockaBeállás2 = betölt(...../beállás1.png)

...


static betölt(link){

...

}

}


CsúszóKocka öröklés Karakter{

KarakterKépekPointerek.beállás1 = Képek.CsúszóKockaBeállás1

}


Így időleges képváltakozással biztosíthatsz egy animációt, ez 2d-nél mindig jól működött.


Remélem irányt adtam. Ha valami részletesebben érdekel, kérdezz.

2015. máj. 17. 10:17
Hasznos számodra ez a válasz?
 6/6 A kérdező kommentje:
Kössz adtam zöldet.
2015. máj. 17. 15:22

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!