请高手们帮忙改下这个程序的错误,谢了
关于C++课程设计的编写程序简介:一个对抗游戏,根据随机产生的数字决定双方的输赢。
设计要求:1.当双方进行对抗时,游戏者可根据自身的牌点决定是否继续下注,例如拿到A,把握增大,则在计算机的拍点出现之前加大赌注,但不超过5点。
2.将双方牌点的比较扩大为两张牌点之和,若出现一组对子,则对子牌点大于任何单牌,若双方均为对子,这比较牌点之和。
#include <iostream.h>
#include <stdlib.h>
#define MAX 13 //牌的最大点为13
class War
{
int plyr[2], comp[2];//plyr玩者的牌点, comp计算机的牌点
static int Score;//玩者的分数,当分数为0或50时游戏结束
static int Loop;//出牌次数,游戏结束时给出总的出牌次数
public:
int* Player();//返回玩者的牌点
int* Computer();//返回计算机的牌点
void Initialize();//给出玩者和计算机的牌点
int CheckScore();//返回玩者分数
void GameOver();
War();//缺省构造函数,初始化对象
static int Increase();//分数增加
static int Decrease();//分数减少
static int Loops();//出牌次数增加
};
int War::Score = 2; //初始分数
int War::Loop = 0;//比赛轮数
int War::Increase()//增分,每轮赢一分
{
++Score;
return Score;
}
int War::Decrease()//减分,每轮输一分
{
--Score;
return Score;
}
int War::Loops()//双方出牌一次,为一轮
{
Loop++;
return Loop;
}
War::War()//构造函数,初始双方牌点为0
{
plyr[2]=0;
comp[2]=0;
}
int* War::Player()//返回玩者牌点
{
return plyr;
}
int* War::Computer()//返回计算机的牌点
{
return comp;
}
void War::Initialize()//随机产生双方牌点
{
// srand ( time (NULL) );
plyr[0] = rand()%MAX+2;//牌点为2-14,14点为A
plyr[1] = rand()%MAX+2;
comp[0] = rand()%MAX+2;
comp[1] = rand()%MAX+2;
}
int War::CheckScore()//返回玩者分数
{
return Score;
}
void War::GameOver()//游戏结束时的相关信息
{
cout << endl << "游戏结束! 谢谢参与." << endl;
cout << "你用了 " << War::Loops() << " 轮." << endl;
}
void main()
{
War Play;
int x;
cout << endl << "准备开始!" << endl << endl;
Play.Initialize();//随机产生双方牌点
Play.Loops();//轮次增加
//玩家两张牌
if((Play.Player())[0]==(Play.Player())[1])
{
cout <<"你的牌是两张:";
if((Play.Player())[0] == 11)
cout << "J" << endl;
else if((Play.Player())[0] == 12)
cout << "Q" << endl;
else if ((Play.Player())[0] == 13)
cout << "K" << endl;
else if ((Play.Player())[0] == 14)
cout << "A" << endl;
else
cout << (Play.Player())[0] << endl << endl ;
}
else
{
cout << "你的牌是一张";
if((Play.Player())[0] == 11)
cout << "J" ;
else if((Play.Player())[0] == 12)
cout << "Q" ;
else if ((Play.Player())[0] == 13)
cout << "K" ;
else if ((Play.Player())[0] == 14)
cout << "A" ;
else
cout << (Play.Player())[0] ;//第一张牌
cout << "和一张";
if((Play.Player())[1] == 11)
cout << "J" << endl;
else if((Play.Player())[1] == 12)
cout << "Q" << endl;
else if ((Play.Player())[1] == 13)
cout << "K" << endl;
else if ((Play.Player())[1] == 14)
cout << "A" << endl;
else
cout << (Play.Player())[1] << endl <<endl;//第二张牌
}
//计算机的两张牌
if((())[0]==(())[1])
{
cout <<"计算机的牌是两张:";
if((())[0] == 11)
cout << "J" << endl;
else if((())[0] == 12)
cout << "Q" << endl;
else if ((())[0] == 13)
cout << "K" << endl;
else if ((())[0] == 14)
cout << "A" << endl;
else
cout << (())[0] << endl;
}
else
{
cout << "计算机的牌是一张";
if((())[0] == 11)
cout << "J" ;
else if((())[0] == 12)
cout << "Q" ;
else if ((())[0] == 13)
cout << "K" ;
else if ((())[0] == 14)
cout << "A" ;
else
cout << (())[0] ;//第一张牌
cout << "和一张";
if((())[1] == 11)
cout << "J" << endl;
else if((())[1] == 12)
cout << "Q" << endl;
else if ((())[1] == 13)
cout << "K" << endl;
else if ((())[1] == 14)
cout << "A" << endl;
else
cout << (())[1] << endl <<endl;//第二张牌
}
//比较玩家和计算机的点数
if ((Play.Player())[0]==(Play.Player())[1] && (())[0]!=(())[1]) //判断双方牌点的大小,决定分数的增减
Play.Increase();
else if ((Play.Player())[0]!=(Play.Player())[1] && (())[0]==(())[1])
Play.Decrease();
else if((Play.Player())[0]+(Play.Player())[1]>(())[0]+(())[1])
Play.Increase();
else if((Play.Player())[0]+(Play.Player())[1]<(())[0]+(())[1])
Play.Decrease();
else
cout << "势均力敌!" << endl;
//返回分数
Play.CheckScore();
cout << endl << "你的分数是: " << Play.CheckScore() << endl;
switch (Play.CheckScore())
{
case 0:
case 52:
Play.GameOver(); break;//分数为0或52则游戏结束
default:
cout << endl <<"继续 1 [退出 0]" << endl;//选择游戏是否继续进行
cin >> x;
if (x == 1) main(); //若是递归调用主函数
break; //否则退出系统
}
}
但这个程序有点问题,就是在最后输入0的时候会弹出错误方框:
错误框.rar
(14.04 KB)