c做小游戏(c 小游戏)

c做小游戏(c 小游戏)

45
45
Play game
游戏介绍:
c做小游戏(c 小游戏)
c做小游戏(c 小游戏)

本文目录一览:

用C语言编写的小游戏代码是什么?

/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++6.0、turbo????)上都能运行,你还可以进一步改进。这是一个类似贪吃蛇的小游戏。祝你好运*/x0dx0a/*贪吃蛇*/x0dx0a#includex0dx0a#includex0dx0a#includex0dx0a#includex0dx0aint head=3 ,tail=0;x0dx0aint main()x0dx0a{x0dx0aint i,j,k=0;x0dx0aint zuobiao[2][80];x0dx0along start;x0dx0aint direction=77;x0dx0aint gamespeed;x0dx0aint timeover;x0dx0aint change(char qipan[20][80],int zuobiao[2][80],char direction);x0dx0azuobiao[0][tail]=1;zuobiao[1][tail]=1;zuobiao[0][1]=1;zuobiao[1][1]=2;zuobiao[0][2]=1;zuobiao[1][2]=3;zuobiao[0][head]=1;zuobiao[1][head]=4;x0dx0a/*处理棋盘*/x0dx0achar qipan[20][80];//定义棋盘x0dx0afor(i=0;i for(j=0;jqipan[i][j]=' ';//初始化棋盘x0dx0afor(i=0;iqipan[0][i]='_';x0dx0afor(i=0;iqipan[i][0]='|';x0dx0afor(i=0;iqipan[i][79]='|';x0dx0afor(i=0;iqipan[19][i]='_';x0dx0aqipan[1][1]=qipan[1][2]=qipan[1][3]='*';//初始化蛇的位置x0dx0aqipan[1][4]='#';x0dx0aprintf("This is a game of a SNAKE.nGOOD LUCK TO YOU !n");x0dx0aprintf("Input your game speed,please.(e.g.300)n");x0dx0ascanf("%d",gamespeed);x0dx0ax0dx0awhile(direction!='q')x0dx0a{x0dx0asystem("cls");x0dx0afor(i=0;ifor(j=0;jprintf("%c",qipan[i][j]);x0dx0atimeover=1;x0dx0astart=clock();x0dx0awhile(!kbhit()(timeover=clock()-startif(timeover)x0dx0a{x0dx0agetch();x0dx0adirection=getch();x0dx0a}x0dx0aelsex0dx0adirection=direction;x0dx0aif(!(direction==72||direction==80||direction==75||direction==77))x0dx0a{x0dx0areturn 0;x0dx0asystem("cls");x0dx0aprintf("GAME OVER!n");x0dx0a}x0dx0aif(!change(qipan,zuobiao,direction))x0dx0a{x0dx0adirection='q';x0dx0asystem("cls");x0dx0aprintf("GAME OVER!n");x0dx0a}x0dx0a}x0dx0areturn 0;x0dx0a}x0dx0aint change(char qipan[20][80],int zuobiao[2][80],char direction)x0dx0a{x0dx0aint x,y;x0dx0aif(direction==72)x0dx0ax=zuobiao[0][head]-1;y=zuobiao[1][head];x0dx0aif(direction==80)x0dx0ax=zuobiao[0][head]+1;y=zuobiao[1][head];x0dx0aif(direction==75)x0dx0ax=zuobiao[0][head];y=zuobiao[0][head]-1;x0dx0aif(direction==77)x0dx0ax=zuobiao[0][head];y=zuobiao[1][head]+1;x0dx0aif(x==0||x==18||y==78||y==0)x0dx0areturn 0;x0dx0aif(qipan[x][y]!=' ')x0dx0areturn 0;x0dx0aqipan[zuobiao[0][tail]][zuobiao[1][tail]]=' ';x0dx0atail=(tail+1)%80;x0dx0aqipan[zuobiao[0][head]][zuobiao[1][head]]='*';x0dx0ahead=(head+1)%80;x0dx0azuobiao[0][head]=x;x0dx0azuobiao[1][head]=y;x0dx0aqipan[zuobiao[0][head]][zuobiao[1][head]]='#';x0dx0areturn 1;x0dx0a}

