ImageVerifierCode 换一换
格式:DOC , 页数:20 ,大小:224KB ,
资源ID:2156619      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2156619.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(二十一点游戏设计报告-学位论文.doc)为本站上传会员【可****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

二十一点游戏设计报告-学位论文.doc

1、 课程设计实验报告书 程序名:二十一点游戏 班级:12计算机科学与技术一班 指导老师:韩静 小组成员:刘宇、徐含、叶安江 二十一点游戏设计报告 一、 问题描述: 要求支持键盘操作以及计算机的自动判断,并能够在界面上及时准确的显示当前牌面、点数,实现得分的自动加减及显示。 二、功能分析: 二十一点游戏需解决的问题包括: 1、 游戏开始、进行、结束过程中的界面设计,以及发牌等动画的显示。 2、 产生随机的牌点以及显示在牌面。 3、 如何利用键盘实现开牌、要牌等操作。 4、 如何实现发牌的动画效果。 5、 如何实现筹码的录入以及玩家赌金的自动加减。

2、 6、 如何保存赌金的数值,以便于下次开始游戏时能够显示最新的赌金。 三、 程序设计: 1、 程序设计总体结构:首先,初始化进入图形模式,提示按键开始游戏。开始游戏,进入游戏的主题部分,处理程序实现过程中的各种事件和函数。在处理过程中,判断游戏是否结束。若未结束,从开始界面处执行程序,若结束,则跳出循环,结束游戏。 初始化参数 开始界面、动画 开始游戏 处理和实现游戏进行过程中的的各种事件和功能 游戏结束?? 关闭图形模式 否 是 主

3、函数为: main() { int num1,num2,i,p; char index; p=1; kaishijiemian(); /*调用开始界面的函数*/ gundong(); /*调用滚动函数*/ while(p==1){ dujin(1); /*读取赌金*/ youxijiemian()

4、 /*进入游戏界面*/ srand((unsigned)time(NULL )); for(i=1;i<=10000;i++){ num1=rand()%52; num2=rand()%52; index=pai[num1]; pai[num1]=pai[num2]; pai[num2]=index; } fapai();

5、 /*发牌函数*/ panduan(); /*判断函数*/ dujin(2); /*保存赌金*/ ky=bioskey(0); switch(ky){ case Key_Esc: p=0;break; default: p=1;break;} } closegraph(); } 2、 界面设计 开

