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

满嘴软萌 1个月前 已收到1个回答 举报

波浪米尼 2星

共回答了89个问题采纳率:92.3% 评论

最基础的贪吃蛇的代码

#include<stdio.h>

#include<windows.h>//基本型态定义。支援型态定义函数。使用者界面函数图形装置界面函数。

#include<conio.h>

//用户通过按键盘产生的对应操作(控制台)

#include<stdlib.h>

#include<time.h>//日期和时间头文件

#defineLEN30

#defineWID25

intSnake[LEN][WID]={0};

//数组的元素代表蛇的各个部位

charSna_Hea_Dir='a';//记录蛇头的移动方向

intSna_Hea_X,Sna_Hea_Y;//记录蛇头的位置

intSnake_Len=3;//记录蛇的长度

clock_tNow_Time;//记录当前时间,以便自动移动

intWait_Time;//记录自动移动的时间间隔

intEat_Apple=1;//吃到苹果表示为1

intLevel;

intAll_Score=-1;

intApple_Num=-1;

HANDLEhConsole=GetStdHandle(STD_OUTPUT_HANDLE);

//获取标准输出的句柄<windows.h>

//句柄:标志应用程序中的不同对象和同类对象中的不同的实例方便操控,

voidgotoxy(intx,inty)//设置光标位置

{

COORDpos={x,y};

//定义一个字符在控制台屏幕上的坐标POS

SetConsoleCursorPosition(hConsole,pos);

//定位光标位置的函数<windows.h>

}

voidHide_Cursor()//隐藏光标固定函数

{

CONSOLE_CURSOR_INFOcursor_info={1,0};

SetConsoleCursorInfo(hConsole,&cursor_info);

}

voidSetColor(intcolor)//设置颜色

{

SetConsoleTextAttribute(hConsole,color);

//是API设置字体颜色和背景色的函数格式:SetConsoleTextAttribute(句柄,颜色);

}

voidPrint_Snake()//打印蛇头和蛇的脖子和蛇尾

{

intiy,ix,color;

for(iy=0;iy<WID;++iy)

for(ix=0;ix<LEN;++ix)

{

if(Snake[ix][iy]==1)//蛇头

{

SetColor(0xf);//oxf代表分配的内存地址setcolor:34行自定义设置颜色的函数

gotoxy(ix*2,iy);

printf("※");

}

if(Snake[ix][iy]==2)//蛇的脖子

{

color=rand()%15+1;

//rand()函数是产生随机数的一个随机函数。C语言里还有srand()函数等。

//头文件:stdlib.h

if(color==14)

color-=rand()%13+1;

//变色

SetColor(color);

gotoxy(ix*2,iy);

printf("■");

}

if(Snake[ix][iy]==Snake_Len)

{

gotoxy(ix*2,iy);

SetColor(0xe);

printf("≈");

}

}

}

voidClear_Snake()//擦除贪吃蛇

{

intiy,ix;

for(iy=0;iy<WID;++iy)

for(ix=0;ix<LEN;++ix)

{

gotoxy(ix*2,iy);

if(Snake[ix][iy]==Snake_Len)

printf("");

}

}

voidRand_Apple()//随机产生苹果

{

intix,iy;

do

{

ix=rand()%LEN;

iy=rand()%WID;

}while(Snake[ix][iy]);

Snake[ix][iy]=-1;

gotoxy(ix*2,iy);

printf("⊙");

Eat_Apple=0;

}

voidGame_Over()//蛇死掉了

{

gotoxy(30,10);

printf("GameOver");

Sleep(3000);

system("pause>nul");

exit(0);

}

voidMove_Snake()//让蛇动起来