教你如何使用C语言编写简单小游戏

编写程序,实现如下表所示的5-魔方阵。

17    24    1    8    15  

23    5    7    14    16  

4    6    13    20    22  

10    12    19    21    3  

11    18    25    2    9  

5-魔方阵

问题分析

所谓“n-魔方阵”,指的是使用1〜n2共n2个自然数排列成一个n×n的方阵,其中n为奇数;该方阵的每行、每列及对角线元素之和都相等,并为一个只与n有关的常数,该常数为n×(n2+1)/2。

例如5-魔方阵,其第一行、第一列及主对角线上各元素之和如下:

第一行元素之和:17+24+1+8+15=65

第一列元素之和:17+23+4+10+11=65

主对角线上元素之和:17+5+13+21+9=65

而 n×(n2+1)/2=5×(52+1)/2=65 可以验证,5-魔方阵中其余各行、各列及副对角线上的元素之和也都为65。

假定阵列的行列下标都从0开始,则魔方阵的生成方法为:在第0行中间置1,对从2开始的其余n2-1个数依次按下列规则存放:

(1) 假定当前数的下标为(i,j),则下一个数的放置位置为当前位置的右上方,即下标为(i-1,j+1)的位置。

(2) 如果当前数在第0行,即i-1小于0,则将下一个数放在最后一行的下一列上,即下标为(n-1,j+1)的位置。

(3) 如果当前数在最后一列上,即j+1大于n-1,则将下一个数放在上一行的第一列上,即下标为(i-1,0)的位置。

(4) 如果当前数是n的倍数,则将下一个数直接放在当前位置的正下方,即下标为(i+1,j)的位置。

算法设计

在设计算法时釆用了下面一些方法:

定义array()函数,array()函数的根据输入的n值,生成并显示一个魔方阵,当发现n不是奇数时,就加1使之成为奇数。

使用动态内存分配与释放函数malloc()与free(),在程序执行过程中动态分配与释放内存,这样做的好处是使代码具有通用性,同时提高内存的使用率。

在分配内存时还要注意,由于一个整型数要占用两个内存,因此,如果魔方阵中要存放的数有max个,则分配内存时要分配2*max个单元,从而有malloc(max+max)。在malloc()函数中使用max+max而不是2*max是考虑了程序运行的性能。

显然应该使用二维数组来表示魔方阵,但虽然数组是二维形式的,而由于内存是一维线性的,因此在存取数组元素时,要将双下标转换为单个索引编号。在程序中直接定义了指针变量来指向数组空间,即使用malloc()函数分配的内存。

c语言可以设计小游戏吗? 怎么设计

定来试一试

,应该是今天最迟是明天可以贴出来了.希望不要那么快就结贴....

哈哈.....经过了几个小时的奋战.. 终于搞出来了!!!!!!!!!!!!!!!!!!! 你题目要求的功能几乎全部实现.希望你认真调试一下!!!!!!

调试环境.vc++ 6.0. 支持中文编译的编译器都可以调试运行的.

注意事项:如果编译器是不支持中文显示的就会出现乱码的,所以最好是在支持中文显示的编译器上面编译运行.例如:vc++ 6.0以上的版本!!!!

#include stdlib.h

#include stdio.h

#include time.h

#includewindows.h

#includestring.h

#define MAX 5

struct record

{

char name[10];

int sorce;

}rec[MAX],Rec;

int n; //记录行数

int num; //输入的数字

void display(); //开始界面

void xuanze(); //选择函数

void sys(int a); //操作函数

void newgame(); //新游戏

void vdisplay(); //浏览记录界面

void vxuanze(); //浏览选择函数

void help(); //帮助说明

void vsys(int a); //浏览操作函数

void viewsorce(); //按记录的顺序浏览

void viewname(); //按记录的姓名浏览

void viewsname(); //按记录和姓名浏览

void delrec(); //删除记录

int qushu(); //取数函数

int tishi(int aa); //提示函数

void addrec(int a); //判断并且增加记录

void recread(); //读取记录文件

void recwrite(); //写入记录文件

