C语言编写抢三十游戏——开发笔记(总结)
课程设计题目:抢三十游戏
学号:XXX 姓名:XXX
组员:XXX(组长)、XXX、XXX、XXX、XXX、XXX
设计时间:2009-12-19
相关背景:
我们小组本已决定要做抢三十游戏,即使做不出来也可以换题,但是想不到老师居然叫我们周五下课前交上选题,霎时间我们慌了,于是我们临时开了个小会,讨论的结果是:一致通过选择做老师布置的第一题,因为这样比较保险(我们小组好几个人都已经做完这题).不过在我们提交选题时,老师劝我们挑战一下难度,所以我们最终还是选择了”抢三十游戏”!
鉴于这次的选题在分工合作上比较困难,因为整个过程都是紧密联系的,所以在和小组成员讨论之后,我们决定:每人都做一份,做好之后我们再把代码拿出来一起研读,并选出最好的代码作为这次课程设计的答卷.另外,我额外要求每个成员在做完之后做一条附加题,附加题可以在选题中选,也可以自选,目的是全面发展,更加熟练各种操作.
程序展示:
核心代码:
//玩家算法;
int input(int i)
{
int count;
do{
printf("\n 请输入要走的步数:");
scanf("%d",&count);
if(count<1||count>2||i+count>30)
{
fflush(stdin);
printf("\n 输入错误,请重新输入!\n");
}
else
printf("\n 此时已经走至:%d\n",i+count);
}while(count<1||count>2||i+count>30);
return i+count; //返回总共走的步数;
}
//电脑算法;
int pcinput(int t)
{
int step;
printf("\n 此时已经走至:");
if(t%3==2)
{
t++;
printf("%d\n",t);
//如求余等于2,那么每次走1步
}
else if(t%3==1)
{
t+=2;
printf("%d\n",t);
//如求余等于1,那么每次走2步
}
else
{
step=1+rand()%2;
//随机选择1或2
t=step+t;
printf("%d\n",t);
}
return t;
}
报告内容:
第一部分:游戏规则
两个人轮流报数,第一个人从1开始,按顺序报数,他可以只报1,也可以报1、2.第二个人接着第一个人报的数再报下去,但最多也只能报两个数,而且不能一个数都不报.例如:第一个人报的是1,第二个人可报2,也可报2、3;若第一个人报了1、2,则第二个人可报3,也可报3、4.接下来仍由第一个人接着报,如此轮流下去,谁先报到30谁胜.
第二部分:游戏要求
01.随机选择电脑先走第一步或者用户先走第一步;
02.我们要做的是尽可能让电脑赢(只要用户有失误,那么必须让电脑赢)
03.设计算法,每走一步必须输出相应的数字,抢到三十则终止
第三部分:我在设计过程遇到的问题
01.为什么rand()函数不可以产生随机数?
解决:用rand()函数产生的是伪随机函数,在没有初始化之前产生的结果都是1.所以要用srand()函数进行初始化.
02.怎么让电脑尽可能会赢?
解决:这是这题的关键,我在草稿纸上乱画,总共花了将近3小时才总结出了其中的规律.
已走步数%3==2,则每次走1步;
已走步数%3==1,则每次走2步;
否则,随机决定走一步或者两步.
第四部分:自己的感想
实践是检验真理的唯一标准!只有在实际的操作中才可以发现自己的盲点,及时补足平时的不足。在实际的编写过程中,往往会遇到未知的错误,然而这一个个的错误,却燃起了我对编程那狂热的激情,愈战愈勇。因为我喜欢征服而不是屈服!
另外,团队合作不仅仅体现在分工上,更重要的是分工之余的互助互进.要知道独学无友孤陋而寡闻只有互帮互学才能共同进步/questionhtml?si=1 rand()函数用法
查看原文内容:
/%C0%E1%BA%DB_%B7%C9/blog/item/90b23b51281b8a718435241c.html
本程序源码下载: 精华编程专区 目录下载….