{

intix,iy;

for(ix=0;ix<LEN;++ix)//先标记蛇头

for(iy=0;iy<WID;++iy)

if(Snake[ix][iy]==1)

{

switch(Sna_Hea_Dir)//根据新的蛇头方向标志蛇头

{

case'w':

if(iy==0)

Game_Over();

else

Sna_Hea_Y=iy-1;

Sna_Hea_X=ix;

break;

case's':

if(iy==(WID-1))

Game_Over();

else

Sna_Hea_Y=iy+1;

Sna_Hea_X=ix;

break;

case'a':

if(ix==0)

Game_Over();

else

Sna_Hea_X=ix-1;

Sna_Hea_Y=iy;

break;

case'd':

if(ix==(LEN-1))

Game_Over();

else

Sna_Hea_X=ix+1;

Sna_Hea_Y=iy;

break;

default:

break;

}

}

if(Snake[Sna_Hea_X][Sna_Hea_Y]!=1&&Snake[Sna_Hea_X][Sna_Hea_Y]!=0&&Snake[Sna_Hea_X][Sna_Hea_Y]!=-1)

Game_Over();

if(Snake[Sna_Hea_X][Sna_Hea_Y]<0)//吃到苹果

{

++Snake_Len;

Eat_Apple=1;

}

for(ix=0;ix<LEN;++ix)//处理蛇尾

for(iy=0;iy<WID;++iy)

{

if(Snake[ix][iy]>0)

{

if(Snake[ix][iy]!=Snake_Len)

Snake[ix][iy]+=1;

else

Snake[ix][iy]=0;

}

}

Snake[Sna_Hea_X][Sna_Hea_Y]=1;//处理蛇头

}

voidGet_Input()//控制蛇的移动方向

{

if(kbhit())

{

switch(getch())

{

case87:

Sna_Hea_Dir='w';

break;

case83:

Sna_Hea_Dir='s';

break;

case65:

Sna_Hea_Dir='a';

break;

case68:

Sna_Hea_Dir='d';

break;

default:

break;

}

}

if(clock()-Now_Time>=Wait_Time)//蛇到时间自动行走

{

Clear_Snake();

Move_Snake();

Print_Snake();

Now_Time=clock();

}

}

voidInit()//初始化

{

system("title贪吃毛毛蛇");

system("modecon:cols=80lines=25");

Hide_Cursor();

gotoxy(61,4);

printf("YouScore:");

gotoxy(61,6);

printf("YouLevel:");

gotoxy(61,8);

printf("TheLenght:");

gotoxy(61,10);

printf("TheSpeed:");

gotoxy(61,12);

printf("AppleNum:");

inti;

for(i=0;i<Snake_Len;++i)//生成蛇

Snake[10+i][15]=i+1;

intiy,ix;//打印蛇

for(iy=0;iy<WID;++iy)

for(ix=0;ix<LEN;++ix)

{

if(Snake[ix][iy])

{

SetColor(Snake[ix][iy]);

gotoxy(ix*2,iy);

printf("■");

}

}

}

voidPri_News()//打印信息

{

SetColor(0xe);

gotoxy(73,4);

All_Score+=Level;

printf("%3d",All_Score);

gotoxy(73,6);

printf("%3d",Level);

gotoxy(73,8);

printf("%3d",Snake_Len);

gotoxy(73,10);

printf("0.%3ds",Wait_Time/10);

gotoxy(73,12);

printf("%d",Apple_Num);

}

voidLev_Sys()//等级系统

{

if(((Apple_Num-1)/10)==Level)

{

++Level;

if(Wait_Time>50)

Wait_Time-=50;

else

if(Wait_Time>10)

Wait_Time-=10;

else

Wait_Time-=1;

}

}

intmain(void)

{

Init();

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

Now_Time=clock();

intspeed1=1000,speed2,a;

printf("\n");

printf("请输入你想要的速度\n");

scanf("%d",&speed2);

Level=1;

Wait_Time=speed1-speed2;

printf("请输入你想要的苹果数\n");

scanf("%d",&a);

while(a--)

Rand_Apple();

while(1)

{

if(Eat_Apple)

{

++Apple_Num;

Rand_Apple();

Lev_Sys();

Pri_News();

}

Get_Input();

Sleep(10);

}

return0;

}

21小时前

22
可能相似的问题

热门问题推荐

Copyright © 2024 微短问答 All rights reserved. 粤ICP备2021119249号 站务邮箱 service@wdace.com