2015-10-06 74 views
0

我在学习如何使用类,但我很难理解它,所以我试图创建一个游戏。class * object = new class [size]

我想访问堆中的10名玩家,我想初始化每个玩家的技能。我真的不知道我在做什么,请帮助我。如果你认为我的程序结构是垃圾,请告诉我并告诉我如何正确地做到这一点。由于

的main.cpp

int main() 
{ 
    Player *p = new Player[10]; 
    p->createPlayer(&p,10); 
} 

头文件

class Player 
{ 
    public: 
     Player(); 
     ~Player(); 

     int genRanNum(int); 
     void createPlayer(Player *, int); 
    private: 
     int plyrSkill1,plyrSkill2,plyrSkill3; 
     int plyrId; 
}; 

CPP文件

Player::Player() 
{ 
} 

int Player::genRanNum(int num) 
{ 
    return 1+(rand()%num); 
} 

void Player::createPlayer(Player *p, int si) 
{ 

    for(int i = 0; i < si; i++) 
    { 
     *p->staId = i; 
     *p->staSkills1 = genRanNum(10); 
     *p->staSkills2 = genRanNum(10); 
     *p->staSkills3 = genRanNum(10); 
    } 
} 
+1

'Player'和'Stafff'之间没有关系,'* p-> x'等价于'*(p-> x)',而不是'(* p) - > x'。你应该看看获得[书](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 – molbdnilo

+0

对不起,这是假设是球员=新球员没有工作人员我试图先工作人员然后去做一个游戏生病编辑它 –

+1

问自己你的代码的每个部分做什么,并且你是否想要做它。因为它没有什么意义。 – juanchopanza

回答

0

Player *p = new Player[10];的第一行是在堆上创建一个由10个玩家组成的数组。

看来,要“初始化”这10名球员与第二线p->createPlayer(&p,10);但代码是错误的:

createPlayer()功能回路始终工作在相同的播放器(它增加我,但p是总是一样)。

试试这个:

class Player 
{ 
    public: 
     Player(); /// can be private if players can be instantiated only by createPlayer() 
     ~Player(); 

     static int genRanNum(int); 
     static Player* createPlayer(int); 
    private: 
     int plyrSkill1,plyrSkill2,plyrSkill3; 
     int plyrId; 
}; 

的createPlayer()和getRanNum()是静态的,因为它们是类方法(它不涉及到一个特别的实例)

Player * Player::createPlayer(int si) 
{ 
    Player *player = new Player(); 
    player->staId = si; 
    player->staSkills1 = genRanNum(10); 
    player->staSkills2 = genRanNum(10); 
    player->staSkills3 = genRanNum(10); 

    return player; 
} 

最后在主:

int main() 
{ 
    std::vector<Player *> p(10); 
    for (int iPlayer=0; iPlayer<10; iPlayer++) 
    { 
     p[iPlayer] = Player::createPlayer(iPlayer); 
    } 

    ... 
    /// Don't forget to delete players 
} 
0

我想学习如何使用类,但我很难 试图了解它,所以我试图创建一个游戏。

既然你想创建一个游戏,想象所有的角色和场景或任何你想要的。

模式游戏的你的想法/看法..

例子:

game model

一旦你已经确定你所需要的所有类和它们之间的关系,现在就可以开始编码他们用你想要的任何语言。

我知道这需要时间,但它是学习设计的一种更好的方式,从长远来看,这些技能将会有所帮助。

相关问题