问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

怎么改这个贪食蛇代码(c语言),有点变化,并能解释通就行。

发布网友 发布时间:2022-04-24 11:29

我来回答

2个回答

热心网友 时间:2023-10-11 05:46

我写好的,你看你要不要:

/*贪吃蛇*/

/**********************重要思想******************************************************/

//以二维数组为游戏界面。

//通过改变二维数组中指定元素的值实现对事物和蛇的显示和变化



#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#include<conio.h>



#define SHEAD '@'

#define SBODY '&'

#define FOOD '*'

/*************************************关键变量全局声明**********************************************/


const int L=20;

const int H=20;//定义界面的长 和 高

char view[20][20]={' '};//定义界面

int botton;//记录上下左右的操作

int length=1;//蛇的长度,默认为1只有蛇头(蛇头用@表示)

int end=0;//游戏结束条件,1是结束

int sbl=0;//定义蛇身的长度

int speed_time=300;//sleep(speed_time)

int speed_point=0;//用作速度增加提示

int pause_point=-1;//暂停标识,为1代表暂停


struct snake

{

int s_x;

int s_y;

int direction;//存蛇该节点运动的方向   上1  下2  左3  右4


}snake[20*20];


/*********************************函数声明**********************************************************/

void display();//界面显示主菜单

void instruct();//界面显示介绍

void runit();//游戏启动

void init_view();//游戏界面初始化。就是把二维数组的所有元素都赋值为空格,并显示出来

void Creat_food();//创建一个食物

void Get_button();//获取方向键

void start();

void move();

void Check_bound();

void Check_self();

void choose_diff();//选择难度



void display()

{

int i;

printf("********************贪吃蛇v2.0(第一版升级版)************************\n");

printf("1.游戏说明  \n");

printf("2.开始吧  \n");

printf("3.残忍的离开...  \n");

printf("----------------------------------------------------------\n");

printf("你要做什么呢:  ");

scanf("%d",&i);

switch(i)

{

case 1:instruct();break;

case 2:choose_diff();break;

case 3:exit(0);break;

default:

system("cls");

printf("都不知道你在说什么--\n");

display();

}

}


void instruct()

{

system("cls");

printf("------------------------------------------------------\n");

printf("游戏名称:贪吃蛇(v2.0)\n");

printf("版本:v2.0(功能实现版)");

printf("BY 申济铨\n");

printf("开发开始日期:2014-4-17\n");

printf("-------------------版本说明------------------------\n");

printf("1.游戏中可以暂停\n");

printf("2.游戏中蛇的移动速度回增加并有提示\n");

printf("3.实现难度选择\n");

//printf("4.截屏分享\n");

printf("4.为后续版本提供支持\n");

printf("输入回车以返回主菜单?");

if(getchar()=='\n');

while(getchar()=='\n')

{

system("cls");

display();

}

}


void choose_diff()

{

int c;

printf("----------------难度选择------------------------\n");

printf("1.初级\n");

printf("2.中级\n");

printf("3.高级\n");

printf("4.骨灰级\n");

printf("请输入序号:\n");

scanf("%d",&c);

while(c>4||c<1)

{

printf("不识数啊。。。重新输:\n");

scanf("%d",&c);

}

speed_time-=(50*(c-1));

runit();

}


void init_view()

{

int i=0;

int j=0;

printf("----------------------\n");

for(i;i<L;i++)

{

printf("|");

for(j;j<H;j++)

{

printf("%c",view[i][j]);

}

j=0;

printf("|");

if(i==L/2)

{

printf("   回车可以暂停!");

}

printf("\n");

}

printf("----------------------\n");


}


void Creat_food()

{

int x;

int y;

while(1)

{

x=rand()%(L-1);

y=rand()%(H-1);

if(view[x][y]==' ');

{

break;

}

}

view[x][y]=FOOD;

}


void Get_button()//前提是必须先读入一个字符

{

while(kbhit()!=0)

{

botton=getch();

switch (botton)

{

case 75:snake[0].direction=1;break;//上

case 77:snake[0].direction=2;break;//下

case 72:snake[0].direction=3;break;//左

case 80:snake[0].direction=4;break;//右

case 13:pause_point*=-1;

}

if(pause_point!=-1)//游戏暂停

{

pause_point*=-1;

system("pause");

}

}

}


void runit()

{

int sx,sy;

int i,j;

for(i=0;i<H;i++)//界面初始化

{

for(j=0;j<L;j++)

{

view[H][L]=' ';

}

}

system("cls");

srand(time(0));

sx=rand()%(L-1);

sy=rand()%(H-1);

snake[0].s_x=sx;

snake[0].s_y=sy;

snake[0].direction=1;//默认假设蛇头向上运动

view[sx][sy]=SHEAD;

Creat_food();

init_view();

printf("任意方向键开始!\n");

getch();//先读一个字符,骗他,不然执行到Get_button()的时候跳过去按默认值执行,为了让程序一开始不自动动

}



/******************************关键的3个函数*******************************************/

void Check_bound()

{

if((snake[0].s_x<0)||(snake[0].s_x>=H))

{

end=1;

}

if((snake[0].s_y<0)||(snake[0].s_y>=L))

{

end=1;

}

}

