//本游戏中10用T(ten)代替,小王用S代替(small),大王用B(big)代替,人机模式无抢地主环节
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<ctime>
#include<cstring>
#include<conio.h>
#include<windows.h>
using namespace std;
#include"card.h"
Card cd[54];//卡牌数组
char cd1[55];//记录某次游戏中已出的所有牌
int card_num;//已出的牌数
char j[25];//存放玩家正要出的牌
int judge[25];//标记玩家正要出的牌,1为已选中,0为未选中
int maxkey[30]={15,13,10,9,8,7,6,5,4,3,2,1,13,13,13,11,11,11,8,7,6,5,4,3,2,1,13,13,13,14};
/*各种牌型的最大key值,key值为判断出牌大小的依据,是card1类的私有成员
牌的类型(card1类中的tp):1单牌,2对,3三连对,4四连对,5五连对,6六连对,7七连对,8八连对,9九连对,10十连对,11十一连对,12十二连对
13三个,14三带一,15三带一对,16飞机,17飞机带两单,18飞机带两对,19五个顺子,20六个顺子,21七个顺子,22八个顺子,23九个顺子,24十个顺子,
25十一个顺子,26十二个顺子,27四带二单,28四带二对,29炸弹,30火箭*/
void init() //初始化牌组
{
int i;
for(i=0;i<54;++i)
{
cd[i].num=i+1;
}
cd[0].num2=12;
cd[1].num2=13;
for(i=2;i<13;++i)
{
cd[i].num2=i-1;
}
for(i=13;i<26;++i)
{
cd[i].num2=cd[i-13].num2;
}
for(i=26;i<39;++i)
{
cd[i].num2=cd[i-13].num2;
}
for(i=39;i<52;++i)
{
cd[i].num2=cd[i-13].num2;
}
cd[52].num2=14;
cd[53].num2=15;
cd[0].type='A';
cd[0].color=1;
for(i=1;i<9;++i)
{
cd[i].type=i+49;
cd[i].color=1;
}
cd[9].type='T';
cd[9].color=1;
cd[10].type='J';
cd[10].color=1;
cd[11].type='Q';
cd[11].color=1;
cd[12].type='K';
cd[12].color=1;
for(i=13;i<26;++i)
{
cd[i].type=cd[i-13].type;
cd[i].color=2;
}
for(i=26;i<39;++i)
{
cd[i].type=cd[i-13].type;
cd[i].color=3;
}
for(i=39;i<52;++i)
{
cd[i].type=cd[i-13].type;
cd[i].color=4;
}
cd[52].type='S';
cd[52].color=0;
cd[53].type='B';
cd[53].color=0;
}
void random() //洗牌
{
int index;
Card temp;
srand(time(NULL));
for(int i=0;i<54;++i)
{
index=rand()%(54-i)+i;
if(index!=i)
{
temp=cd[i];
cd[i]=cd[index];
cd[index]=temp;
}
}
}
void show() //显示手牌
{
cout<<"已出的牌:";
if(card_num==0)
cout<<"暂无出牌"<<endl;
else
{
for(int i=0;i<card_num-1;++i)
cout<<cd1[i]<<",";
cout<<cd1[card_num-1]<<endl;
}
}
void show2(int n) //显示手牌的选择框
{
for(int i=0;i<n;++i)
cout<<j[i]<<' ';
cout<<endl;
}
#include"function.h"
#include"play_1.h"
#include"play_2.h"
//包含实现人人模式,人机模式的相关函数
void fmenu() //欢迎界面
{
cout<<endl<<endl<<endl<<"******************************************************";
cout<<endl<<endl<<endl;
cout<<endl<<" 斗地主"<<endl<<endl<<endl<<endl<<" ************ 请按任意键进入系统菜单! ************"<<endl;
getch();
system("cls");
}
char menu() //菜单
{
char a;
cout<<endl<<" *******************主菜单******************"<<endl<<endl;//主菜单
cout<<"1:人机模式"<<endl;
cout<<"2:人人模式"<<endl;
cout<<"0:退出游戏"<<endl;
cout<<endl<<"***********************************************"<<endl;
cout<<endl<<"请选择您所需要的功能:";
cin>>a;
while (a!='1'&&a!='2'&&a!='0')
{
cout<<endl<<"输入错误!请重新按照要求输入。";
cout<<endl<<"请选择您所需要的功能:";
cin>>a;
}
return a;
}
int main()
{
system("cls");
system("color 75");
bool end;
fmenu();
while(1)
{
switch(menu())
{
case '1'://人机模式
{
play2();
end=false;
}
break;
case '2'://人人模式
{
play1();
end=false;
}
break;
case '0':
end=true;
break;
default:
putchar('\a');
}
if(end)
{
break;
}
if(!end)
{
system("CLS");
}
}
return 0;
}
C++斗地主小游戏
需积分: 48 183 浏览量
2017-12-19
21:07:15
上传
评论 1
收藏 19KB ZIP 举报
飞天神龟
- 粉丝: 11
- 资源: 3
最新资源
- 基于MPC的仿真轨迹跟踪模块MPC-based Simulink trajectory tracking module
- 递归地求解Fibonacci数列.pdf
- python十三种图像特征提取代码合集.zip
- 基于51单片机DS1302实时时钟数码管显示
- 简单的Python示例母亲节祝福.pdf
- 基于Python+FFmpeg的视频和音频的处理+剪辑+源码+开发文档+项目解析(高分优秀项目)
- 母亲节祝福html源码示例.pdf
- 基于51单片机DS1302实时时钟LCD1602显示
- (54节)视频号0粉起号课,逻辑梳理,技能提升,完整版-课程网盘链接提取码下载 .txt
- Mendix5-添加自定义逻辑
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