《C語(yǔ)言課程設(shè)計(jì) 21點(diǎn)游戲設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《C語(yǔ)言課程設(shè)計(jì) 21點(diǎn)游戲設(shè)計(jì)(5頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、
《C語(yǔ)言課程設(shè)計(jì)》
題 目:程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)
班 級(jí):
姓 名:
指導(dǎo)教師:
所屬系部:電子科學(xué)與技術(shù)系
2009年 6 月24 日
21點(diǎn)游戲設(shè)計(jì)
1 游戲規(guī)則
此游戲,原則上是可以由不限定的人數(shù)來(lái)玩,但是隨著參與人數(shù)的增加,在最后成績(jī)的比較方面會(huì)比較的繁瑣,不像兩個(gè)人之間的比賽結(jié)果那么明顯,所以也應(yīng)該將參與人數(shù)控制在一定的范圍之內(nèi)。確定參與人數(shù)后,系統(tǒng)會(huì)隨機(jī)為每個(gè)人發(fā)三張牌,然后計(jì)算這三張牌的和進(jìn)行比較。如果這三張牌的和大于21
2、,則此人將會(huì)輸?shù)舯荣?,除非其他人的和也大?1(即假若每個(gè)人的三張牌的和都大于21時(shí),該局為平局,打成平手)。如果有的和大于21,有的和小于21,則大于21的人輸?shù)舯荣?,再比較小于21的部分,誰(shuí)的三張牌的和最接近21,則誰(shuí)是該局的贏家。一局玩完后,玩者可以根據(jù)自己情況進(jìn)行選擇是否要再玩一局。若選擇再玩時(shí),系統(tǒng)會(huì)再進(jìn)行下一次的循環(huán)。
2 程序算法
由系統(tǒng)隨機(jī)產(chǎn)生幾組隨機(jī)數(shù),每組3個(gè)隨機(jī)數(shù)。
計(jì)算每一組的三個(gè)隨機(jī)數(shù)的和。
比較每組和的大小。
得出比賽結(jié)果
3 關(guān)鍵算法流程圖
總體框架
開(kāi)始
開(kāi)始
Flag=1
Y
產(chǎn)生隨機(jī)數(shù),求和,比較
3、,得結(jié)果
C =Y
輸入字符 C
Y
結(jié)束
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) //控制循環(huán)
{
srand(time(NULL)); /
4、
scanf("%d",&j); //用j控制組數(shù)
for(t=0;t<3*j;t++) //產(chǎn)生幾組隨機(jī)數(shù)
{if (t%3==0)
printf("\n");
a[t]=rand()%13+1;
printf("%5d",a[t]);
}
printf("\n");
for(i=1;i<=j;i++) //求每組隨機(jī)數(shù)的和
{
for(t=3*(i-1);t<3*i;t++)
b[i]=b[i]+a[t];
printf("b[%d]=%d\n",i,b[i]);
b[i+1]=0
5、;
}
printf("\n");
{
for(t=1;tb[i+1])
{
m=b[i+1];
b[i+1]=b[i];
b[i]=m;
}
for (i=1;i<=j;i++)
printf("%5d",b[i]);
}
printf("\n");
for (i=1;i<=j;i++) //得出結(jié)論
6、 if(b[i]>21)
{
printf("這一局為第%d個(gè)人贏\n是否再玩一局,若輸入Y則繼續(xù)游戲,輸入N結(jié)束游戲\n",i-1);
getchar(); //與while語(yǔ)句是一個(gè)系統(tǒng)
c=getchar();
if(c==Y)
flag=1;
else
flag=0;
}
}
}
5 在程序設(shè)計(jì)中,出現(xiàn)的問(wèn)題和解決方案:
由于是多組數(shù)據(jù)之間的比較,首先在同時(shí)產(chǎn)生幾組隨機(jī)數(shù)時(shí)遇到障礙,產(chǎn)生隨機(jī)數(shù)的代碼是從網(wǎng)上搜索得到的,再加上一些修改,達(dá)到所需的要求,同時(shí)有一些小的細(xì)
7、節(jié)是在老師幫助下完成的。對(duì)于多組數(shù)據(jù)的處理有些麻煩,首先要依次求和,在求和過(guò)程中要注意細(xì)節(jié)問(wèn)題。對(duì)于多組數(shù)據(jù)的比較,最終只能先排序,然后得出結(jié)論,這一個(gè)程序是比較繁雜的。本程序的不足在于最終結(jié)果表達(dá)不直接,應(yīng)再加一些程序讓玩者更加清晰明了。
6 體會(huì):
本次程序是一個(gè)繁瑣的過(guò)程,是在多次修改加上老師的指導(dǎo)的基礎(chǔ)上才完成的。通過(guò)本次實(shí)驗(yàn),我認(rèn)識(shí)到要想完成一件事需要一次次地嘗試,一次次地修改,然后再進(jìn)行試驗(yàn)。在修改的工程中,要反復(fù)思考問(wèn)題出在何處,要慢慢的找尋,一點(diǎn)點(diǎn)的排除,在老師為我講解時(shí)我也感受到老師做事的毅力。做任何事都要一點(diǎn)點(diǎn)的,腳踏實(shí)地的去做。本次程序設(shè)計(jì)雖然不算完滿,但都是自己一點(diǎn)點(diǎn)做出來(lái)的,還是有很大收獲的。