void Check_self()

{

if(view[snake[0].s_x][snake[0].s_y]==SBODY)//结束条件。全局变量。作用在start函数。

{

end=1;

}

}


void move()

{

int i=1;

int tmp_x=snake[sbl].s_x;

int tmp_y=snake[sbl].s_y;

int x_0=snake[0].s_x;

int y_0=snake[0].s_y;

view[snake[0].s_x][snake[0].s_y]=' ';

switch(snake[0].direction)//判断蛇移动的方向并改变蛇头位置

{

case 1:snake[0].s_y-=1;break;

case 2:snake[0].s_y+=1;break;

case 3:snake[0].s_x-=1;break;

case 4:snake[0].s_x+=1;break;

}

Check_bound();

Check_self();

if(end==1)

{

printf("你死了\n");

return ;

}

if(view[snake[0].s_x][snake[0].s_y]==FOOD)

{

length++;

sbl+=1;

snake[sbl].direction=snake[0].direction;

snake[sbl].s_x=x_0;

snake[sbl].s_y=y_0;

view[snake[sbl].s_x][snake[sbl].s_y]=SBODY;

Creat_food();

}

else

{

if(sbl!=0)

{

if(sbl==1)

{

view[snake[1].s_x][snake[1].s_y]=' ';

snake[1].s_x=x_0;

snake[1].s_y=y_0;

view[snake[1].s_x][snake[1].s_y]=SBODY;

}

else

{view[snake[1].s_x][snake[1].s_y]=' ';

for(i;i<sbl;i++)

{

snake[i].s_x=snake[i+1].s_x;

snake[i].s_y=snake[i+1].s_y;

view[snake[i].s_x][snake[i].s_y]=SBODY;

}

snake[sbl].s_x=x_0;

snake[sbl].s_y=y_0;

view[snake[sbl].s_x][snake[sbl].s_y]=SBODY;

}

}

else

{

view[snake[sbl].s_x][snake[sbl].s_y]=' ';


}

}

view[snake[0].s_x][snake[0].s_y]=SHEAD;


}



void start()

{

int i=0;//后续版本使用

int j=0;

while(1)

{

_sleep(speed_time-5*(length/5));

if(speed_point!=(length/5))

{

speed_point=(length/5);

printf("速度增加了哦!\n");

_sleep(1000);

}

Get_button();

move();

if(end==1)

{

system("cls");

printf("死得好!!\n");

printf("再见!!\n");

_sleep(2000);

for(i=0;i<L;i++)

{

for(j=0;j<H;j++)

{

view[i][j]=' ';

}

}

for(i=0;i<length;i++)

{

snake[i].s_x=0;

snake[i].s_y=0;

}

length=0;

sbl=0;

end=0;

speed_time=300;

display();



}

system("cls");

init_view();

printf("任意方向键开始!");

}



}


int main()

{

display();

start();

return 0;

}


热心网友 时间:2023-10-11 05:46

我有一份之前也是知道答题的贪食蛇代码,你要不要。。追问太好了,要要要,992141548 qq e-mail

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 学员如何申请英国伦敦大学专业会计硕士(UOL)学位 及出现哪些故障应该如何维修 ACCA,ACCA是什么,ACCA考试 跪求3三层电梯PLC梯形图 要西门子的 要求已给出大侠帮帮忙吧 三星I9508 Odin刷机 失败 急求高人帮助!!! 摇臂钻床立柱夹紧的工作原理 ACCA SBL如何有效备考? 刷机一直失败,怎么办 谁知道这个娃娃是哪里的吗? 三层电梯PLC梯形图是怎么样的? 请问常用的玻璃是不是都有镀膜的?我们看的那些茶色,蓝色等颜色是膜层的颜色还是玻璃的原色? 夹胶玻璃为什么是透明的 夹胶/夹层玻璃 玻璃夹层里打不同的什么气体气体就会呈现不同的颜色 夹胶玻璃和夹层玻璃有什么区别,LOW-E玻璃和镀膜玻璃有什么区别 什么是夹层玻璃? 什么是钢化玻璃?什么是夹层玻璃?在汽车上那里会用到? 厚度8cm+8cm的夹胶玻璃有没有颜色 PVB夹层玻璃的PVB夹层玻璃具有以下五大特点 夹层玻璃有什么特点? ACCA网课价格一般多少钱 机械手常见故障和修理方法 金融类考什么证比较有用? acca官网为什么不是实时汇率 什么是篮球技术,篮球技术表现形式有哪些? ACCA考试费用一般国内要多少? html表单中如何设置字体属性之类的? Html网页英文要用什么字体? 汽车一般多久保养一次,常规保养中哪些项目必须要做? 车辆保养项目有哪些,保养周期怎么看? 车辆多长时间需要进行一次保养?保养的内容都是什么? 汽车保养都保养哪些项目? 汽车保养项目和周期表 保养车都保养什么项目? 为什么我的手机充不进电?充了几个小时电量还是0 亲情号怎么取消!!! 苹果手机定位怎么同步? 苹果手机如何定位跟踪 苹果手机怎样互相定位? 亲情号码取消方法?
  • 焦点

最新推荐

猜你喜欢

热门推荐