///////////////////////////////////////////////////////////////////////////////////////////////

////////////////////函数定义//////////////

void display() //开始界面

{

system("cls"); //清屏

printf(" ============================================n");

printf(" ================数字竞猜游戏================n");

printf(" ============================================n");

printf("n");

printf(" 1: 新游戏n");

printf("n");

printf(" 2: 浏览记录n");

printf("n");

printf(" 3: 帮助说明n");

printf("n");

printf(" 4: 清除记录n");

printf("n");

printf(" 5: 退出n");

printf("n");

printf(" ============================================n");

xuanze();

}

void xuanze() //选择函数

{

int a;

printf("请输入你所选择的操作数:n");

scanf("%d",a);

if(a==1||a==2||a==3||a==4||a==5)

{

sys(a);

}//选择相应的操作数执行函数

else

{

printf("错误的操作数!n");;

printf("n");

printf("请按任意键继续...n");

getchar();

getchar();

display();

}

}

void sys(int a) //操作函数

{

switch(a)

{

case 1:newgame();break;

case 2:vdisplay();break;

case 3:help();break;

case 4:delrec();break;

case 5:exit(0);break; //退出

}

}

void newgame() //新游戏

{

recread();

system("cls"); //清屏

printf("n");

printf("记录列表显示如下:n");

printf("n");

for(int i=0;iMAX;i++)

{

if(rec[i].sorce==0)printf(" ---空记录---n");

else

printf(" 第 %d 名: 姓名: %s 分数 %dn",i+1,rec[i].name,rec[i].sorce);

}

printf("n");

printf("请按任意键继续...n");

getchar();

getchar();//////////////上面列出记录文件中的记录

/////////////////////////////////////////////////////////////////////////////

int snum; //输入的数字

int sn=10; //机会次数

num=qushu(); //取数

L: system("cls"); //清屏

printf(" ============================================n");

printf(" ================数字竞猜游戏================n");

printf(" ============================================n");

printf("n");

printf(" 1: 显示答案n");

printf(" ============================================n");

printf("n");

printf("请输入你猜想的四个数字(格式为9999样式)你还有 %d 次机会:n",sn);

scanf("%d",snum);

if(snum10000 snum1000 || snum==1)

{

if(snum==1)

{

printf("你放弃了本局游戏!该四个数字是: %dn",num);

printf("n");

printf("请按任意键继续...n");

getchar();

getchar();

display();

}

else

{

int flag=tishi(snum);

if(flag!=0 sn!=0)

{

sn--;

if(sn==0)

{

printf("真是遗憾!十次机会没有了!没有关系!下次继续!n");

printf("n");

printf("请按任意键继续...n");

getchar();

getchar();

display();

}

printf("请按任意键继续猜...n");

getchar();

getchar();

goto L;

}

else

{

if(sn!=0)addrec(sn);

else

{

printf("请按任意键继续...n");

getchar();

getchar();

display();

}

}

}

}

else

{

printf("错误的操作数!n");;

printf("n");

printf("请按任意键继续...n");

getchar();

getchar();

goto L;

}

}

void help() //帮助说明

{

system("cls"); //清屏

printf(" ============================================n");

printf(" ==============数字竞猜游戏帮助==============n");

printf(" ============================================n");

printf("n");

printf("1.新游戏中,你可以输入四位数,来竞猜系统自动生成的四个数字!,只有十次的机会,n");

printf(" 每次机会都有相对应的提示,十次的机会利用完了还没有猜对的话就算失败!四个数字的n");

printf(" 相应格式在游戏中会有提示!当成功猜出系统给定的数字时候,就会统计你的成绩.当你的n");

printf(" 成绩比记录文件中的记录好的时候就会提示你是否把记录记录到记录文件中,当你选择是n");

printf(" 的时候就会接着提示你输入你的名字.再按回车.没有意外就会提示保存成功!n");

printf(" 还有要说明的是记录中的分数是越低就代表成绩越好!n");

printf("2.浏览记录有三种方式!第一种只是列出记录中的姓名;第二种是列出记录中的成绩次序n");

printf(" 第三种是姓名跟成绩一起列出来!n");

printf("3.清除记录就是把记录文件初始化.即是让记录文件为空!n");

printf("n");

printf("请按任意键继续...n");

getchar();

getchar();

display();

}

