二十一点游戏设计报告.doc

上传人:文库蛋蛋多 文档编号:2586000 上传时间:2023-02-20 格式:DOC 页数:20 大小:168.50KB
返回 下载 相关 举报
二十一点游戏设计报告.doc_第1页
第1页 / 共20页
二十一点游戏设计报告.doc_第2页
第2页 / 共20页
二十一点游戏设计报告.doc_第3页
第3页 / 共20页
二十一点游戏设计报告.doc_第4页
第4页 / 共20页
二十一点游戏设计报告.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《二十一点游戏设计报告.doc》由会员分享,可在线阅读,更多相关《二十一点游戏设计报告.doc(20页珍藏版)》请在三一办公上搜索。

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

2、1、 程序设计总体结构:首先,初始化进入图形模式,提示按键开始游戏。开始游戏,进入游戏的主题部分,处理程序实现过程中的各种事件和函数。在处理过程中,判断游戏是否结束。若未结束,从开始界面处执行程序,若结束,则跳出循环,结束游戏。初始化参数开始界面、动画开始游戏处理和实现游戏进行过程中的的各种事件和功能游戏结束?关闭图形模式 否 是主函数为: main() int num1,num2,i,p; char index; p=1; kaishijiemian(); /*调用开始界面的函数*/ gundong(); /*调用滚动函数*/ while(p=1) dujin(1); /*读取赌金*/ yo

3、uxijiemian(); /*进入游戏界面*/ srand(unsigned)time(NULL ); for(i=1;i=10000;i+) num1=rand()%52; num2=rand()%52; index=painum1; painum1=painum2; painum2=index; fapai(); /*发牌函数*/ panduan(); /*判断函数*/ dujin(2); /*保存赌金*/ ky=bioskey(0); switch(ky) case Key_Esc: p=0;break; default: p=1;break; closegraph();2、 界面设计

4、开始界面:游戏界面:结束界面:3、 函数设计:本程序由一个主函数,13个子函数,共14个函数组成。函数间相互关系如下图:初始化参数开始游戏gongdong()kaishi()开始界面、动画 dujin(1)读取赌金youxijiemian()(1J16?jisuanDN()DN() 是 是 panduan() playerdsp=1?dujin(1)保存赌金jieshu(n) 游戏结束 Computerds关闭图形模式 否 详细描述:文件名函数原型函数功能函数处理 21dian .ckaishi() 创建游戏的进入界面通过绘图、画线、填色、显示数字等生成界面gundong()从进入界面到切到游

5、戏界面时产生一段动画youxijiemian()游戏进行时的背景,其上显示各种提示以及筹码、赌金等对玩家键入的键码、定义的值进行分析判断,通过绘图、画线、填色、显示数字等生成游戏界面fapai()游戏进行中发牌的总控制通过对WJ()、DN()、wanjiapai()、diannaopai()、jisuanWJ()、jisuanDN()等函数的调用,实现对发牌的总控制panduan()比较玩家、电脑的点数大小,并计算出相应的赌金对fapai()函数中传递来的playerds、computerds进行判断,判定游戏的胜负,并改变money的值jieshu()显示双方点数。提示游戏操作,生成游戏结果

6、通过绘图、画线、填色、显示数字等生成界面,WJ()DN()对游戏过程中玩家和电脑的进行操作,便于融入程序,起过渡作用wanjiapai(int g)diannaopai(int h)绘制游戏过程中的牌以及显示点数通过对movebar、movebar1的调用实现图形化牌、牌点jisuanWJ ()、jisaunDN()计算牌的点数,并赋值到computerds、playerds中通过一系列的比较,得出双方的牌点数四、 小组分工 全部的图形界面、及动画设计刘宇文件部分,以及键值框的设计徐含主函数以及除图形函数、文件部分以外的子函数叶安江五、 源代码:#include#include#include

7、#include#include#include#include#include#define Key_Esc 0x11b#define Key_Enter 0x1c0b#define Key_Y 0x1579#define Key_N 0x316e int winner; /*胜者数*/ int playerds,computerds; /*玩家、电脑的点数*/ char player6; char computer4; int money=2000; int wager; /*下注的赌金*/ int ky; int j,m; int paishu; void kaishi(); /*定义开

8、始动画*/ void gundong(); void youxijiemian(); void fapai(); /*定义发牌函数*/ void panduan(); /*定义判断函数*/ void dujin(int b); /*定义读取、保存赌金的函数*/ void WJ(); /*有关玩家电脑操作的函数*/ void DN(); void wanjiapai(int g); /*玩家和电脑的发牌动画*/ void diannaopai(int h); void jisuanWJ(); /*计算玩家和电脑的点数*/ void jisuanDN(); void jieshu(int n);

9、/*游戏结束动画*/ char pai54=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() int num1,num2,i,p; char index; p=1; kaishi(); gundong(); while(p=1) dujin(1); /*读取赌金*/ youxijiemian(); /*进入游戏界面*/ srand(unsigned)time(NULL ); /*洗牌*/ for(i=1;

10、i=10000;i+) num1=rand()%52; num2=rand()%52; index=painum1; painum1=painum2; painum2=index; fapai(); /*发牌函数*/ panduan(); /*判断函数*/ dujin(2); /*保存赌金*/ ky=bioskey(0); switch(ky) case Key_Esc: p=0;break; default: p=1;break; closegraph(); /*调用开始动画*/ void kaishi() int graphdriver,graphmode; graphdriver=DET

11、ECT; initgraph(&graphdriver,&graphmode,); cleardevice(); setbkcolor(9); setviewport(10,10,630,470,2); /*开图视口*/ setfillstyle(1,2); 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); se

