这个C游戏程序是我的一个同学让我帮他朋友写的,因为一直催我,昨天下午叫我帮的忙,让我赶紧帮他朋友写完。所以昨晚花了几个小时帮他写的。大晚上的,睡意融融,也是难为我了!
C语言嘛!控制台程序,外观简陋。见笑见笑! 感觉对于学习C语言程序设计的朋友们非常有好处,所以我拿出来了。程序也是相当简单的,但是代码却不短。C语言该牵涉到的基本知识点也差不多全了。个人感觉思路清晰,代码可读性好! 有点自夸了,不过实践出真知!大家可以复制代码直接运行!最后面放上了源代码和可执行程序供大家下载!另外附上另外一篇文章供大家学习! C指针完全解读http://blog.csdn.net/qq_21004057/article/details/51514344
程序要求是这样的:
/************************************************************************/
/* @author mero */
/* @data 2016.6.8 */
/* @version 1.0 */
/************************************************************************/
#include
#include
#include
#include
//结构体config用来配置机会次数,题量大小
struct config{
int chance;//用来存储每道题目机会次数
int topicNum;//用来存储题目数量
}cfg[4],*p;
/*结构体award用于保存奖励语*/
struct award{
char good[30];
char well[20];
char cheers[20];
char nice[20];
char fine[20];
}award1;
int main(void){
/*------------------------函数声明部分-------------------------*/
int getRandom(int,int);//得到随机数函数
int add(int,int); //加法函数
int mul(int,int); //乘法函数
void goto_xy(int,int); //定位光标到指定坐标
/*------------------------业务逻辑区---------------------------*/
printf("\n\t\t\t\t 小学生算术游戏v1.0\n");
printf("\n\t\t\t\t*********************\n\n");
printf("\t\t\t\t\t[1]加法\n");
printf("\t\t\t\t\t[2]减法\n");
printf("\t\t\t\t\t[3]乘法\n");
printf("\t\t\t\t\t[4]除法\n");
printf("\t\t\t\t\t[5]设置题量大小\n");
printf("\t\t\t\t\t[6]设置答题机会\n");
printf("\t\t\t\t\t[0]退出\n");
printf("\n\t\t\t\t*********************\n\n");
//初始配置数据
struct config cfg[4]={{3,5},{3,5},{3,5},{3,5}};
p=cfg;
struct award award1={"恭喜你,奖励一根棒棒糖","非常棒,太聪明啦","不错哦!加油","干得漂亮","运气真好"};
int selector;//选项变量
for (;;)
{
printf("\t\t\t\t请输入选项[ ]\n");
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coordScreen = {0, 0}; //光标位置
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(hConsole, &csbi);
//printf("光标坐标:(%d,%d)\n", csbi.dwCursorPosition.X, csbi.dwCursorPosition.Y);
goto_xy(43,csbi.dwCursorPosition.Y-1);//设置光标位置到中括号中间
scanf("%d",&selector);
if (selector>=0&&selector<7)
{
switch(selector){
case 0:
printf("\t\t-----------正在退出游戏中-----------\n");
printf("\t\t************************************\n");
printf("\t\t\t\t------正在恢复原始状态--------\n");
printf("\t\t\t\t------------请稍后------------\n");
int j;
for(j=0;j<4;j++){
p->chance=3;
p->topicNum=5;
}
printf("\t\t\t\t------------已恢复------------\n");
printf("\t\t--------游戏已退出,重新开始--------\n");
printf("\t\t************************************\n");
break;
case 1:
printf("\t\t\t\t欢迎进入加法游戏中\n");
int i;
int result;
for(i=0;itopicNum;i++){
srand(time(NULL));
int a = getRandom(1,100);
int b = getRandom(1,100);
//产生结果
int addResult=add(a,b);
printf("\t\t\t\t当前正在做第%d题,请输入 \n",i+1);
printf("\t\t\t\t%d+%d=",a,b);
scanf("%d",&result);
printf("\t\t\t------当前输入的数为%d-------\n",result);
if(result==addResult){
printf("\t\t\t恭喜你做对了,正在加载下一题\n");
int hah=getRandom(1,5);
switch(hah){
case 1:
printf("\t\t\t\t%s\n",award1.good);
break;
case 2:
printf("\t\t\t\t%s\n",award1.well);
break;
case 3:
printf("\t\t\t\t%s\n",award1.nice);
break;
case 4:
printf("\t\t\t\t%s\n",award1.cheers);
break;
case 5:
printf("\t\t\t\t%s\n",award1.fine);
break;
}
}else{
printf("\t\t\t“再试一次!”\n");
int j;
for (j=0;jchance-1;j++)
{
printf("\t\t\t\t请输入 ");
scanf("%d",&result);
printf("\t\t\t------当前输入的数为%d-------\n",result);
if (result==addResult)
{
printf("\t\t\t恭喜你做对了,正在加载下一题\n");
int hah=getRandom(1,5);
switch(hah){
case 1:
printf("\t\t\t\t%s\n",award1.good);
break;
case 2:
printf("\t\t\t\t%s\n",award1.well);
break;
case 3:
printf("\t\t\t\t%s\n",award1.nice);
break;
case 4:
printf("\t\t\t\t%s\n",award1.cheers);
break;
case 5:
printf("\t\t\t\t%s\n",award1.fine);
break;
}
break;
} else{
printf("\t\t\t“再试一次!”\n");
}
}
printf("\t\t\t\t第%d题正确答案是%d\n",i+1,addResult);
}
}
break;
case 2:
printf("\t\t\t\t欢迎进入减法游戏中\n");
int g;
int result1;
for(g=0;g<(p+1)->topicNum;g++){
int a,b;
for(;;){
srand(time(NULL));
a=getRandom(1,100);
b=getRandom(1,100);
if(a>b){
break;
}
}
//产生结果
int subResult=a-b;
printf("\t\t\t\t当前正在做第%d题,请输入 \n",g+1);
printf("\t\t\t\t%d-%d=",a,b);
scanf("%d",&result1);
printf("\t\t\t------当前输入的数为%d-------\n",result1);
if(result1==subResult){
printf("\t\t\t恭喜你做对了,正在加载下一题\n");
int hah=getRandom(1,5);
switch(hah){
case 1:
printf("\t\t\t\t%s\n",award1.good);
break;
case 2:
printf("\t\t\t\t%s\n",award1.well);
break;
case 3:
printf("\t\t\t\t%s\n",award1.nice);
break;
case 4:
printf("\t\t\t\t%s\n",award1.cheers);
break;
case 5:
printf("\t\t\t\t%s\n",award1.fine);
break;
}
}else{
printf("\t\t\t“再试一次!”\n");
int v;
for (v=0;v<(p+1)->chance-1;v++)
{
printf("\t\t\t\t请输入 ");
scanf("%d",&result1);
printf("\t\t\t------当前输入的数为%d-------\n",result1);
if (result1==subResult)
{
printf("\t\t\t恭喜你做对了,正在加载下一题\n");
int hah=getRandom(1,5);
switch(hah){
case 1:
printf("\t\t\t\t%s\n",award1.good);
break;
case 2:
printf("\t\t\t\t%s\n",award1.well);
break;
case 3:
printf("\t\t\t\t%s\n",award1.nice);
break;
case 4:
printf("\t\t\t\t%s\n",award1.cheers);
break;
case 5:
printf("\t\t\t\t%s\n",award1.fine);
break;
}
break;
} else{
printf("\t\t\t“再试一次!”\n");
}
}
printf("\t\t\t\t第%d题正确答案是%d\n",g+1,subResult);
}
}
break;
case 3:
printf("\t\t\t\t欢迎进入乘法游戏中\n");
int m;
int result2;
for(m=0;m<(p+2)->topicNum;m++){
srand(time(NULL));
int a = getRandom(1,100);
int b = getRandom(1,100);
//产生结果
int mulResult=mul(a,b);
printf("\t\t\t\t当前正在做第%d题,请输入 \n",m+1);
printf("\t\t\t\t%d*%d=",a,b);
scanf("%d",&result2);
printf("\t\t\t------当前输入的数为%d-------\n",result2);
if(result2==mulResult){
printf("\t\t\t恭喜你做对了,正在加载下一题\n");
int hah=getRandom(1,5);
switch(hah){
case 1:
printf("\t\t\t\t%s\n",award1.good);
break;
case 2:
printf("\t\t\t\t%s\n",award1.well);
break;
case 3:
printf("\t\t\t\t%s\n",award1.nice);
break;
case 4:
printf("\t\t\t\t%s\n",award1.cheers);
break;
case 5:
printf("\t\t\t\t%s\n",award1.fine);
break;
}
}else{
printf("\t\t\t“再试一次!”\n");
int n;
for (n=0;n<(p+2)->chance-1;n++)
{
printf("\t\t\t\t请输入 ");
scanf("%d",&result2);
printf("\t\t\t------当前输入的数为%d-------\n",result2);
if (result2==mulResult)
{
printf("\t\t\t恭喜你做对了,正在加载下一题\n");
int hah=getRandom(1,5);
switch(hah){
case 1:
printf("\t\t\t\t%s\n",award1.good);
break;
case 2:
printf("\t\t\t\t%s\n",award1.well);
break;
case 3:
printf("\t\t\t\t%s\n",award1.nice);
break;
case 4:
printf("\t\t\t\t%s\n",award1.cheers);
break;
case 5:
printf("\t\t\t\t%s\n",award1.fine);
break;
}
break;
} else{
printf("\t\t\t“再试一次!”\n");
}
}
printf("\t\t\t\t第%d题正确答案是%d\n",m+1,mulResult);
}
}
break;
case 4:
printf("\t\t\t\t欢迎进入除法游戏中\n");
int mm;
int result3;
for(mm=0;mm<(p+3)->topicNum;mm++){
int a,b;
for(;;){
srand(time(NULL));
a=getRandom(1,100);
b=getRandom(1,100);
if(a%b==0){
break;
}
}
//产生结果
int divideResult=a/b;
printf("\t\t\t\t当前正在做第%d题,请输入 \n",mm+1);
printf("\t\t\t\t%d/%d=",a,b);
scanf("%d",&result3);
printf("\t\t\t------当前输入的数为%d-------\n",result3);
if(result3==divideResult){
printf("\t\t\t恭喜你做对了,正在加载下一题\n");
int hah=getRandom(1,5);
switch(hah){
case 1:
printf("\t\t\t\t%s\n",award1.good);
break;
case 2:
printf("\t\t\t\t%s\n",award1.well);
break;
case 3:
printf("\t\t\t\t%s\n",award1.nice);
break;
case 4:
printf("\t\t\t\t%s\n",award1.cheers);
break;
case 5:
printf("\t\t\t\t%s\n",award1.fine);
break;
}
}else{
printf("\t\t\t“再试一次!”\n");
int nn;
for (nn=0;nn<(p+3)->chance-1;nn++)
{
printf("\t\t\t\t请输入 ");
scanf("%d",&result3);
printf("\t\t\t------当前输入的数为%d-------\n",result3);
if (result3==divideResult)
{
printf("\t\t\t恭喜你做对了,正在加载下一题\n");
int hah=getRandom(1,5);
switch(hah){
case 1:
printf("\t\t\t\t%s\n",award1.good);
break;
case 2:
printf("\t\t\t\t%s\n",award1.well);
break;
case 3:
printf("\t\t\t\t%s\n",award1.nice);
break;
case 4:
printf("\t\t\t\t%s\n",award1.cheers);
break;
case 5:
printf("\t\t\t\t%s\n",award1.fine);
break;
}
break;
} else{
printf("\t\t\t“再试一次!”\n");
}
}
printf("\t\t\t\t第%d题正确答案是%d\n",mm+1,divideResult);
}
}
break;
case 5:
printf("\t\t\t\t------请输入题量大小----\n");
scanf("%d%d%d%d",&cfg[0].topicNum,&cfg[1].topicNum,&cfg[2].topicNum,&cfg[3].topicNum);
printf("\t\t\t\t你已修改加减乘除题量大小为%d %d %d %d\n",cfg[0].topicNum,cfg[1].topicNum,cfg[2].topicNum,cfg[3].topicNum);
/*-----------------修改题量大小---------------*/
break;
case 6:
printf("\t\t\t\t请输入要修改的加减乘除游戏机会次数\n");
scanf("%d%d%d%d",&cfg[0].chance,&cfg[1].chance,&cfg[2].chance,&cfg[3].chance);
printf("\t\t\t\t你已修改加减乘除题量大小为%d %d %d %d\n",cfg[0].chance,cfg[1].chance,cfg[2].chance,cfg[3].chance);
/*-----------------修改机会次数---------------*/
break;
}
}else{
printf("对不起,请输入正确选项\n");
}
}
return 0;
}
/*-----------------------函数实现部分-------------------------*/
//获取随机数函数
int getRandom(int a,int b){
int ran;
ran = rand()%(b-a+1)+a;
return ran;
}
//加法函数
int add(int a,int b){
int sum=0;
sum = a+b;
return sum;
}
//乘法函数
int mul(int a,int b){
int mulResult;
mulResult=a*b;
return mulResult;
}
void goto_xy(int x,int y){ //定位光标位置到指定坐标
HANDLE hOut;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos={x,y};
SetConsoleCursorPosition(hOut,pos);
}