您当前的位置:首页 > 互联网教程

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

发布时间:2025-05-17 08:38:34    发布人:远客网络

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

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

1、“猜数字小游戏”,每个数字后按空格,最后按回车确认

2、 printf("\n\n猜数字小游戏\n\n");

3、 printf("猜四个数字,如数字与顺序都正确记为A,数字正确位置不对记为B.\n");

4、 int m, n;// m是完全猜对的个数, n是顺序不对或错的个数

5、 srand((unsigned)time(NULL));//初始化随机数发生器

6、 a[i]= rand()% 10;// rand()函数每次随机产生一个0-9的数

7、 if((a[3]!= a[2]&& a[3]!= a[1]&& a[3]!= a[0])&&

8、 printf("请依次输入4个一位整数:\n\n");

9、 printf("你输入的是:%d%d%d%d", b[0], b[1], b[2], b[3]);

10、 printf("%dA%dB你试了%d次\n", m, n, count);

11、 printf("你猜对了(^-^)!就是:%d%d%d%d\n", a[0], a[1], a[2], a[3]);

12、 printf("你输了(T-T)!哈哈!应该是:%d%d%d%d\n", a[0], a[1], a[2], a[3]);

13、 printf("(要继续吗?1或0)\n");

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

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

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

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

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

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

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

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

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

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

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

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

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

算法设计

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

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

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

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

三、求C语言小游戏源程序

int gamespeed=50000;/*游戏速度自己调整*/

int yes;/*判断是否要出现食物的变量*/

int life;/*蛇的生命,0活着,1死亡*/

void GameOver(void);/*结束游戏*/

void GamePlay(void);/*玩游戏具体过程*/

void PrScore(void);/*输出成绩*/

initgraph(&gd,&gm,"c:\\tc");

/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/

setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/

for(i=50;i<=600;i+=10)/*画围墙*/

rectangle(i,40,i+10,49);/*上边*/

rectangle(i,451,i+10,460);/*下边*/

rectangle(50,i,59,i+10);/*左边*/

rectangle(601,i,610,i+10);/*右边*/

food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/

snake.direction=1;/*方向往右*/

snake.x[0]=100;snake.y[0]=100;/*蛇头*/

snake.x[1]=110;snake.y[1]=100;

while(1)/*可以重复玩游戏,压ESC键结束*/

while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/

if(food.yes==1)/*需要出现新食物*/

while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/

if(food.yes==0)/*画面上有食物了就要显示*/

rectangle(food.x,food.y,food.x+10,food.y-10);

for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/

/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/

for(i=3;i<snake.node;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/

if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])

if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||

snake.y[0]>455)/*蛇是否撞到墙壁*/

if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/

if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/

setcolor(0);/*把画面上的食物东西去掉*/

rectangle(food.x,food.y,food.x+10,food.y-10);

snake.x[snake.node]=-20;snake.y[snake.node]=-20;

/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/

snake.node++;/*蛇的身体长一节*/

food.yes=1;/*画面上需要出现新的食物*/

rectangle(snake.x[i],snake.y[i],snake.x[i]+10,

setcolor(0);/*用黑色去除蛇的的最后一节*/

rectangle(snake.x[snake.node-1],snake.y[snake.node-1],

snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);

if(snake.life==1)/*如果蛇死就跳出循环*/

if(key==UP&&snake.direction!=4)

if(key==RIGHT&&snake.direction!=2)

if(key==LEFT&&snake.direction!=1)

if(key==DOWN&&snake.direction!=3)

outtextxy(200,200,"GAME OVER");

setfillstyle(SOLID_FILL,YELLOW);

sprintf(str,"score:%d",score);