南京理工大学C++课程设计扑克游戏文档格式.docx
- 文档编号:17495731
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:23
- 大小:1.51MB
南京理工大学C++课程设计扑克游戏文档格式.docx
《南京理工大学C++课程设计扑克游戏文档格式.docx》由会员分享,可在线阅读,更多相关《南京理工大学C++课程设计扑克游戏文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
Play_Deck();
voidPlayCard(Deck&
);
//用指定的那副牌对四个人分别赋值
intDeleteOne(introw,intcolumn);
//删除参数为第row个人的第column张牌
voidSortDeckFace();
//对整副牌面值排序
voidSortDeckSuit();
//对整副牌花色排序
ints(inta);
//用于调用私有数据来显示排序后的牌
4.添加人性化界面,初始运行程序时加了一个友好的界面,用p,u,k,e这四个字母拼成了中文的”扑克”二字,增加游戏的趣味性,并附带输出了自己的姓名和学号。
5.在主函数中调用DeckMakeDriver()函数,通过DeckMakeDriver()中的一个do循环控制主菜单的循环出现,并对可能出现的玩家输入问题进行分析修改。
5.进入四个不同功能的游戏界面时,操作后询问是否显示被操作后的牌,再询问是否返回主菜单,否的话退出游戏。
6.在对玩家的牌的面值以及花色排序时,在类PlayDeck()中增加ints()函数,用于调用私有数据来显示排序完后的牌。
四、源程序结构流程框图与说明
开始
生成一副新牌
输入洗牌次数进行洗牌
依次输入给四位玩家的牌并显示
主菜单
1删除某位玩家一张牌
是否显示牌
显示被操作后的牌
是否回主菜单
是
2删除各位玩家一张牌
显示被操作的牌
4按玩家牌的花色排序
显示操作后的牌
按玩家牌的面值排序
结束
5显示各位玩家的牌
五.源程序代码以及草稿原件
#include<
iostream.h>
string.h>
conio.h>
stdlib.h>
stdio.h>
time.h>
voidProgram_Init();
intmain();
voidCenter_Text(char[]);
intget_number();
charGet_Key();
voidDeckMakeDriver();
intgetRandInt(intmin,intmax);
voidprog_close();
classPerDeck;
//增加
classPlaying_Card
private:
intm_Value;
charm_Face[3];
charm_Suit;
Playing_Card();
voidshowcard();
voidCard_Make(int);
friendclassPerDeck;
//增加
classDeck
Playing_Cardm_cardarray[54];
//
intm_lastdelt;
Deck();
voidMakeDeck();
voidDeal_One();
voidShowDeck();
voidDeckShuff(int);
voidRemove_Card();
classPerDeck//增加PerDeck
Playing_CardmCard[20];
PerDeck(){}
voidMakePerDeck(Deck&
int);
//end
classPlayDeck//增加PlayDeck
PerDeckmDeck[4];
PlayDeck(){}
voidPlayCard(Deck&
intDeleteAll(int,int,int,int);
voidSortDeckFace(int);
voidSortDeckSuit(int);
voids(int);
voidPerDeck:
:
MakePerDeck(Deck&
d,inta)//PerDeck成员的函数
nNum=a;
inti=0;
while(i<
a&
&
d.m_lastdelt!
=53)
mCard[i++]=d.m_cardarray[++d.m_lastdelt];
}
Show()
intnNewLine=0;
Center_Text("
此玩家的牌:
"
cout<
<
endl;
while(nNewLine<
nNum)
{
if(nNewLine%5==0)cout<
mCard[nNewLine++].showcard();
}
SortFace()
Playing_Cardk;
for(inti=0;
i<
nNum;
i++)
for(intj=0;
j<
nNum-i-1;
j++)
if(mCard[j].m_Value>
mCard[j+1].m_Value)
{
k=mCard[j];
mCard[j]=mCard[j+1];
mCard[j+1]=k;
}
SortSuit()
for(intj=0;
if(mCard[j].m_Suit>
mCard[j+1].m_Suit)
mCard[j]=mCard[j+1];
intPerDeck:
Delete(intn)
if(n>
cout<
超出这副牌张数"
returnnNum;
else
cout.width(5);
删除牌:
;
mCard[n-1].showcard();
while(n-1<
mCard[n-1]=mCard[n++];
return--nNum;
}//end
voidPlayDeck:
PlayCard(Deck&
k)//PlayDeck的成员函数
inta,b,c,d;
请依次输入给四位玩家的牌数(总张数小于等于54)。
cin>
>
a>
b>
c>
d;
if(a+b+c+d>
54)
Center_Text("
张数超过牌的张数,退出游戏。
exit(0);
mDeck[0].MakePerDeck(k,a);
mDeck[1].MakePerDeck(k,b);
mDeck[2].MakePerDeck(k,c);
mDeck[3].MakePerDeck(k,d);
玩家1"
mDeck[0].Show();
玩家2"
mDeck[1].Show();
玩家3"
mDeck[2].Show();
玩家4"
mDeck[3].Show();
intPlayDeck:
DeleteOne(introw,intcolumn)
mDeck[row-1].Delete(column);
return1;
DeleteAll(inta,intb,intc,intd)
mDeck[0].Delete(a);
mDeck[1].Delete(b);
mDeck[2].Delete(c);
mDeck[3].Delete(d);
}
SortDeckFace(intb)
mDeck[b-1].SortFace();
SortDeckSuit(intb)
mDeck[b-1].SortSuit();
s(inta)
mDeck[a-1].Show();
}//endl
intmain()
srand((unsigned)time(NULL));
intCard_Number=0;
Program_Init();
DeckMakeDriver();
prog_close();
Playing_Card:
Playing_Card()
inti;
for(i=1;
=3;
)
{
m_Face[i]='
'
i++;
}
m_Suit='
m_Value=0;
voidProgram_Init()
扑克牌游戏"
cout<
endl<
\n"
;
byYoriFish"
单击<
Return>
继续"
cin.get();
charGet_Key()
charx;
x=cin.get();
endl;
returnx;
voidPlaying_Card:
showcard()
{
"
m_Face;
cout.width
(1);
m_Suit;
voidCenter_Text(charShellText[80])
intlength;
intcenter;
length=strlen(ShellText);
center=(80-length)/2;
for(;
center!
=0;
center--)
cputs("
cputs(ShellText);
intget_number()
intInput_Integer=0;
Pleaseenteranintegerbetween0and53.54toquit."
//
cin>
Input_Integer;
returnInput_Integer;
Card_Make(intnum)
inti=0;
charj;
intface_num=num%13;
if(num/13==4)//增加
switch(face_num)
case0:
strcpy(m_Face,"
S"
break;
case1:
B"
}
else//增加
switch(face_num)
case0:
A"
case9:
10"
case10:
J"
case11:
Q"
case12:
K"
default:
j=char(face_num+49);
if(i<
3)
i++;
m_Face[i]=j;
i++;
m_Face[i]=NULL;
break;
if(num<
=12)m_Suit=6;
if(num>
12&
num<
=25)m_Suit=3;
25&
=38)m_Suit=5;
38&
=51)m_Suit=4;
if(num==52)m_Suit=1;
if(num==53)m_Suit=2;
if(num>
51)m_Value=14;
m_Value=face_num+1;
voidDeckMakeDriver()
Deckdeck_1;
deck_1.MakeDeck();
deck_1.ShowDeck();
Get_Key();
intb;
请输入洗牌次数。
b;
deck_1.DeckShuff(b);
endl<
chary;
PlayDeckfour;
four.PlayCard(deck_1);
endl<
four.Show();
inta=0;
do
**********************************"
主菜单"
删除某位玩家一张牌请输入1"
删除各位玩家一张牌请输入2."
按玩家的牌面值排序请输入3."
按玩家的牌花色排序请输入4."
显示各位玩家的牌面请输入5."
cin>
a;
if(a==1)
intb,c;
chary;
cout<
请输入要删除第几位玩家的第几张牌。
cin>
c;
four.DeleteOne(b,c);
是(Y)否(N)显示删除后玩家的牌?
cin>
y;
y=toupper(y);
if(y=='
Y'
)four.s(b);
if(a==2)
intb,c,d,e;
请依次输入欲删除各玩家牌的序号。
cin>
d>
e;
four.DeleteAll(b,c,d,e);
y;
)four.Show();
if(a==3)
intb;
请输入要对那位玩家排序"
four.SortDeckFace(b);
是(Y)否(N)显示排序后的牌?
if(a==4)
four.SortDeckSuit(b);
if(a==5)
four.Show();
是(Y)否(N)回到菜单?
y=toupper(y);
}while(y=='
voidDeck:
MakeDeck()
m_lastdelt=53;
//
while(m_lastdelt>
-1)
{
m_cardarray[m_lastdelt].Card_Make(m_lastdelt);
m_lastdelt--;
}
ShowDeck()
intindex=m_lastdelt+1;
intnewline=0;
新的一副牌"
while(index<
=53)//
if(newline%11==0)cout<
m_cardarray[index].showcard();
newline++;
index++;
intgetRandInt(intmin,intmax)
intnumToReturn;
numToReturn=rand();
numToReturn=numToReturn%(max-min+1)+min;
returnnumToReturn;
DeckShuff(inttimes)
intx,split;
洗牌"
for(x=0;
x<
=times;
x++)
{
split=getRandInt(20,35);
Decktopdeck;
Deckbottomdeck;
intbottomdeckindex=1;
inttopdeckindex=1;
for(i=0;
=split-1;
)
topdeck.m_cardarray[topdeckindex]=this->
m_cardarray[i];
topdeckindex++;
for(i=(split);
54;
)//
bottomdeck.m_cardarray[bottomdeckindex]=this->
bott
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南京理工大学 C+ 课程设计 扑克 游戏