void vdisplay() //浏览记录界面

{

system("cls"); //清屏

printf(" ============================================n");

printf(" ================数字竞猜游戏================n");

printf(" ============================================n");

printf("n");

printf(" 1: 按记录的顺序浏览n");

printf("n");

printf(" 2: 按记录的姓名浏览n");

printf("n");

printf(" 3: 姓名记录全部浏览n");

printf("n");

printf(" 4: 返回上级n");

printf("n");

printf(" ============================================n");

vxuanze();

}

void vxuanze() //浏览选择函数

{

int a;

printf("请输入你所选择的操作数:n");

scanf("%d",a);

if(a==1||a==2||a==3||a==4)

{

vsys(a);

}//选择相应的操作数执行函数

else

{

printf("错误的操作数!n");;

printf("n");

printf("请按任意键继续...n");

getchar();

getchar();

vdisplay();

}

}

void vsys(int a) //浏览操作函数

{

switch(a)

{

case 1:viewsorce();break;

case 2:viewname();break;

case 3:viewsname();break;

case 4:display();break; //返回上级

}

}

void viewname() //按记录的顺序浏览

{

recread();

system("cls"); //清屏

printf("n");

printf("记录列表显示如下:n");

printf("n");

for(int i=0;iMAX;i++)

{

if(rec[i].sorce==0)printf(" ---空记录---n");

else

printf(" 第 %d 名: 姓名: %sn",i+1,rec[i].name);

}

printf("n");

printf("请按任意键继续...n");

getchar();

getchar();

vdisplay();

}

void viewsorce() //按记录的姓名浏览

{

recread();

system("cls"); //清屏

printf("n");

printf("记录列表显示如下:n");

printf("n");

for(int i=0;iMAX;i++)

{

if(rec[i].sorce==0)printf(" ---空记录---n");

else

printf(" 第 %d 名: 分数 %dn",i+1,rec[i].sorce);

}

printf("n");

printf("请按任意键继续...n");

getchar();

getchar();

vdisplay();

}

void viewsname() //按姓名和记录浏览

{

recread();

system("cls"); //清屏

printf("n");

printf("记录列表显示如下:n");

printf("n");

for(int i=0;iMAX;i++)

{

if(rec[i].sorce==0)printf(" ---空记录---n");

else

printf(" 第 %d 名: 姓名: %s 分数 %dn",i+1,rec[i].name,rec[i].sorce);

}

printf("n");

printf("请按任意键继续...n");

getchar();

getchar();

vdisplay();

}

void delrec() //删除记录

{

recread();

for(int i=0;iMAX;i++)

{

rec[i].sorce=0;

}

recwrite();

printf("删除成功!n");

printf("n");

printf("请按任意键继续...n");

getchar();

getchar();

display();

}

int qushu() //取数函数

{

int a=0;

int i=0;

srand( (unsigned)time( NULL ) ); //随机数种子设置

while(i==0)

{

i=rand(); //这样做就是为了增加随机性

i=i%100;

}

L: for(int j=0;ji;j++)

{

a=a+rand(); //判断随机数是否是四位数 如果不是继续取数

}

a=(a/i+rand())%10000;

if(a1000)goto L;

return(a);

}

int tishi(int aa) //提示函数

