关于C++课程设计的编写
程序简介:一个对抗游戏,根据随机产生的数字决定双方的输赢。设计要求:1.当双方进行对抗时,游戏者可根据自身的牌点决定是否继续下注,例如拿到A,把握增大,则在计算机的拍点出现之前加大赌注,但不超过5点。
2.将双方牌点的比较扩大为两张牌点之和,若出现一组对子,则对子牌点大于任何单牌,若双方均为对子,这比较牌点之和。
源代码:
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#define MAX 13 //牌的最大点为13
class War
{
int plyr, comp;//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 = 26; //初始分数
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, comp = 0;
}
int War::Player()//返回玩者牌点
{
return plyr;
}
int War::Computer()//返回计算机的牌点
{
return comp;
}
void War::Initialize()//随机产生双方牌点
{
// srand ( time (NULL) );
plyr = rand()%MAX+2;//牌点为2-14,14点为A
comp = 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();//轮次增加
cout << "你的牌是一张";
if(Play.Player() == 11)
cout << "J" << endl;
else if(Play.Player() == 12)
cout << "Q" << endl;
else if (Play.Player() == 13)
cout << "K" << endl;
else if (Play.Player() == 14)
cout << "A" << endl;
else
cout << Play.Player() << endl;
cout << "计算机有一张";
if(() == 11)
cout << "J" << endl;
else if(() == 12)
cout << "Q" << endl;
else if (() == 13)
cout << "K" << endl;
else if (() == 14)
cout << "A" << endl;
else
cout << () << endl;
if (Play.Player() > ()) //判断双方牌点的大小,决定分数的增减
Play.Increase();
else if (Play.Player() < ())
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; //否则退出系统
}
}