




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第C語(yǔ)言實(shí)戰(zhàn)之紙牌游戲目錄1.基本要求2.運(yùn)行界面3.代碼解釋
1.基本要求
一副沒有花牌(J、Q、K、A、大小王)的撲克牌,兩個(gè)人進(jìn)行紙牌游戲,其中一個(gè)人為用戶,另一個(gè)人為計(jì)算機(jī);
每輪每人各發(fā)5張牌,各自以這5張牌建立二叉排序樹;
由用戶先出,輪流出牌,每次只能出一張并且要比別人出的大,如:用戶出3,計(jì)算機(jī)則要出比3大的牌,沒有則選擇不出;
最先出完的人獲勝。
2.運(yùn)行界面
1.首頁(yè)面
2.游戲說(shuō)明
3.開始游戲
4.開始出牌
5.游戲結(jié)束
3.代碼解釋
#includestdio.h
#includestdlib.h
#includewindows.h
#includetime.h
intcard[5][2];//分別標(biāo)記玩家和用戶已經(jīng)出過的牌
intplayercard[5];//玩家的手牌
intcomputercard[5];//電腦的手牌
charbhuase[5];
charchuase[5];
typedefstructnode
intdata;
structnode*LChild;
structnode*RChild;
}node;
typedefstructtree
intdata;
structnode*LChild;
structnode*RChild;
}tree;
//游戲說(shuō)明
voidPlayingCardsyxsm()
printf("每輪每人各發(fā)5張牌,各自以五張牌建立二叉樹,由用戶先出,輪流出牌,\n");
printf("每次只能出一張并且要比別人出的大,\n");
printf("如:用戶出3,計(jì)算機(jī)則要算出比3大的牌,沒有則選擇不出;\n");
printf("最先出完的人獲勝。\n");
//發(fā)牌
voidPlayingCardsfp()
intplayer;
intcomputer;
//玩家和電腦各發(fā)五張牌
for(inti=0;ii++){
player=rand()%9+2;
printf("玩家發(fā)到的牌:%d\n",player);
playercard[i]=player;
computer=rand()%9+2;
printf("電腦發(fā)到的牌:%d\n",computer);
computercard[i]=computer;
//出牌
voidPlayingCardscp()
intplayer=0;//玩家當(dāng)前回合出的牌
intcomputer=0;//電腦當(dāng)前回合出的牌
intplayercount=0;//玩家的出牌數(shù)
intcomputercount=0;//電腦的出牌數(shù)
boolflag=false;
//當(dāng)每次都出現(xiàn)最大值時(shí),游戲同樣最多進(jìn)行5回合
for(intm=0;mm++)
//在雙方都有牌出的時(shí)候,一共最多進(jìn)行5回合出牌
for(intk=0;kk++)
for(intj=0;jj++)
//確定當(dāng)前牌可以出,大于對(duì)方的出牌,且自己沒有出過這張牌
if(playercard[j]computercard[j][0]==0)
printf("玩家出牌%c%d\n",bhuase[j],playercard[j]);
playercount++;//玩家出牌數(shù)+1
//標(biāo)記玩家已經(jīng)出過這張牌了
card[j][0]=1;
player=playercard[j];
Sleep(800);//在頭函數(shù)#includewindows.h中,起到休眠程序的作用
break;
//若果玩家已經(jīng)出完5張牌,則玩家獲勝,退出循環(huán)
if(playercount==5)
printf("玩家贏了!");
flag=true;
break;
for(intj=0;jj++)
//確定當(dāng)前牌可以出,大于對(duì)方的出牌,且自己沒有出過這張牌
if(computercard[j]playercard[j][1]==0)
printf("電腦出牌%c%d\n",chuase[j],computercard[j]);
computercount++;//電腦出牌數(shù)+1
//標(biāo)記電腦已經(jīng)出過這張牌了
card[j][1]=1;
computer=computercard[j];
Sleep(800);
break;
//若果電腦已經(jīng)出完5張牌,則電腦獲勝,退出循環(huán)
if(computercount==5)
printf("電腦贏了!");
flag=true;
break;
//如果玩家的牌大于電腦的最大牌后,將電腦當(dāng)前回合的牌值重置為0,繼續(xù)進(jìn)行下一回合
if(playercomputer)computer=0;
//如果電腦的牌大于玩家的最大牌后,將玩家當(dāng)前回合的牌值重置為0,繼續(xù)進(jìn)行下一回合
if(computerplayer)player=0;
if(flag)break;
//發(fā)完牌后玩家的手牌
voidPlayingCardsxswj()
printf("玩家\n");
printf("%d%d%d%d%d\n",playercard[0],playercard[1],playercard[2],playercard[3],playercard[4],playercard[5]);
//發(fā)完牌后電腦的手牌
voidPlayingCardsxsdn()
printf("電腦\n");
printf("%d%d%d%d%d\n",computercard[0],computercard[1],computercard[2],computercard[3],computercard[4],computercard[5]);
//初始化樹的頭結(jié)點(diǎn)為空
voidtreechushihua(node*t)
t=NULL;
//建立平衡二叉樹
node*treecharu(node*t,intkey)
//如果頭結(jié)點(diǎn)為空,就將當(dāng)前節(jié)點(diǎn)設(shè)置為根節(jié)點(diǎn)
if(t==NULL)
node*p;
p=(node*)malloc(sizeof(node));
p-data=key;
p-LChild=NULL;
p-RChild=NULL;
t=p;
//如果頭結(jié)點(diǎn)不為空,則進(jìn)行平衡二叉樹的插入操作
else
//插入結(jié)點(diǎn)的值小于根節(jié)點(diǎn),則插入左子樹
if(keyt-data)
t-LChild=treecharu(t-LChild,key);
//插入結(jié)點(diǎn)的值大于等于根節(jié)點(diǎn),則插入右子樹
else
t-RChild=treecharu(t-RChild,key);
returnt;
//將玩家手牌存儲(chǔ)到平衡二叉樹中
node*jianlib(node*t)
inti,key;
for(i=0;ii++)
key=playercard[i];
t=treecharu(t,key);
returnt;
//將電腦手牌存儲(chǔ)到平衡二叉樹中
node*jianlic(node*t)
inti,key;
for(i=0;ii++)
key=computercard[i];
t=treecharu(t,key);
returnt;
//順序輸出玩家或電腦手牌
voidtreepaixu1(node*t)
if(t!=NULL)
treepaixu1(t-LChild);
printf("%d",t-data);
treepaixu1(t-RChild);
//先序遍歷玩家平衡二叉樹
voidtreepaixu2(node*t,int*p)
if(t==NULL)return;
else
//先序遍歷,將玩家手牌有序化
treepaixu2(t-LChild,p);
playercard[(*p)++]=t-data;
treepaixu2(t-RChild,p);
//先序遍歷電腦平衡二叉樹
voidtreepaixu3(node*t,int*p)
if(t==NULL)return;
else
//先序遍歷,將電腦手牌有序化
treepaixu3(t-LChild,p);
computercard[(*p)++]=t-data;
treepaixu3(t-RChild,p);
//主函數(shù)
intmain()
intk=0;
//隨機(jī)函數(shù),通過時(shí)間種子來(lái)獲取隨機(jī)數(shù)種子,獲得隨機(jī)數(shù)
srand((unsigned)time(NULL));
intn=0;
//選擇菜單
while(k!=-1)
puts("");
puts("");
puts("");
printf("\t\t\t****紙牌游戲****\n");
printf("\t\t\t****1.游戲說(shuō)明****\n");
printf("\t\t\t****2.開始游戲****\n");
printf("\t\t\t****3.開始出牌****\n");
printf("\t\t\t****4.游戲結(jié)束****\n");
printf("\t\t\t******************\n");
puts("");
printf("\t\t**********************************\n");
printf("\t\t**********************************\n");
puts("");
printf("\t\t\t請(qǐng)輸入(1、2、3、4):\n");
scanf("%d",
switch(k){
//游戲說(shuō)明
case1:PlayingCardsyxsm();break;
//發(fā)牌階段
case2:{
//發(fā)牌
PlayingCardsfp();
//建立玩家二叉樹
node*t1=NULL;
t1=jianlib(t1);
printf("玩家手牌為:");
treepaixu1(t1);
//建立電腦二叉樹
node*t2=NULL;
t2=jianlic(t2);
puts("");
printf("電腦手牌為:");
treepaixu1(t2);
//玩家手牌有序化
n=0;
treepaixu2(t1,
//電腦手牌有序化
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025小鴨苗買賣服務(wù)合同
- 智能手機(jī)在傳染病防控中的應(yīng)用指南
- 骨科亮點(diǎn)護(hù)理實(shí)踐體系
- 青年醫(yī)學(xué)教師授課比賽實(shí)施要點(diǎn)
- 人教版小學(xué)一年級(jí)語(yǔ)文上冊(cè)第八單元測(cè)試題
- 造口疝氣規(guī)范化護(hù)理要點(diǎn)
- 二手房交易方式之委托交易
- 學(xué)校下學(xué)期質(zhì)量管理工作總結(jié)模版
- 2024年09月26日更新【Attest】2024年美國(guó)媒體使用報(bào)告
- 服裝合作協(xié)議書
- 急診急救考試題及答案3
- 2025年廣東清遠(yuǎn)市“人才引育”工程專項(xiàng)事業(yè)編制高層次人才招聘31人歷年自考難、易點(diǎn)模擬試卷(共500題附帶答案詳解)
- 鋼結(jié)構(gòu)機(jī)電工程施工方案
- 基于計(jì)算思維培養(yǎng)的小學(xué)人工智能啟蒙教育課程設(shè)計(jì)與實(shí)施
- 機(jī)電安裝工程總承包合同
- 湘教版四年級(jí)下冊(cè)科學(xué)各單元知識(shí)點(diǎn)復(fù)習(xí)
- 課件-2025年春季學(xué)期 形勢(shì)與政策 第一講-加快建設(shè)社會(huì)主義文化強(qiáng)國(guó)9
- 2025年度江西撫州高新區(qū)區(qū)屬國(guó)企業(yè)公開招聘紀(jì)檢監(jiān)察工作人員10人高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 汽車租賃掛靠協(xié)議書
- 北京市歷年中考語(yǔ)文現(xiàn)代文閱讀之非連續(xù)性文本閱讀8篇(截至2024年)
- 公司內(nèi)部文件管理規(guī)定及辦法
評(píng)論
0/150
提交評(píng)論