12、tcolor(6); ellipse(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); setcolor(YELLOW); outtextxy(110,60,Press any key to continue!); getch();

13、 /*调用滚动函数*/ void gundong() int x,y; setcolor(5); outtextxy(150,90,Have a good time!); ky=bioskey(0); if(ky=Key_Esc) closegraph(); setcolor(7); for(x=0;x80;x+) for(y=0;y=0&ax0=9) outtextxy(25+x*8,295,ax); x+; ax0=getch(); if(x=7&ax0!=13) ax0=65; for(y=0;yx;y+) p=p*10+(ay0-0); /*调用发牌函数*/void fapai() i

14、nt i; int h,g; h=g=2;/*开始各发两张牌*/ player0=pai0; player1=pai1; paishu=2; computer0=pai5; computer1=pai6; j=1; m=1; for(i=0;i2;i+) wanjiapai(g);g+; for(i=0;i2;i+) diannaopai(h);h+; j=2; while(j(d+5);x-) movebar1(x * 20); d+; setcolor(14); rectangle(g-3)*20+200,340,(g-3)*20+250,420); setcolor(GREEN); li

15、ne(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,playerj); outtextxy(g-3)*20+205,360,s); if(g=2) for(x=17;x5;x-) movebar1(x*20); setcolor(14); rectangle(g-3)*20+200,340,(g-3)*20+250,420); setcolor(GREEN); setfills

16、tyle(1,5); floodfill(g-3)*20+205,350,14); setcolor(14); settextstyle(1,0,1); sprintf(s,%c,player0); 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(50000); setfillstyle(1,2); fl

17、oodfill(bar+91,350,14); setcolor(2); rectangle(bar+90,340,bar+140,420);/*玩家的操作*/void WJ() playerds=0; for(j=0;j21) playerds=playerds-10; if(playerj=1) playerds=playerds+1; if(playerj=2) playerds=playerds+2; if(playerj=3) playerds=playerds+3; if(playerj=4) playerds=playerds+4; if(playerj=5) playerds=

18、playerds+5; if(playerj=6) playerds=playerds+6; if(playerj=7) playerds=playerds+7; if(playerj=8) playerds=playerds+8; if(playerj=9) playerds=playerds+9; if(playerj=10) playerds=playerds+10; if(playerj=J) playerds=playerds+10; if(playerj=Q) playerds=playerds+10; if(playerj=K) playerds=playerds+10;/*电脑

19、发牌动画*/void diannaopai(int h) int x,c,y; char s1; void movebar(int bar); char pai5; c=0; if(h!=2) h=2-h; 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,

20、65,14); setcolor(14); settextstyle(1,0,1); sprintf(s,%c,computerm); outtextxy(h+4)*20+240,80,s); if(h=2) h=h-2; for(x=1;x10;x+) movebar(x * 20); setcolor(14); rectangle(h+4)*20+200,60,(h+4)*20+250,140); setcolor(GREEN); setfillstyle(8,13); floodfill(h+4)*20+205,70,14); setcolor(14); void movebar(int

21、 bar) /*电脑牌 设窗口并画填色牌*/ setcolor(14); rectangle(bar+90,60,bar+140,140); setfillstyle(8,13); floodfill(bar+91,70,14); 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) computer2=pai7;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号