扑克牌游戏Word文档格式.docx
- 文档编号:19471272
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:17
- 大小:20.30KB
扑克牌游戏Word文档格式.docx
《扑克牌游戏Word文档格式.docx》由会员分享,可在线阅读,更多相关《扑克牌游戏Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
voidMove();
//删去大小王
voidSendDeck();
//发牌
voidDelete_One_Card(int);
//删去一张牌;
Playing_CardDriver[4][13];
//四个玩家的牌
voidblank();
voidshowout();
//输出开始界面
voidCenter_Text(char[]);
//将char[]中的内容居中;
charGet_Key();
//输入一个字符;
voidDeckMakeDriver();
//测试函数;
intgetRandInt(intmin,intmax);
//得到一个随机数;
voidprog_close();
//暂停程序;
voidshow(char*,double);
//打字效果
//***************************************Main******************************************************
voidmain()//主函数用于调用其他函数;
srand((unsigned)time(NULL));
//设置随机数;
intCard_Number=0;
showout();
//调用此函数显示相关信息;
DeckMakeDriver();
//调用此函数;
exit(-1);
//退出程序
}
Playing_Card:
:
Playing_Card()//Playing_Card类中的构造函数,产生的对象为一张空牌;
inti;
for(i=0;
i<
3;
)
{
m_Face[i]='
'
;
i++;
}
m_Suit='
voidshow(char*pp,doublen)
for(unsignedinti=0;
strlen(pp);
i++)
{
intm;
m=(int)n;
Sleep(m);
cout<
<
pp[i]<
flush;
}
voidshowout()
cout<
endl<
endl;
show("
********欢迎进入扑克牌游戏********\n\n\n"
1);
puk\n"
pppppppukkkkkkkkkkkkkkk\n"
puukkkkkkkkk\n"
ppuukk\n"
ppuukkkkkkkkk\n"
ppuee\n"
puee\n"
ppueee\n"
pueeeee\n\n\n"
设计者:
宗柳\n\n"
学号:
05081901\n\n"
班级:
0508190102\n\n"
请按<
Enter>
键继续..."
cin.get();
charGet_Key()//从用户处得到一个字符,可用来暂停程序;
charx;
x=cin.get();
cout<
endl;
returnx;
voidPlaying_Card:
showcard()//显示一张牌;
{cout<
setw(4);
//输出四个空格;
m_Face;
//输出牌的面值;
cout.width
(1);
m_Suit;
//输出牌的花色;
"
voidCenter_Text(charShellText[80])//将ShellText[80]中的字符居中显示;
intlength;
intcenter;
length=strlen(ShellText);
//计算出字符串ShellText[]的长度;
center=(80-length)/2;
//计算出离屏幕左端的空格数;
for(;
center!
=0;
center--)
cputs("
);
//输出空格;
cputs(ShellText);
//输出ShellText[80]中的内容;
Card_Make(intnum)//制造一张牌;
inti=0;
charj;
intface_num=num%13;
switch(face_num)
case0:
strcpy(m_Face,"
A"
break;
case9:
10"
case10:
J"
case11:
Q"
case12:
K"
default:
{
j=char(face_num+49);
//将face_num+49的计算结果转换成字符;
if(i<
3)
i++;
m_Face[i]=j;
i++;
m_Face[i]=NULL;
break;
}
if(num<
=12)m_Suit=6;
//制造13张牌从黑桃A-黑桃K;
if(num>
12&
&
num<
=25)m_Suit=3;
//制造13张牌从红桃A-红桃K;
25&
=38)m_Suit=5;
//制造13张牌从梅花A-梅花K;
38&
=51)m_Suit=4;
//制造13张牌从方片A-方片K;
voidDeckMakeDriver()
inti,m;
system("
cls"
//清屏;
Deckdeck_1;
//定义一个Deck类的对象;
Center_Text("
现在创建了一副新牌"
//调用Center_Text()函数,将括号内的信息输出,并使其居于屏幕的中间
deck_1.MakeDeck();
//制造一副牌;
deck_1.ShowDeck();
//显示一副牌;
键开始洗牌......"
Get_Key();
//用户任输入一个字符,用来暂停程序;
deck_1.DeckShuff(250);
//洗牌250次;
//显示洗好后的牌
键继续......"
//用户任输入一个字符,用来暂停程序;
endl<
deck_1.Move();
//删去牌中的大、小王;
//将大小王删去后的牌显示;
键开始发牌......"
"
================================================================================"
deck_1.SendDeck();
//发牌给四个玩家;
玩家
(1)的牌为:
for(i=0;
13;
i++)deck_1.Driver[0][i].showcard();
//显示此玩家
(1)的牌;
blank();
//输出各张牌所对应的序号于牌的下方;
玩家
(2)的牌为:
i++)deck_1.Driver[1][i].showcard();
//显示此玩家
(2)的牌;
玩家(3)的牌为:
i++)deck_1.Driver[2][i].showcard();
//显示此玩家(3)的牌;
玩家(4)的牌为:
i++)deck_1.Driver[3][i].showcard();
//显示此玩家(4)的牌;
键显示游戏玩家菜单......"
***********************游戏玩家菜单***********************"
1-玩家
(1)"
2-玩家
(2)"
3-玩家(3)"
4-玩家(4)"
**********************************************************"
请输入所要处理牌的玩家的序号:
intinput1;
charinput2;
do{
if(input2=='
y'
||input2=='
Y'
cout<
cin>
>
input1;
switch(input1)
case1:
for(m=0;
m<
13-a;
m++)deck_1.Driver[input1-1][m].showcard();
//显示此玩家
(1)的牌;
blank();
//输出各张牌所对应的序号于牌的下方;
deck_1.Delete_One_Card(input1);
//删除玩家
(1)的第input1张牌;
case2:
13-b;
//显示此玩家
(2)的牌;
//删除玩家
(2)的第input1张牌;
case3:
13-c;
//显示此玩家(3)的牌;
//删除玩家(3)的第input1张牌;
case4:
13-d;
//显示此玩家(4)的牌;
//删除玩家(4)的第input1张牌;
default:
输入错误!
exit(-1);
是否还要处理其余玩家的牌?
若是,按<
Y>
若否,按任意键退出!
\n请按键选择:
input2;
}while(input2=='
}
voidDeck:
MakeDeck()//制造一副牌;
m_lastdelt=53;
//一副牌的总张数;
while(m_lastdelt>
1)//先制造除大、小王外的其余52张牌;
m_cardarray[m_lastdelt-2].Card_Make(m_lastdelt-2);
//调用Card_Make(intnum)函数制造52张牌;
m_lastdelt--;
//每制造一张牌m_lastdelt-1;
if(m_lastdelt==1)//制造一张大王;
strcpy(m_cardarray[m_lastdelt+51].m_Face,"
W"
m_cardarray[m_lastdelt+51].m_Suit=2;
if(m_lastdelt==0)//制造一张小王;
strcpy(m_cardarray[m_lastdelt+53].m_Face,"
w"
m_cardarray[m_lastdelt+53].m_Suit=1;
ShowDeck()
intindex=m_lastdelt;
//经调用MakeDeck()函数后,此时的m_lastdelt值为0;
intnewline=0;
while(index<
=53)
if(newline%13==0)cout<
//屏幕一行显示11张牌;
m_cardarray[index].showcard();
//调用showcard()函数,显示每一张牌
newline++;
//记录已显示的牌的张数;
index++;
SendDeck()//按牌的顺序依次将牌发给四个玩家;
inti;
Driver[0][i]=m_cardarray[i*4];
Driver[1][i]=m_cardarray[i*4+1];
Driver[2][i]=m_cardarray[i*4+2];
Driver[3][i]=m_cardarray[i*4+3];
intgetRandInt(intmin,intmax)//得到一个随机数,并将其返回;
intnumToReturn;
numToReturn=rand();
numToReturn=numToReturn%(max-min+1)+min;
returnnumToReturn;
DeckShuff(inttimes)//洗牌次数
intx,split;
//split是分开成两部分的位置,如上部分、下部分
以下为洗过后的牌"
for(x=0;
x<
=times;
x++)
{
split=getRandInt(20,35);
//通过getRandInt(intmin,intmax)函数得到一个随机数;
Decktopdeck;
//制造两副新的空牌topdeck和bottomdeck;
Deckbottomdeck;
intbottomdeckindex=1;
inttopdeckindex=1;
=split-1;
)//将原来牌的前split张赋值给topdeck;
topdeck.m_cardarray[topdeckindex]=this->
m_cardarray[i];
topdeckindex++;
for(i=(split);
54;
)//将原来牌中剩余的牌赋值给bottomdeck;
bottomdeck.m_cardarray[bottomdeckindex]=this->
bottomdeckindex++;
intdeckoutindex=0;
//用来记录从topdeck.cardarray[split]和bottomdeck.cardarray[54-split]中向deck_1.cardarray[54]中已赋值的牌的总数;
intnumcardstomovetop;
//记录随机数;
intnumcardstomovebottom;
intj;
inth=0;
bottomdeckindex=54-split;
//bottomdeck.cardarray[54]中所拥有的牌的张数为54-split张并赋值给bottomdeckindex;
topdeckindex=split;
//topdeck.cardarray[54]中所拥有的牌的张数为split张并赋值给topdeckindex;
while(deckoutindex<
=53)
numcardstomovetop=getRandInt(2,7);
//从上部分抽取的张数,是2-7之间的随机数
numcardstomovebottom=getRandInt(2,7);
//从下部分抽取的张数,是2-7之间的随机数;
for(j=0;
j<
=numcardstomovebottom;
j++)//将从下部分抽取的牌中的第一张插入deck_1.cardarray[54]中;
{
if(bottomdeckindex>
0)
//检查从bottomdeck.cardarray[54-split]中抽取的牌是否还有剩余;
{
this->
m_cardarray[deckoutindex]=bottomdeck.m_cardarray[bottomdeckindex];
deckoutindex++;
bottomdeckindex--;
}
for(h=0;
h<
=numcardstomovetop;
h++)
//将从上部分抽取的牌全部插入deck_1.cardarray[54]中;
{
if((topdeckindex>
0)&
(deckoutindex<
=53))
//检查从topdeck.cardarray[split]中的牌是否还有剩余并检查deck_1.cardarray[54]中的牌是否全被洗过;
{
this->
m_cardarray[deckoutindex]=topdeck.m_cardarray[topdeckindex];
deckoutindex++;
topdeckindex--;
}
}
this->
m_lastdelt=0;
//将m_lastdelt重新修改为0,以便后面显示牌;
voidblank()//输出每个玩家的牌所对应的序号;
intj;
for(j=1;
j<
=13;
j++)
if(j<
=10)cout<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 扑克牌 游戏