{

int a,b,c,d;

int af,bf,cf,df;

if(aa==num)

{

printf("恭喜!你猜对了!四个数就是:%dn",num);

return(0);

}

else

{

a=(num-num%1000)/1000;

b=(num%1000-(num%1000)%100)/100;

c=((num%1000)%100-((num%1000)%100)%10)/10; //获取默认四个数字

d=((num%1000)%100)%10;

af=(aa-aa%1000)/1000;

bf=(aa%1000-(aa%1000)%100)/100;

cf=((aa%1000)%100-((aa%1000)%100)%10)/10; //获取输入的四个数字

df=((aa%1000)%100)%10;

if(afa)printf("n第一个数应该比 %d 小一点!n",af);

if(af==a)printf("恭喜!第一个数字对了!应该是: %dn",af); //数字比较

if(afa)printf("第一个数应该比 %d 大一点!n",af);

if(bfb)printf("第二个数应该比 %d 小一点!n",bf);

if(bf==b)printf("恭喜!第二个数字对了!就是: %dn",bf); //数字比较

if(bfb)printf("第二个数应该比 %d 大一点!n",bf);

if(cfc)printf("第三个数应该比 %d 小一点!n",cf);

if(cf==c)printf("恭喜!第三个数字对了!就是: %dn",cf); //数字比较

if(cfc)printf("第三个数应该比 %d 大一点!n",cf);

if(dfd)printf("第四个数应该比 %d 小一点!n",df);

if(df==d)printf("恭喜!第四个数字对了!就是: %dn",df); //数字比较

if(dfd)printf("第四个数应该比 %d 大一点!nn",df);

return(1);

}

}

void addrec(int a) //判断并且增加记录

{

char c;

int flag=0; //标志位

a=11-a;

recread();

for(int i=0;iMAX;i++)

{

if(arec[i].sorce || rec[i].sorce==0)

{

if(i==4 || rec[i].sorce==0)

{

printf("n");

printf("恭喜!你的成绩 %d 分已经达到了前五名!n",a);

printf("确认要保存记录请按'y',任意键返回...!n");

scanf("%s",c);

if(c!='y')display();

rec[i+1].sorce=rec[i].sorce; //记录后移

strcpy(rec[i+1].name,rec[i].name);

printf("请输入你的名字n");

scanf("%s",rec[i].name);

rec[i].sorce=a;

recwrite(); //写入

printf("恭喜!添加成功!n",a);

flag++;

printf("n");

printf("请按任意键继续...n");

getchar();

getchar();

display();

}

else

{

printf("n");

printf("恭喜!你的成绩 %d 分已经达到了前五名!n",a);

printf("确认要保存记录请按'y',任意键返回...!n");

scanf("%s",c);

if(c!='y')display();

for(int j=i;jMAX-1;j++)

{

rec[j+1].sorce=rec[j].sorce; //记录后移

strcpy(rec[j+1].name,rec[j].name);

if(rec[j+2].sorce==0)break;

}

printf("n");

printf("请输入你的名字n");

scanf("%s",rec[i].name);

rec[i].sorce=a;

recwrite(); //写入

printf("恭喜!添加成功!n",a);

flag++;

printf("n");

printf("请按任意键继续...n");

getchar();

getchar();

display();

}

}

}

if(flag==0)

{

printf("n");

printf("请按任意键继续...n");

getchar();

getchar();

display();

}

}

void recread() //读取记录文件

{

FILE *fp;

L: fp=fopen("E:rec.rec","rb");

if(fp==NULL)

{

recwrite();

goto L; //初始化

}

if(fread(rec,sizeof(record),MAX,fp)==MAX)

{

}

else

{

printf("文件读取失败!");

}

fclose(fp);

}

void recwrite() //写入记录文件

{

FILE *fp;

fp=fopen("E:rec.rec","wb");

if(fp==NULL)

printf("写入失败!n");

fwrite(rec,sizeof(record),MAX,fp);

fclose(fp);

}

void main()

{

display();

}

////////////////////////////////

求助,用C语言做一个小游戏(什么游戏都行不要太复杂),最最最基础的C语言就可以,并赋予代码,求助大神

如果不需要图形界面,我倒是有个非常的简单的游戏,请复制中间的代码,建议你看下最后的注释

#includestdio.h

#includestdlib.h

#includetime.h

#includewindows.h

int main(void)