6、始界面: 游戏界面: 结束界面: 3、 函数设计: 本程序由一个主函数,13个子函数,共14个函数组成。 函数间相互关系如下图: 初始化参数 开始游戏 gongdong() kaishi() 开始界面、动画 dujin(1)读取赌金 youxijiemian()( 1

7、wanjiapai() fapai() 处理事件与实现功能 jisuanDN() diannaopai() Computerds>16? jisuanDN() DN() 是 是

8、 panduan() playerds p=1??? dujin(1)保存赌金 jieshu(n) 游戏结束 Computerds 关闭图形模式 否 详细描述: 文件名 函数原型 函数功能 函数处理 21di

9、an .c kaishi() 创建游戏的进入界面 通过绘图、画线、填色、显示数字等生成界面 gundong() 从进入界面到切到游戏界面时产生一段动画 youxijiemian() 游戏进行时的背景,其上显示各种提示以及筹码、赌金等 对玩家键入的键码、定义的值进行分析判断,通过绘图、画线、填色、显示数字等生成游戏界面 fapai() 游戏进行中发牌的总控制 通过对WJ()、DN()、wanjiapai()、 diannaopai()、jisuanWJ()、jisuanDN()等函数的调用,实现对发牌的总控制 panduan() 比较玩家、电脑的点数大小,并计算

10、出相应的赌金 对fapai()函数中传递来的playerds、computerds进行判断,判定游戏的胜负,并改变money的值 jieshu() 显示双方点数。提示游戏操作,生成游戏结果 通过绘图、画线、填色、显示数字等生成界面, WJ() DN() 对游戏过程中玩家和电脑的进行操作,便于融入程序,起过渡作用 wanjiapai(int g) diannaopai(int h) 绘制游戏过程中的牌以及显示点数 通过对movebar、 movebar1的调用实现图形化牌、牌点 jisuanWJ ()、 jisaunDN() 计算牌的点数,并赋值到compu

11、terds、playerds中 通过一系列的比较,得出双方的牌点数 四、 小组分工 全部的图形界面、及动画设计 刘宇 文件部分,以及键值框的设计 徐含 主函数以及除图形函数、文件部分以外的子函数 叶安江 五、 源代码: #include #include #include #include #include #include #include #include #d

12、efine Key_Esc 0x11b #define Key_Enter 0x1c0b #define Key_Y 0x1579 #define Key_N 0x316e int winner; /*胜者数*/ int playerds,computerds; /*玩家、电脑的点数*/ char player[6]; char computer[4]; int money=2000; int wager;

13、/*下注的赌金*/ int ky; int j,m; int paishu; void kaishi(); /*定义开始动画*/ void gundong(); void youxijiemian(); void fapai(); /*定义发牌函数*/ void panduan(); /*定义判断函数*/ void dujin(int b);

14、 /*定义读取、保存赌金的函数*/ void WJ(); /*有关玩家电脑操作的函数*/ void DN(); void wanjiapai(int g); /*玩家和电脑的发牌动画*/ void diannaopai(int h); void jisuanWJ(); /*计算玩家和电脑的点数*/ void jisuanDN(); void jieshu(int n); /*游戏结束动画*/ char pai[54]=

15、{'A','2','3','4','5','6','7','8','9','10','J','Q','K', 'A','2','3','4','5','6','7','8','9','10','J','Q','K', 'A','2','3','4','5','6','7','8','9','10','J','Q','K', 'A','2','3','4','5','6','7','8','9','10','J','Q','K','\0'}; main(){

16、 int num1,num2,i,p; char index; p=1; kaishi(); gundong(); while(p==1) { dujin(1); /*读取赌金*/ youxijiemian(); /*进入游戏界面*/ srand((unsigned)time(NULL )); /*洗牌*/ for

17、i=1;i<=10000;i++) { num1=rand()%52; num2=rand()%52; index=pai[num1]; pai[num1]=pai[num2]; pai[num2]=index; } fapai(); /*发牌函数*/ pand

18、uan(); /*判断函数*/ dujin(2); /*保存赌金*/ ky=bioskey(0); switch(ky){ case Key_Esc: p=0;break; default: p=1;break;} } closegraph(); } /*调用开始动画*/ void

