用C语言编写的小游戏代码是什么
发布时间:2025-05-17 08:38:34 发布人:远客网络
一、用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);