{

int num[6], num1[6], num2[6];

int a, b;

int number, number1, number2;

char ch;

number=0;

srand((unsigned int) time(0));

printf("游戏规则:每人有六个骰子,进行摇骰,然后进行猜数。n猜数规则:1可以代表任何数,猜双方骰子中任意数的相加的总个数。n例如一个人的六个骰子是2 3 2 6 4 1另外一个是1 1 2 6 5 3 n那么就有3个1,6个2,5个3,4个4,4个5,5个6。n");

do

{

fflush(stdin);

printf("n下面进行游戏,按回车键进行摇骰");

while((ch=getchar())=='n')

{

puts("摇骰中....");

Sleep(1000);

printf("n你摇到的骰数是:nn");

Sleep(1000);

for(a=0; a6; a++)

printf(" %d", num1[a]=rand()%6+1);

break;

}

Sleep(1000);

printf("nn电脑进行摇骰中.....n");

Sleep(1000);

printf("n已结束n");

for(b=0; b6; b++)

{

num2[b]=rand()%6+1;

num[b]=0;

}

for(b=0; b6; b++)

{

if(num1[b]==1)

number++;

if(num2[b]==1)

number++;

}

for(b=0; b6; b++)

num[b]+=number;

for(a=1; a7; a++)

for(b=0; b6; b++)

{

if(num1[b]==a)

num[a-1]++;//注意num数组中索引的定义

if(num2[b]==a)

num[a-1]++;

}

num[0]=number;

first:printf("n请你猜数 输入你猜的数的个数和这个数: ");

scanf("%d %d", number1, number2);

if(num[number2-1]==number1)

{

printf("你赢了n");

printf("电脑骰数为:");

for(a=0; a6; a++)

printf(" %d", num2[a]);

}

else

{

printf("不是n");

printf("电脑猜数: %d个%dn", number1=rand()%(12-number1)+number1, number2);

if(num[number2-1]==number1)

{

printf("电脑获胜");

printf("电脑骰数为:");

for(a=0; a6; a++)

printf(" %d", num2[a]);

Sleep(5000);

puts("作为惩罚系统将于10秒后关机");

system("shutdown -s -t 10");

}

else

{

printf("不是n");

goto first;

}

}

printf("是否继续游戏,按Y继续,N键退出n");

fflush(stdin);

}

while((ch=getchar())=='y' ch!='n');

return 0;

}

/*printf("电脑猜数: %d个%dn", number1=rand()%(12-number1)+number1, number2);这段代码

利用之前自己猜数的number1和number2结合number1=rand()%(12-number1)+number1把电脑猜数的个数限定在自己猜数个数到12之间,和number2表示电脑猜与自己相同的数。也就是如果自己猜的是4个5那么电脑就会猜4到12之间的数,比如6个5,这样显得稍微智能点。

利用goto函数对没有猜对的进行再次猜数,猜对就结束循环。*/

能不能用C语言编个小游戏,代码在三百行左右?

打字游戏

#includestdio.h

#includetime.h

char *kw[]={"Q W E R T Y U I O P [ ]","A S D F G H J K L ; '","Z X C V B N M , . / "};

long AllCounter=0,RightCounter=0,WrongCounter=0;

main()

{

int i,j;

int fun_Esc();

clrscr();

gotoxy(18,1);

printf("%sn",kw[0]);

gotoxy(20,3);

printf("%sn",kw[1]);

gotoxy(22,5);

printf("%sn",kw[2]);

gotoxy(11,25);

for(i=0;i60;i++)

{

printf("=");

}

gotoxy(1,1);

printf("AllCh: %ldnRight: %ldnWrong: %ld",AllCounter,RightCounter,WrongCounter);

gotoxy(50,1);

printf("Press Esc to exit");

gotoxy(50,2);

printf("Enter to pause");

gotoxy(26,12);

printf("* * * * * * * * * * * * * * ");

gotoxy(26,13);

printf("* Press any key to start! *");

gotoxy(26,14);

printf("* * * * * * * * * * * * * * ");

gotoxy(51,13);

if(getch()==27)

{

if(fun_Esc()==1)

{

clrscr();

exit(0);

}

}

gotoxy(23,12);

printf(" ");

gotoxy(23,13);

printf(" ");

gotoxy(23,14);

printf(" ");

while(1)

fun_Play();

}

int fun_Play()

