Forum huvudsida -> Programmering -> 1 fråga
Sidor: 1
The_code | 22:17 - 25:e Maj 2006 | Post #1 | |
Medlem Inlägg: 28 Skicka PM |
hej...jag har en fråga. Jag håller på med c++. Jag har gjort en klass som heter player och en som heter monster. Allt funkar bra. Men om jag nu vill ha fler monster klasser (olika moster) måste player's funktioner kolla om det är en FIENDE. Då måste alla moster klasser vara en FIENDE. Hur gör jag det? ------------------------- Pillar med VB.NET, C++ och GameMaker |
Burglar | 15:57 - 26:e Maj 2006 | Post #2 | |
Medlem Inlägg: 59 Skicka PM |
du kan ju låta din monster-klass ärva ifrån player då jag förmodar att den innehåller t.ex. namn, styrka, hälsa osv. Sedan skulle du kunna göra så att konstruktorn för monster, tar några parametrar när du skapar dina monster. new Monster(namn, styrka, hälsa, ... ); På så sätt så får du olika monster direkt när du skapar dem. Det kanske inte alls var det du menade , men på detta sätt behöver du inte någon extra klass för nya monster. ------------------------- ,,hh signatur! jag är skeptisk! |
The_code | 16:40 - 26:e Maj 2006 | Post #3 | |
Medlem Inlägg: 28 Skicka PM |
Nja. Det var ju inte de jag hade tänkt mig. Men tack för svaret ändå. ------------------------- Pillar med VB.NET, C++ och GameMaker |
Nissebosselasse | 19:00 - 26:e Maj 2006 | Post #4 | |
Medlem Inlägg: 490 Skicka PM |
Hur använder du klasserna i koden? Om du t.ex. ska ha tio monster, hur hade du tänkt att spara ner dom? Tio olika variabler, eller en lista? Om du använder dig av arv, så är Burgler inne på rätt spår. Du använder dig av en basklass, som har liv, namn, vapen etc. Från denna ärver du dels en spelarklass, och dels en (eventuellt flera) monsterklass(er). Basklassen skulle kunna innehålla en "flagga", som berättar vilken sida klassen är på - om den är med spelaren, eller mot. Flaggan består egentligen bara av en variabel som är satt till ett av två värden (där det ena värdet bestämmer att klassen är på spelarens sida, och det andra säger att klassen är mot spelaren). Men, som sagt, det beror lite på hur du har löst frågan med flera olika monster. ,,r det så här: void main () { CMonster monster1, monster2, monster3; } ...d.v.s., flera olika variabler, eller så här: void main () { std::vector<CMonster*> monsters; monsters.push_back (new CMonster); monsters.push_back (new CMonster); monsters.push_back (new CMonster); } ...d.v.s., med en lista? ------------------------- http://pushingcows.se Gula Nallen |
The_code | 21:29 - 26:e Maj 2006 | Post #5 | |
Medlem Inlägg: 28 Skicka PM |
Hmm.. Nu när jag tänkar har ni rätt båda två. Det är något sånt jag borde göra. Nej, jag använder inte någon lista. Jo. jag vill att det här ska fungera (ungefär): class Player { public: void check(MONSTER M); //Hur ska detta vara? }; void Player::check(MONSTER M) { //Hur ska detta vara? cout << M.HP; } class Monster1() { public: int HP; Monster1() {HP=20;} }; class Monster2() { public: int HP; Monster2() {HP=30;} }; int main() { Player P; Monster1 M1; Monster2 M2; P.check(M1); P.check(M2); } Jag kom just på en grej. Kan man inte använda templates till detta? EDIT: eller överlagrade funktioner *lampa över huvudet* ------------------------- Pillar med VB.NET, C++ och GameMaker Senast redigerad 11:06 - 27:e Maj 2006 |
Sidor: 1
Forum huvudsida -> Programmering -> 1 fråga
Du får inte posta i den här tråden | Till toppen
Datum
2024-12-22 16:14
Vecka: 51
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.