您的当前位置:首页正文

C语言课程设计实现21点游戏

2021-10-21 来源:布克知识网


《C语言课程设计》

题 目:班 级:姓 名:指导教师:所属系部:电子科学与技术系程序设计基础课程设计

2009年 6 月24 日

21点游戏设计

1 游戏规则

此游戏,原则上是可以由不限定的人数来玩,但是随着参与人数的增加,在最后成绩的比较方面会比较的繁琐,不像两个人之间的比赛结果那么明显,所以也应该将参与人数控制在一定的范围之内。确定参与人数后,系统会随机为每个人发三张牌,然后计算这三张牌的和进行比较。如果这三张牌的和大于21,则此人将会输掉比赛,除非其他人的和也大于21(即假若每个人的三张牌的和都大于21时,该局为平局,打成平手)。如果有的和大于21,有的和小于21,则大于21的人输掉比赛,再比较小于21的部分,谁的三张牌的和最接近21,则谁是该局的赢家。一局玩完后,玩者可以根据自己情况进行选择是否要再玩一局。若选择再玩时,系统会再进行下一次的循环。

2 程序算法

1由系统随机产生几组随机数,每组3个随机数。 ○

2计算每一组的三个随机数的和。 ○

3 比较每组和的大小。 ○

4得出比赛结果 ○

3 关键算法流程图

总体框架

开始 开始 Flag=1 Y 产生随机数,求和,比较,得结果 输入字符 C Y C =Y N 结束

4 程序代码

/* Note:Your choice is C IDE */

#include #include #include #define N 5 main( ) {

int i,t,flag, j,m; int b[8],a[3*N]; char c;

b[1]=0;flag=1;

while (flag) //控制循环 {

srand(time(NULL)); /

scanf(\"%d\ //用j控制组数

for(t=0;t<3*j;t++) //产生几组随机数 {if (t%3==0) printf(\"\\n\");

a[t]=rand()%13+1; printf(\"%5d\ }

printf(\"\\n\");

for(i=1;i<=j;i++) //求每组随机数的和 {

for(t=3*(i-1);t<3*i;t++) b[i]=b[i]+a[t];

printf(\"b[%d]=%d\\n\ b[i+1]=0; }

printf(\"\\n\"); {

for(t=1;tfor(i=1;i<=j-t;i++) if(b[i]>b[i+1]) { m=b[i+1]; b[i+1]=b[i]; b[i]=m; }

for (i=1;i<=j;i++) printf(\"%5d\ }

printf(\"\\n\");

for (i=1;i<=j;i++) //得出结论 if(b[i]>21) {

printf(\"这一局为第%d个人赢\\n是否再玩一局,若输入'Y'则继续游戏,输入'N'结束游戏\\n\

getchar(); //与while语句是一个系统 c=getchar(); if(c=='Y') flag=1; else flag=0; } } }

5 在程序设计中,出现的问题和解决方案:

由于是多组数据之间的比较,首先在同时产生几组随机数时遇到障碍,产生随机数的代码是从网上搜索得到的,再加上一些修改,达到所需的要求,同时有一些小的细节是在老师帮助下完成的。对于多组数据的处理有些麻烦,首先要依次求和,在求和过程中要注意细节问题。对于多组数据的比较,最终只能先排序,然后得出结论,这一个程序是比较繁杂的。本程序的不足在于最终结果表达不直接,应再加一些程序让玩者更加清晰明了。

6 体会:

本次程序是一个繁琐的过程,是在多次修改加上老师的指导的基础上才完成的。通过本次实验,我认识到要想完成一件事需要一次次地尝试,一次次地修改,然后再进行试验。在修改的工程中,要反复思考问题出在何处,要慢慢的找寻,一点点的排除,在老师为我讲解时我也感受到老师做事的毅力。做任何事都要一点点的,脚踏实地的去做。本次程序设计虽然不算完满,但都是自己一点点做出来的,还是有很大收获的。

因篇幅问题不能全部显示,请点此查看更多更全内容