Avatar billede zaym01 Nybegynder
13. juni 2004 - 21:35 Der er 7 kommentarer

Den smarteste måde

Hej
  Jeg leger lidt med at lave et tekstspil lige for at få prøvet nogle forskellige ting af.

  Jeg vil bygge der op så der er en klasse der hedder spiller (Brugeren) der indeholder info såsom penge, navn osv. I spillet skal der være forskellige items´og her er mit løsningsforslag til hvordan det skal ordnes.

  Lave en klasse med alle de generelle ting for items såsom, navn vægt, værdi osv og så lade klasser for specifikke items såsom våben osv arve fra denne klasse.

  i klassen spiller skal der så være en vector til hver slags item.

  Er det en god måde at bygge det op på?
Avatar billede rasmusbg Nybegynder
13. juni 2004 - 21:37 #1
Det er ikke helt tosset. Men hvorfor ikke nøjes med en enkelt vector, der så bare indeholder alle items?

:o)
Avatar billede arne_v Ekspert
13. juni 2004 - 21:38 #2
en spiller klasse som indeholder en STL vector som indeholder 0-mange
objekter af klasser der arver fra en abstrakt basis klasse item

Det tror jeg godt kunne fungere !
Avatar billede krismort Nybegynder
14. juni 2004 - 13:59 #3
Det er en god ide du har og jeg ville nok gøre noget alá;

Lave en psudo abstrakt klasse kaldet:
class GameObject
som indeholder general information om alle spil objecter som penge våben og lign
for eksempel en unik serial kode genereret for hvert object.

så ville jeg lave en klasse kaldet en GameObjectContainer som har den funktionalitet at du kan tilføje referancer af spilobjecter til den, eller pointers til spilobjekter. dette bør du gøre ved at benytte den unikke serial kode som hver GameObject har.
Jeg vil anbefale at du bruger en std::map til at gemme objekter med. eller eventuelt en std::vector hvis du ikke er så kendt med std::map.

Til din spiller klasse class Player der svarer til spilleren, ville jeg nok lave besidde en instans af en klasse kaldet Inventory som arver fra GameObjectContainer. og dermed arver muligheden for at indeholde referancer til klasser der arver fra GameObject.

Når du opretter nye instancer af GameObject'er så ville jeg nok gøre det gennem en singleton klasse kaldet Scenario, Scene, World Eller GameObjectManager. som holder styr på alle de "unikke" objekter. samt spillerne som vel entligt osse skal arve fra GameObject.

Du kunne så som du siger nedarve GameObject i klasser alà GoldCoin, Shotgun, PickAxe, måske skal nogen spilobjekter indeholde et flag som bestemmer on de kan placeres i et Inventory.

- Kristian
Avatar billede blackautt Nybegynder
14. juni 2004 - 15:39 #4
Zaym01 : Pudsigt nok er jeg også ved at lave et tekstbaseret spil (rpg) og sjovt nok står jeg også at skulle til at bruge classes i mit! Måske, hvis du har lyst, skulle vi joine forces? (Den første stump af mit spil har vundet en "Superior Coding" medalje på planetsourcecode.com)... du er meget velkommen til at kontakte mig! :)

Krismort : Med mit nuværende kendskab til klasser, synes jeg det lyder rigtigt fornuftigt, i alle tilfælde, har denne post også hjulpet mig.. hehe...
Avatar billede zaym01 Nybegynder
14. juni 2004 - 15:48 #5
blackout -> Kunne da være sjovt nok, mangler nogen til at programmere sammen med. Hvilke former for chatprogrammer bruger du. Bruger selv mest msn men har da også icq
Avatar billede blackautt Nybegynder
14. juni 2004 - 21:02 #6
Zaym01 : Jeg kan som regel findes på ICQ # 104003989 :)
Avatar billede bertelbrander Novice
14. juni 2004 - 23:45 #7
Jeg har netop lagt sidste hånd på et lille konsol spil, der bruger nogle af de samme teknikker, måske kan I hente lidt inspiration her:

http://home20.inet.tele.dk/midgaard/snip/pacman.html

Det største problem er sådan set at de forskellige objeckter har brug for at kende hinandens position, så de kan checke om de støder sammen osv.
Dette problem er ikke løst særlig elegant i spillet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester