×

c语言贪吃蛇最简单代码?c语言贪吃蛇最简单代码教程

前端技术网 前端技术网 发表于2024-01-26 21:04:21 浏览1444 评论0

抢沙发发表评论

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

最基础的贪吃蛇的代码

#include<stdio.h>

c语言贪吃蛇最简单代码?c语言贪吃蛇最简单代码教程

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

#include<conio.h>

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

#include<stdlib.h>

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

#defineLEN30

c语言贪吃蛇最简单代码?c语言贪吃蛇最简单代码教程

#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;

}

二、c语言如何编写贪吃蛇小游戏基础

1、游戏开始界面进行一个简单的展示,

2、选择1进入游戏,可以看到左面的游戏界面,还有旁边的说明模块

3、如果死掉的话,游戏就会结束,就会有选择阶段。

4、选择2,进行游戏的说明,需要对界面的设置,还有清屏等功能。

前期准备阶段

1首先,我们需要做一个蛇的身体,就是在界面上显示一条蛇的样子。

2下面是代码展示模块,通过输出语句组成了我们想要的蛇的样子。

3我们需要一个开始界面所以现在来绘制开始游戏界面

4画出开始游戏菜单的边框

5画出游戏菜单中间的字体以及选项框

三、最短贪吃蛇代码

#include<bits/stdc++.h>

#include<windows.h>

#include<conio.h>

usingnamespacestd;

voidgotoxy(intx,inty){COORDpos={x,y};SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}//光标定位

四、贪吃蛇c语言代码最短

#include<bits/stdc++.h>

#include<windows.h>

#include<conio.h>

usingnamespacestd;

voidgotoxy(intx,inty){COORDpos={x,y};SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}//光标定位

classFood{//食物类

private:intm_x;intm_y;

public:

voidrandfood(){//随机产生一个食物

srand((int)time(NULL));//利用时间添加随机数种子,需要ctime头文件

L1:{m_x=rand()%(85)+2;//2~86

m_y=rand()%(25)+2;//2~26

if(m_x%2)gotoL1;//如果食物的x坐标不是偶数则重新确定食物的坐标

gotoxy(m_x,m_y);//在确认好的位置输出食物

cout<<"★";}}

intgetFoodm_x(){returnm_x;}//返回食物的x坐标

intgetFoodm_y(){returnm_y;}};//返回食物的y坐标

classSnake{

private:

structSnakecoor{intx;inty;};//定义一个蛇的坐标机构

vector<Snakecoor>snakecoor;//将坐标存入vector容器中

//判断并改变前进方向的函数

voiddegdir(Snakecoor&nexthead){//定义新的蛇头变量

staticcharkey='d';//静态变量防止改变移动方向后重新改回来

if(_kbhit()){

chartemp=_getch();//定义一个临时变量储存键盘输入的值

switch(temp){//如果临时变量的值为wasd中的一个,则赋值给key

default:break;//default是缺省情况,只有任何条件都不匹配的情况下才会执行必须写在前面!不然蛇无法转向

case'w':case'a':case's':case'd':

//如果temp的方向和key的方向不相反则赋值因为两次移动方向不能相反将蛇设置为初始向右走

if(key=='w'&&temp!='s'||key=='s'&&temp!='w'||key=='a'&&temp!='d'||key=='d'&&temp!='a')key=temp;}}

switch(key){//根据key的值来确定蛇的移动方向

case'd':nexthead.x=snakecoor.front().x+2;nexthead.y=snakecoor.front().y;break;

//新的蛇头的头部等于容器内第一个数据(旧蛇头)x坐标+2因为蛇头占两个坐标,移动一次加2

case'a':nexthead.x=snakecoor.front().x-2;nexthead.y=snakecoor.front().y;break;

case'w':nexthead.x=snakecoor.front().x;nexthead.y=snakecoor.front().y-1;break;

//因为控制台的x长度是y的一半,所以用两个x做蛇头,需要的坐标是二倍

case's':nexthead.x=snakecoor.front().x;nexthead.y=snakecoor.front().y+1;}}

//游戏结束时设计一个界面输出“游戏结束”以及分数

voidfinmatt(constintscore){

system("cls");gotoxy(40,14);//清屏然后输出

cout<<"游戏结束";gotoxy(40,16);

cout<<"得分:"<<score;gotoxy(0,26);

exit(0);}//exit为C++的退出函数exit(0)表示程序正常退出,非0表示非正常退出

voidfinishgame(constintscore){//游戏结束

if(snakecoor[0].x>=88||snakecoor[0].x<0||snakecoor[0].y>=28||snakecoor[0].y<0)finmatt(score);//撞墙

for(inti=1;i<snakecoor.size();i++)if(snakecoor[0].x==snakecoor[i].x&&snakecoor[0].y==snakecoor[i].y)finmatt(score

OK,关于c语言贪吃蛇最简单代码和c语言贪吃蛇最简单代码教程的内容到此结束了,希望对大家有所帮助。