Broadband
18-12-2007, 00:08
Ragazzi sto facendo (ci provo anche) un mio gioco di ruolo testuale e ho qualche difficoltà con gli header. Per ora ho realizzato solo qualche classe e prima di andare avanti vorrei testarle ma non ci riesco per vari errori sulle inclusioni. Preciso che sto seguendo una guida trovata sul Web. Ho fatto anche varie ricerche sul forum ma non ho trovato nessun post abbastanza completo... dato che sto facendo questo lavoro anche per esercitarmi vorrei capire precisamente le cose
Ho creato la classe Item da cui derivano due classi Weapon e Armor. Per non allungare troppo posterò solo Weapon che tanto è praticamente uguale a Armor.
Item.h
#ifndef ITEM_H
#define ITEM_H
class Item {
private:
char name[ 32 ];
int price;
public:
Item();
void SetName(char* );
char* Getname();
void SetPrice(int newprice);
int GetPrice();
};
#endif
Weapon.h
#ifndef WEAPON_H
#define WEAPON_H
#include "Item.h"
class Weapon : public Item{
private:
int damage;
public:
Weapon();
void CreateWeapon( char*, int, int );
void SetDamage(int);
int GetDamage();
};
#endif
Ecco i cpp:
Item.cpp
#include <string>
#include "Item.h"
Item::Item()
{
SetName("Nome non ancora specidicato");
SetPrice(0);
}
void Item::SetName(char* newname)
{
strcpy(name,newname);
}
void Item::SetPrice(int newprice)
{
price=newprice;
}
char* Item::Getname()
{
return name;
}
int Item::GetPrice()
{
return price;
}
Weapon.cpp
#include "Weapon.h"
Weapon::Weapon()
:Item()
{SetDamage(0);}
void Weapon::CreateWeapon(char* newname, int p, int dmg)
{
SetName(newname);
SetPrice(p);
SetDamage(dmg);
}
void Weapon::SetDamage(int dmg)
{
damage=dmg;
}
int Weapon::GetDamage()
{
return damage;
}
Ora vi posto il main. Questo probabilmente è piendo di errori che io non vedo.... l' idea è di fare un main che chiami una funzione bool Start() che dovrebbe in futuro contenere il loop principale del gioco ma che adesso è solo di test.
main.cpp
#include <iostream>
#include "Item.h"
#include "Weapon.h"
using namespace std;
// PROTOTYPES
bool Start();
void main(){
//variabili globali
bool RFCComplete=false;
cout<<"Welcome to my first (and last) text based game!\n";
cout<<"coded by JJ\n\n";
cout<<"Press Enter to continue...\n";
cin.get();
Start();
}
E cosa che non so se è lecita ho messo la funzione start() in un file Start.cpp
Start.cpp
bool Start()
{
return true; //test
}
Quando compilo ottengo: "item.cpp(13) : error C3861: 'strcpy': identificatore non trovato". Su c++ reference ho visto che per usare questa funzione devo icludere string:
Dove lo includo, in che file?
Ci ho messo 1 ora a fare 'sto post :D Spero qualcuno di buon cuore lo legga. Ha senso inoltre fare un header file (i.e. Library.h) che includa tutti i .h e includere Library.h in ogni file?
Ciao e grazie e scusatemi la lunghezza eccessiva!
Ho creato la classe Item da cui derivano due classi Weapon e Armor. Per non allungare troppo posterò solo Weapon che tanto è praticamente uguale a Armor.
Item.h
#ifndef ITEM_H
#define ITEM_H
class Item {
private:
char name[ 32 ];
int price;
public:
Item();
void SetName(char* );
char* Getname();
void SetPrice(int newprice);
int GetPrice();
};
#endif
Weapon.h
#ifndef WEAPON_H
#define WEAPON_H
#include "Item.h"
class Weapon : public Item{
private:
int damage;
public:
Weapon();
void CreateWeapon( char*, int, int );
void SetDamage(int);
int GetDamage();
};
#endif
Ecco i cpp:
Item.cpp
#include <string>
#include "Item.h"
Item::Item()
{
SetName("Nome non ancora specidicato");
SetPrice(0);
}
void Item::SetName(char* newname)
{
strcpy(name,newname);
}
void Item::SetPrice(int newprice)
{
price=newprice;
}
char* Item::Getname()
{
return name;
}
int Item::GetPrice()
{
return price;
}
Weapon.cpp
#include "Weapon.h"
Weapon::Weapon()
:Item()
{SetDamage(0);}
void Weapon::CreateWeapon(char* newname, int p, int dmg)
{
SetName(newname);
SetPrice(p);
SetDamage(dmg);
}
void Weapon::SetDamage(int dmg)
{
damage=dmg;
}
int Weapon::GetDamage()
{
return damage;
}
Ora vi posto il main. Questo probabilmente è piendo di errori che io non vedo.... l' idea è di fare un main che chiami una funzione bool Start() che dovrebbe in futuro contenere il loop principale del gioco ma che adesso è solo di test.
main.cpp
#include <iostream>
#include "Item.h"
#include "Weapon.h"
using namespace std;
// PROTOTYPES
bool Start();
void main(){
//variabili globali
bool RFCComplete=false;
cout<<"Welcome to my first (and last) text based game!\n";
cout<<"coded by JJ\n\n";
cout<<"Press Enter to continue...\n";
cin.get();
Start();
}
E cosa che non so se è lecita ho messo la funzione start() in un file Start.cpp
Start.cpp
bool Start()
{
return true; //test
}
Quando compilo ottengo: "item.cpp(13) : error C3861: 'strcpy': identificatore non trovato". Su c++ reference ho visto che per usare questa funzione devo icludere string:
Dove lo includo, in che file?
Ci ho messo 1 ora a fare 'sto post :D Spero qualcuno di buon cuore lo legga. Ha senso inoltre fare un header file (i.e. Library.h) che includa tutti i .h e includere Library.h in ogni file?
Ciao e grazie e scusatemi la lunghezza eccessiva!