| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1003 人关注过本帖, 1 人收藏
标题:关于C++课程设计的编写
只看楼主 加入收藏
米纳多
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-9-17
收藏(1)
 问题点数:0 回复次数:3 
关于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;    //否则退出系统
    }
}
搜索更多相关主题的帖子: 课程 编写 设计 
2008-09-17 13:45
chenliangnbanba
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-9-20
收藏
得分:0 
void War::GameOver()//游戏结束时的相关信息
{
       cout << endl << "游戏结束! 谢谢参与." << endl;
       cout << "你用了 " << War::Loops() << " 轮." << endl;
}
//其中的War::Loops()改为Loop;就能正确输出轮数,若调用函数Loops,则Loop会重复计算

不过你真的很强哦!

初学!
2008-09-21 00:52
chenlou
Rank: 1
来 自:湖北黄冈武穴
等 级:新手上路
威 望:2
帖 子:49
专家分:0
注 册:2008-9-21
收藏
得分:0 
楼上的兄弟,这是俺根据你课程设计的第二问写的程序
#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)
2008-09-22 21:11
快速回复:关于C++课程设计的编写
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025724 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved