Forum: 1 fråga

Forum huvudsida -> Programmering -> 1 fråga

Sidor: 1

Till botten

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* Smiley

-------------------------
Pillar med VB.NET, C++ och GameMaker

Senast redigerad 11:06 - 27:e Maj 2006


Sidor: 1

Forum huvudsida -> Programmering -> 1 fråga
Atom feed

Du får inte posta i den här tråden | Till toppen