19、 kaishi() { int graphdriver,graphmode; graphdriver=DETECT; initgraph(&graphdriver,&graphmode,""); cleardevice(); setbkcolor(9); setviewport(10,10,630,470,2); /*开图视口*/ setfillstyle(1,2);

20、 setcolor(YELLOW); floodfill(80,80,15); ellipse(20,20,45,45,20,10); settextstyle(2,0,9); setfillstyle(3,7); floodfill(20,20,8); setfillstyle(1,10); floodfill(21,300,1); setcolor(6); ellips

21、e(300,80,0,360,120,70); settextstyle(0,0,2); outtextxy(190,75,"Welcome Game!"); setviewport(100,200,540,380,0); setcolor(2); setfillstyle(1,12); rectangle(20,20,420,120); floodfill(50,100,2); settextstyle(4,0,3);

22、 setcolor(YELLOW); outtextxy(110,60,"Press any key to continue!"); getch(); } /*调用滚动函数*/ void gundong() { int x,y; setcolor(5); outtextxy(150,90,"Have a good time!");

23、 ky=bioskey(0); if(ky==Key_Esc) closegraph(); setcolor(7); for(x=0;x<80;x++) { for(y=0;y<10;y++){ /*改变滚动条速度*/ line(-200,x+y*60-200,600,x+y*60-200);

24、 delay(500); } } clearviewport(); } /*调用赌金保存、读取函数*/ void dujin(int b) { FILE *fp; if(b==1) { if((fp=fopen("a.txt","r"))==NULL){ settextstyle(TRIPLEX_FONT,HORIZ_DIR,2);

25、 outtextxy(120,60,"What a pity!You rocord is lost!"); } fscanf(fp ,"%d",&money); if(fclose(fp)){ settextstyle(TRIPLEX_FONT,HORIZ_DIR,2); outtextxy(120,60,"What a pity!Can not save the money.");} }

26、 if(b==2) { if((fp=fopen("a.txt","r="))==NULL){ settextstyle(TRIPLEX_FONT,HORIZ_DIR,2); outtextxy(120,60,"What a pity!You rocord is lost!"); } fprintf(fp,"%d",money); if(fclose(fp)){

27、 settextstyle(TRIPLEX_FONT,HORIZ_DIR,2); outtextxy(120,60,"What a pity!Can not save the money."); } } } /*调用游戏界面*/ void youxijiemian() { int x,y,p,graphdriver,graphmode; char s[30];

28、 /*存放转换数据类型的数组*/ char a[8][2]={{0}}; x=0;p=0; graphdriver=DETECT; initgraph(&graphdriver,&graphmode,""); cleardevice(); setbkcolor(GREEN); setcolor(LIGHTGRAY); setfillstyle(1,YELLOW); arc(250,10,220,320,220);

29、 setcolor(7); setfillstyle(1,9); arc(250,10,220,320,200); setcolor(LIGHTGRAY); line(500,2,500,477); line(500,240,640,240); settextstyle(DEFAULT_FONT,HORIZ_DIR,2); outtextxy(178,30,"COMPUTER"); outt

30、extxy(194,280,"PLAYER"); outtextxy(20,360,"MONEY"); outtextxy(540,65,"KEY"); outtextxy(20,250,"WAGER"); settextstyle(TRIPLEX_FONT,HORIZ_DIR,2); outtextxy(524,105,"Enter is Start"); outtextxy(524,135,"Esc is Quit"); outtextxy(524,165,"Y

31、 is Yes"); outtextxy(524,195,"N is No"); rectangle(20,380,90,420); setfillstyle(1,6); settextstyle(0,0,1); setcolor(YELLOW); sprintf(s,"%d",money); outtextxy(30,395,s); rectangle(20,275,90,310); settextstyle

32、2,0,5); setfillstyle(1,5); settextstyle(0,0,1); settextstyle(TRIPLEX_FONT,HORIZ_DIR,2); a[x][0]=getch(); /*输入筹码*/ while(a[x][0]!=13||x==0) { if(a[x][0]>='0'&&a[x][0]<='9'){ outtextxy(25+x*8,295,a[x]);

33、 x++; } a[x][0]=getch(); if(x==7&&a[x][0]!=13) a[x][0]=65; } for(y=0;y

34、 player[0]=pai[0]; player[1]=pai[1]; paishu=2; computer[0]=pai[5]; computer[1]=pai[6]; j=1; m=1; for(i=0;i<2;i++){ wanjiapai(g);g++;} for(i=0;i<2;i++){ diannaopai(h);h++;} j=2; whi

35、le(j<5&&ky!=Key_N) /*显示提示,询问玩家是否要牌*/ { setcolor(RED); settextstyle(DEFAULT_FONT,HORIZ_DIR,2); outtextxy(524,300,"CHOOSE"); settextstyle(TRIPLEX_FONT,HORIZ_DIR,3); outtextxy(510,330," Do you want "); outtextx

36、y(510,350,"another card?"); outtextxy(510,385,"Yes or No?"); ky=bioskey(0); /*根据指令,决定是否发牌*/ switch(ky) { case Key_Y:{ player[j]=pai[j]; wanjiapai(g); g++;

37、 j++; paishu++; break;} case Key_N:{ DN(); break;} default: break; } jisuanDN(m); /*计算电脑牌的点数*/ } WJ();

38、 /*对玩家牌的操作*/ } void wanjiapai(int g) /*玩家发牌动画*/ { int x,y,d; char s[1]; void movebar1(int bar); d=0; if(g!=2) { for(x=17;x>(d+5);x--){ movebar1(x * 20); d++;} setcolor(14); re

39、ctangle((g-3)*20+200,340,(g-3)*20+250,420); setcolor(GREEN); line((g-4)*20+250,341,(g-4)*20+250,419); setfillstyle(1,5); floodfill((g-3)*20+205,350,14); setcolor(14); settextstyle(1,0,1); sprintf(s,"%c",player[j]); outtextxy((g-

40、3)*20+205,360,s); } if(g==2) { for(x=17;x>5;x--){ movebar1(x*20);} setcolor(14); rectangle((g-3)*20+200,340,(g-3)*20+250,420); setcolor(GREEN); setfillstyle(1,5); floodfill((g-3)*20+205,350,14); setcolor(14)

41、 settextstyle(1,0,1); sprintf(s,"%c",player[0]); outtextxy((g-3)*20+205,360,s);} } void movebar1(int bar) /*玩家牌 设窗口并画填色牌*/ { setcolor(14); rectangle(bar+90,340,bar+140,420); setfillstyle(8,13); floodfill(bar+91,350,14); delay

42、50000); setfillstyle(1,2); floodfill(bar+91,350,14); setcolor(2); rectangle(bar+90,340,bar+140,420); } /*玩家的操作*/ void WJ() { playerds=0; for(j=0;j

43、ayerds=playerds+11; if(playerds>21) playerds=playerds-10; } if(player[j]=='1') playerds=playerds+1; if(player[j]=='2') playerds=playerds+2; if(player[j]=='3')

44、playerds=playerds+3; if(player[j]=='4') playerds=playerds+4; if(player[j]=='5') playerds=playerds+5; if(player[j]=='6') playerds=playerds+6; if(player[j]=='7') playerds=playerds+7;

45、 if(player[j]=='8') playerds=playerds+8; if(player[j]=='9') playerds=playerds+9; if(player[j]=='10') playerds=playerds+10; if(player[j]=='J') playerds=playerds+10; if(

46、player[j]=='Q') playerds=playerds+10; if(player[j]=='K') playerds=playerds+10; } /*电脑发牌动画*/ void diannaopai(int h) { int x,c,y; char s[1]; void movebar(int bar); char pai[5]; c=0; if(h!=2) { h=2-h;

47、 for(x=1;x<(10-c);x++){ movebar(x * 20); c++;} setcolor(14); rectangle((h+4)*20+200,60,(h+4)*20+250,140); setcolor(GREEN); line((h+5)*20+200,61,(h+5)*20+200,139); setfillstyle(1,5); floodfill((h+4)*20+205,

48、65,14); setcolor(14); settextstyle(1,0,1); sprintf(s,"%c",computer[m]); outtextxy((h+4)*20+240,80,s); } if(h==2) { h=h-2; for(x=1;x<10;x++) movebar(x * 20); setcolor(14); rectangle((h+4)*20+200,60,(

49、h+4)*20+250,140); setcolor(GREEN); setfillstyle(8,13); floodfill((h+4)*20+205,70,14); setcolor(14); } } void movebar(int bar) /*电脑牌 设窗口并画填色牌*/ { setcolor(14); rectangle(bar+90,60,bar+140,140); setfillstyle(8,13); floodfill(bar+91,70,1

50、4); delay(50000); setfillstyle(1,2); floodfill(bar+91,70,14); setcolor(2); rectangle(bar+90,60,bar+140,140); } /*电脑的操作*/ void DN() { int h; computerds=0; for(m=0;m<=1;m++) jisuanDN(m); if(computerds<=16) { computer[2]=pai[7];

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服