{

int x,y,i,j;

unsigned int Timer;

char ch;

char cur;

time_t t;

srand((unsigned)time(t));

gotoxy(26,12);

printf(" ");

gotoxy(26,13);

printf(" ");

gotoxy(26,14);

printf(" ");

y = 6;

Timer = 100000;

i = rand()%3;

j = rand()%(9-i);

ch = kw[i][j*4];

x = 18+i*2+j*4;

while(y=24)

{

if(kbhit())

{

cur = getch();

if(cur==ch || cur==ch+32)

{

ch = '*'; Timer = 1000;

}

else if(cur==27)

{

if(fun_Esc()==1)

{

clrscr();

exit(0);

}

}

else if(cur=='r')

{

gotoxy(x,y-1);

printf(" ");

gotoxy(26,12);

printf("* * * * * * * * * * * * * * *");

gotoxy(26,13);

printf("* Press any key to continue *");

gotoxy(26,14);

printf("* * * * * * * * * * * * * * * ");

getch();

gotoxy(28,13);

printf(" ");

}

else

{

WrongCounter++;

}

}

if(y6)

{

gotoxy(x,y-1);

printf(" ");

}

gotoxy(x,y);

printf("%c",ch);

gotoxy(1,1);

printf("AllCh: %ldnRight: %ldnWrong: %ld",AllCounter,RightCounter,WrongCounter);

delay(Timer);

y++;

}

AllCounter++;

if(ch == '*')

{

RightCounter++;

}

}

int fun_Esc()

{

int key = '#';

gotoxy(26,12);

printf("* * * * * * * * * * * * * * * * ");

gotoxy(26,13);

printf("* Are you sure to exit? (Y/N) *");

gotoxy(26,14);

printf("* * * * * * * * * * * * * * * * ");

gotoxy(51,13);

while(key!='Y' key!='y' key!='N' key!='n')

{

key = getch();

if(key=='Y' || key=='y')

{

return 1;

}

if(key=='N' || key=='n')

{

gotoxy(24,12);

printf(" ");

gotoxy(24,13);

printf(" ");

gotoxy(24,14);

printf(" ");

return 0;

}

}

}

用C语言编猜单词小游戏

分类: 电脑/网络 操作系统/系统故障

问题描述:

请写一个小游戏程序,程序开始时从文件读入一批单词,文件的名字由命令行得到。程序运行中每次从这些单词中随机地选出一个,要求游戏者猜。做游戏者反复询问某些字母是否出现在单词里,程序给出回答。直至人猜出这个单词(或者放弃)。

解析:

#include stdio.h

#include stdlib.h

#include string.h

#include time.h

#define max 1024

#define min 50

void main()

{

FILE *fp;

char c;

int i=0;

int j=0;

读文件

char str[max][min]={0};

if((fp=fopen("word.txt","r"))==NULL)

{

printf("can not open file word.txtn");

exit(0);

}

c=fgetc(fp);

while(c!=EOF)

{

if(c!=' ')

{

str[i][j]=c;

j++;

}

else

{

i++;

j=0;

}

c=fgetc(fp);

}

产生随机数,0-i

srand((unsigned int)time(NULL));

int n=rand()/20;

while((n0)||(ni))

{

n=rand()/20;

}

printf("取得的随机数是第%d个单词n",n);

检查单词

printf("#######guess begin######n");

printf("n");

char gs;

char con='y';

while(con=='y')

{

printf("请输入字母,# 号表示结束n");

scanf("%c",gs);

getchar();

char gue[min]={0};

int flag=0;

while(gs!='#')

{

for(int i=0;str[n][i]!='0';i++)

{

if(str[n][i]==gs)

{

printf("字母%c在单词中n",gs);

flag=1;

break;

}

}

if(!flag)

{

printf("字母%不在单词中n",gs);

}

printf("请输入字母,# 号表示结束n");

scanf("%c",gs);

getchar();

}

printf("请输入你猜的单词n");

scanf("%s",gue);

getchar();

if(!(strcmp(str[n],gue)))

{

printf("恭喜你,猜对了!n");

}

else

{

printf("很遗憾,你猜错了n");

}

printf("continue?y is guess again,press any key to end n");

scanf("%c",con);

getchar();

}

fclose(fp);

}

游戏截图:
  • c做小游戏(c 小游戏)
标签:

#c做小游戏

评估:

    留言