广岛之恋表达了什么:c++简单大富翁游戏源码编译过程中的小问题

来源:百度文库 编辑:高校问答 时间:2024/04/28 12:37:44
#include<iostream.h>
#include<iomanip.h>
#include<string.h>

#define _GOLD 2 //标志有金子的格子
#define _TRAP 3 //标志有陷阱的格子
#define _OBSTACLE 4 //标志有障碍物的格子

class simgame
{
public:
simgame(char *nm,int);
void terminate(){delete []name;};
void init(int data[],int n);
void run();
void display();
private:
char *name;
int way[50]; //标志环道格子种类的数组
int location;
int life;
int money;
int isdead; //判断是否死亡
int isforward; //判断是顺行还是逆行
};

simgame::simgame(char *nm,int isfd=1)
{
strcpy(name,nm);
isforward=isfd;
location=0;
life=money=100;
isdead=0;
}

void simgame::init(int data[],int n)
{
int nn=0; //用于循环data数组以保证把way数组完整赋值
int i;
way[0]=0;
if(isforward)
{
for(int i=1;i<50;i++)
{
if(nn=n)nn=0; //如果data数组到达末尾,从头开始
way[i]=data[nn];
nn++;
}
}
else
{
nn=n-1;
for(i=1;i<50;i++)
{
if(nn<0)nn=n-1;
way[i]=data[nn];
nn--;
}
}
}

void simgame::display()
{
cout<<"老鼠"<<name<<":";
if(life>0)
{
cout<<"位置="<<setw(5)<<location;
cout<<"生命="<<setw(5)<<life;
cout<<"金钱="<<setw(5)<<money;
}
else
cout<<"Dead!";
}

void simgame::run()
{
int i;
int isstop=0;
if(isdead)return;
if(isforward) //正常行走的过程
{
for(i=1;i<5;i++)
{
if(location+i==50)
location-=50; //如果到达末尾则从头开始走,并把位置变量重新赋值
if(way[location+i]==_OBSTACLE) //如果途中有障碍物,则停止
{
location+=i;
isstop=1; //标志,表示是否停留
break;
}
}
if(!isstop)
location+=4;
switch(way[location])
{
case _GOLD:money+=50;break;
case _TRAP:life-=80;break;
default:break;
}
if(life<=0)isdead=1;
}
else //逆行的过程
{
for(i=1;i<4;i++)
{
if(location+i==50)
location-=50;
if(way[location+i]==_OBSTACLE)
{
location+=i;
isstop=1;
break;
}
}
if(!isstop)
location+=3;
switch(way[location])
{
case _GOLD:money+=50;break;
case _TRAP:life-=80;break;
default:break;
}
if(life<=0)isdead=1;
}
}

void main()
{
simgame mice1("A");
simgame mice2("B",0);
int data[20]={1,2,2,2,3,2,3,4,1,2,3,4,1,2,3,4,3,2,2,1};
mice1.init(data,20);
mice2.init(data,20);
for(int i=0;i<5;i++)
{
mice1.run();
mice2.run();
cout<<"轮次:"<<i+1<<endl;
mice1.display();
mice2.display();
}
mice1.terminate();
mice2.terminate();
}
可以编译,但不可以运行,求大虾给诊断一哈,谢谢谢谢
题目:一条由50个格子组成的环形跑道,其中一个格子是起点,两只鼠都从起点按相反方向出发,一只鼠按正方向前进且每次前进4格,另一只鼠按反方向出发,且每次前进3个格子,每只鼠出发时都有100点生命值和100个金子;跑道由普通格子,带金币的格子,带陷阱的格子,带障碍的格子等四种组成!

规则:a,起点是普通格子,任何普通格子鼠可以顺利通过.
b.鼠每路过或停在一个带金币的格子上就增加50个金币
c.鼠停留在陷阱的格子上,损失生命80点.
d.鼠路过带障碍的格子时,本轮停止前进.

1.并实现相关的类,同时模拟此游戏
输入:已在main()中提供一个大小为20的一维整型数组data,数值可为1,2,3,4,分别表示四种类型的格子,其中data(0)表示起点.
输出:10轮次内,每轮走完后两只老鼠的各自位置,生命,和拥有的金币数.

要main()函数应为如下格式
void main()
{
int data[20]={1,2,2,2,3,2,3,4,1,2,3,4,1,2,3,4,3,2,2,1};
simgame game;
game.init(data,20);
game.run(5)
game.terminate();
}

输出:
轮次1:
老鼠A:位置=##生命=##金钱=##
老鼠B:位置=##生命=##金钱=##
轮次2:
.......
宏:
#define _GOLD 2 //金子
#define _TRAP 3 //陷阱
#define _OBSTACLE 4 //障碍物

name指针没有初始化,你就strcpy(name,nm);当然有问题
可以:name = new char[length];//length有nm的长度决定,然后再strcpy