简易贪吃蛇c语言贴吧,熬书几个月,终于编出简易的贪吃蛇了,VS2013

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#include

#include

#define X 30

#define Y 15

void guozi(int *x, int *y);

int main(void)

{

char map[X][Y];

int x;

int y;//横纵坐标

int i;

int j;//标记蛇头

int p, q;//标记蛇尾

int t, d;//寻找蛇尾

int n = 4;//蛇的长度

int r;//交换变量

int c, v;//果子坐标

int map1[X][Y];

int key; //定义key,用于接收按键键值

int f=4;//记录方向,起始方向向右 1上 2下 3左 4右

int t_time=time(NULL);//记录时间

for (y = 0; y < Y; y++)

for (x = 0; x < X; x++)

map[x][y] = * *;

for (y = 0; y < Y;)

{

for (x = 0; x < X; x++)

map[x][y] = *-*;

if (x == 30)

break;

}

for (x = 0; x < X;)

{

for (y = 1; y

map[x][y] = *|*;

if (y == 15)

break;

}

for (y = 14; y < Y;)

{

for (x = 0; x < X; x++)

map[x][y] = *-*;

if (x == 30)

break;

}

for (x = 29; x < X;)

{

for (y = 1; y

map[x][y] = *|*;

if (y == 14)

break;

}//绘图

for (y = 0; y < Y; y++)

for (x = 0; x < X; x++)

map1[x][y] = 0;

map1[4][2] = 1;

map1[3][2] = 2;

map1[2][2] = 3;

map1[1][2] = 4;

for (y = 0; y < Y; y++)

{

for (x = 0; x < X; x++)

{

if (map1[x][y] == 1)

map[x][y] = *o*;

else if (map1[x][y]>1)

map[x][y] = ***;

}

}

guozi(&c, &v);//生成果子

while (map1[c][v]>0 && (map[c][v] == *|* || map[c][v] == *-*))

{guozi(&c, &v);

}//描绘果子

if (map1[c][v] == 0 && map[c][v] != *|* && map[c][v] != *-*)

{

map1[c][v] = -1;

map[c][v] = ***;

}

for (y = 0; y < Y; y++)

{

for (x = 0; x < X; x++)

printf("%c", map[x][y]);

printf("\n");

}//画蛇

i = 4;

j = 2;//标记蛇头

p = 1;

q = 2;//标记蛇尾

while (1)

{

while (_kbhit() == 0)

if (t_time < time(NULL))

{

if (f == 4)

{

if (i == 28)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i + 1][j] == 2)

{

break;

}

if (map1[i + 1][j] > 2)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i + 1][j] == -1)

{

n++;

map1[i + 1][j] = 1;

map1[i][j] = n;

guozi(&c, &v);//生成果子

while (map1[c][v] > 0 || map[c][v] == *|* || map[c][v] == *-*)

{

guozi(&c, &v);

}//描绘果子

map1[c][v] = -1;

map[c][v] = ***;

goto b4;

}

map1[i + 1][j] = 1;//蛇头位移

map1[i][j] = map1[p][q];//蛇尾迁入

map1[p][q] = 0;//原蛇尾置零,擦掉蛇尾

b4:while (map1[i][j] > 2)

{

for (t = 0; t < X; t++)

for (d = 0; d < Y; d++)

{

if (map1[t][d] == map1[i][j] - 1 && map1[t][d] != 1)

{

p = t; q = d;//寻找新蛇尾

r = map1[i][j];//新旧蛇尾交换

map1[i][j] = map1[p][q];

map1[p][q] = r;

}

}

}

i++;

for (t = 0; t < X; t++)

{

for (d = 0; d < Y; d++)

{

if (map1[t][d] == n)

{

p = t; q = d;//寻找新蛇尾

}

}

}

t_time = time(NULL);

}//*******************************自动向右

if (f == 3)

{

if (i == 1)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i - 1][j] == 2)

{

break;

}

if (map1[i - 1][j] > 2)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i - 1][j] == -1)

{

n++;

map1[i - 1][j] = 1;

map1[i][j] = n;

guozi(&c, &v);//生成果子

while (map1[c][v] > 0 || map[c][v] == *|* || map[c][v] == *-*)

{

guozi(&c, &v);

}//描绘果子

map1[c][v] = -1;

map[c][v] = ***;

goto b3;

}

map1[i - 1][j] = 1;//蛇头位移

map1[i][j] = map1[p][q];//蛇尾迁入

map1[p][q] = 0;//原蛇尾置零,擦掉蛇尾

b3:while (map1[i][j] > 2)

{

for (t = 0; t < X; t++)

for (d = 0; d < Y; d++)

{

if (map1[t][d] == map1[i][j] - 1 && map1[t][d] != 1)

{

p = t; q = d;//寻找新蛇尾

r = map1[i][j];//新旧蛇尾交换

map1[i][j] = map1[p][q];

map1[p][q] = r;

}

}

}

i--;

for (t = 0; t < X; t++)

{

for (d = 0; d < Y; d++)

{

if (map1[t][d] == n)

{

p = t; q = d;//寻找新蛇尾

}

}

}

}//******************自动向左

if (f == 1)

{

if (j == 1)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i][j - 1] == 2)

{

break;

}

if (map1[i][j - 1] > 2)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i][j - 1] == -1)

{

n++;

map1[i][j - 1] = 1;

map1[i][j] = n;

guozi(&c, &v);//生成果子

while (map1[c][v] > 0 || map[c][v] == *|* || map[c][v] == *-*)

{

guozi(&c, &v);

}//描绘果子

map1[c][v] = -1;

map[c][v] = ***;

goto b1;

}

map1[i][j - 1] = 1;//蛇头位移

map1[i][j] = map1[p][q];//蛇尾迁入

map1[p][q] = 0;//原蛇尾置零,擦掉蛇尾

b1:while (map1[i][j] > 2)

{

for (t = 0; t < X; t++)

for (d = 0; d < Y; d++)

{

if (map1[t][d] == map1[i][j] - 1 && map1[t][d] != 1)

{

p = t; q = d;//寻找新蛇尾

r = map1[i][j];//新旧蛇尾交换

map1[i][j] = map1[p][q];

map1[p][q] = r;

}

}

}

j--;

for (t = 0; t < X; t++)

{

for (d = 0; d < Y; d++)

{

if (map1[t][d] == n)

{

p = t; q = d;//寻找新蛇尾

}

}

}

}//***********************************自动向上

if (f == 2)

{

if (j == 13)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i][j + 1] == 2)

{

break;

}

if (map1[i][j + 1] > 2)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i][j + 1] == -1)

{

n++;

map1[i][j + 1] = 1;

map1[i][j] = n;

guozi(&c, &v);//生成果子

while (map1[c][v] > 0 || map[c][v] == *|* || map[c][v] == *-*)

{

guozi(&c, &v);

}//描绘果子

map1[c][v] = -1;

map[c][v] = ***;

goto b2;

}

map1[i][j + 1] = 1;//蛇头位移

map1[i][j] = map1[p][q];//蛇尾迁入

map1[p][q] = 0;//原蛇尾置零,擦掉蛇尾

b2:while (map1[i][j] > 2)

{

for (t = 0; t < X; t++)

for (d = 0; d < Y; d++)

{

if (map1[t][d] == map1[i][j] - 1 && map1[t][d] != 1)

{

p = t; q = d;//寻找新蛇尾

r = map1[i][j];//新旧蛇尾交换

map1[i][j] = map1[p][q];

map1[p][q] = r;

}

}

}

j++;

for (t = 0; t < X; t++)

{

for (d = 0; d < Y; d++)

{

if (map1[t][d] == n)

{

p = t; q = d;//寻找新蛇尾

}

}

}

}//**************************自动向下

for (y = 0; y < Y; y++)

{

for (x = 0; x < X; x++)

{

if (map1[x][y] == 0)

map[x][y] = * *;

if (map1[x][y] == 1)

map[x][y] = *o*;

else if (map1[x][y]>1)

map[x][y] = ***;

}

}

for (y = 0; y < Y;)

{

for (x = 0; x < X; x++)

map[x][y] = *-*;

if (x == 30)

break;

}

for (x = 0; x < X;)

{

for (y = 1; y

map[x][y] = *|*;

if (y == 15)

break;

}

for (y = 14; y < Y;)

{

for (x = 0; x < X; x++)

map[x][y] = *-*;

if (x == 30)

break;

}

for (x = 29; x < X;)

{

for (y = 1; y

map[x][y] = *|*;

if (y == 14)

break;

}//绘图

system("cls");

for (y = 0; y < Y; y++)

{

for (x = 0; x < X; x++)

printf("%c", map[x][y]);

printf("\n");

}//画蛇

t_time = time(NULL);

}

key = _getch();

switch (key)

{

case 72:

if (j == 1)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i][j - 1] == 2)

{

break;

}

if (map1[i][j - 1] > 2)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i][j - 1] == -1)

{

n++;

map1[i][j - 1] = 1;

map1[i][j] = n;

guozi(&c, &v);//生成果子

while (map1[c][v]>0 || map[c][v] == *|* || map[c][v] == *-*)

{

guozi(&c, &v);

}//描绘果子

map1[c][v] = -1;

map[c][v] = ***;

goto a1;

}

map1[i][j - 1] = 1;//蛇头位移

map1[i][j] = map1[p][q];//蛇尾迁入

map1[p][q] = 0;//原蛇尾置零,擦掉蛇尾

a1:while (map1[i][j] > 2)

{

for (t = 0; t < X; t++)

for (d = 0; d < Y; d++)

{

if (map1[t][d] == map1[i][j]-1&&map1[t][d]!=1)

{

p = t; q = d;//寻找新蛇尾

r = map1[i][j];//新旧蛇尾交换

map1[i][j] = map1[p][q];

map1[p][q] = r;

}

}

}

j--;

for (t = 0; t < X; t++)

{

for (d = 0; d < Y; d++)

{

if (map1[t][d] == n)

{

p = t; q = d;//寻找新蛇尾

}

}

}

f = 1;

break;

case 80:if (j == 13)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i][j + 1] == 2)

{

break;

}

if (map1[i][j + 1] > 2)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i][j + 1] == -1)

{

n++;

map1[i][j + 1] = 1;

map1[i][j] = n;

guozi(&c, &v);//生成果子

while (map1[c][v]>0 || map[c][v] == *|* || map[c][v] == *-*)

{

guozi(&c, &v);

}//描绘果子

map1[c][v] = -1;

map[c][v] = ***;

goto a2;

}

map1[i][j + 1] = 1;//蛇头位移

map1[i][j] = map1[p][q];//蛇尾迁入

map1[p][q] = 0;//原蛇尾置零,擦掉蛇尾

a2:while (map1[i][j] > 2)

{

for (t = 0; t < X; t++)

for (d = 0; d < Y; d++)

{

if (map1[t][d] == map1[i][j] - 1 && map1[t][d] != 1)

{

p = t; q = d;//寻找新蛇尾

r = map1[i][j];//新旧蛇尾交换

map1[i][j] = map1[p][q];

map1[p][q] = r;

}

}

}

j++;

for (t = 0; t < X; t++)

{

for (d = 0; d < Y; d++)

{

if (map1[t][d] == n)

{

p = t; q = d;//寻找新蛇尾

}

}

}

f = 2; break;

case 75:if (i == 1)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i - 1][j] == 2)

{

break;

}

if (map1[i - 1][j] > 2)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i-1][j] == -1)

{

n++;

map1[i-1][j] = 1;

map1[i][j] = n;

guozi(&c, &v);//生成果子

while (map1[c][v]>0 || map[c][v] == *|* || map[c][v] == *-*)

{

guozi(&c, &v);

}//描绘果子

map1[c][v] = -1;

map[c][v] = ***;

goto a3;

}

map1[i-1][j] = 1;//蛇头位移

map1[i][j] = map1[p][q];//蛇尾迁入

map1[p][q] = 0;//原蛇尾置零,擦掉蛇尾

a3:while (map1[i][j] > 2)

{

for (t = 0; t < X; t++)

for (d = 0; d < Y; d++)

{

if (map1[t][d] == map1[i][j] - 1 && map1[t][d] != 1)

{

p = t; q = d;//寻找新蛇尾

r = map1[i][j];//新旧蛇尾交换

map1[i][j] = map1[p][q];

map1[p][q] = r;

}

}

}

i--;

for (t = 0; t < X; t++)

{

for (d = 0; d < Y; d++)

{

if (map1[t][d] == n)

{

p = t; q = d;//寻找新蛇尾

}

}

}

f = 3; break;

case 77:

if (i == 28)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i + 1][j] == 2)

{

break;

}

if (map1[i + 1][j] > 2)

{

system("cls");

printf("Game over.\n");

system("pause");

return 0;

}

if (map1[i+1][j] == -1)

{

n++;

map1[i+1][j] = 1;

map1[i][j] = n;

guozi(&c, &v);//生成果子

while (map1[c][v]>0 || map[c][v] == *|* || map[c][v] == *-*)

{

guozi(&c, &v);

}//描绘果子

map1[c][v] = -1;

map[c][v] = ***;

goto a4;

}

map1[i + 1][j] = 1;//蛇头位移

map1[i][j] = map1[p][q];//蛇尾迁入

map1[p][q] = 0;//原蛇尾置零,擦掉蛇尾

a4:while (map1[i][j] > 2)

{

for (t = 0; t < X; t++)

for (d = 0; d < Y; d++)

{

if (map1[t][d] == map1[i][j] - 1 && map1[t][d] != 1)

{

p = t; q = d;//寻找新蛇尾

r = map1[i][j];//新旧蛇尾交换

map1[i][j] = map1[p][q];

map1[p][q] = r;

}

}

}

i++;

for (t = 0; t < X; t++)

{

for (d = 0; d < Y; d++)

{

if (map1[t][d] == n)

{

p = t; q = d;//寻找新蛇尾

}

}

}

f = 4;

break;

case 27:return 0; //键值27为Esc键,当按下这个键时退出程序

}

for (y = 0; y < Y; y++)

{

for (x = 0; x < X; x++)

{

if (map1[x][y] == 0)

map[x][y] = * *;

if (map1[x][y] == 1)

map[x][y] = *o*;

else if (map1[x][y]>1)

map[x][y] = ***;

}

}

for (y = 0; y < Y;)

{

for (x = 0; x < X; x++)

map[x][y] = *-*;

if (x == 30)

break;

}

for (x = 0; x < X;)

{

for (y = 1; y

map[x][y] = *|*;

if (y == 15)

break;

}

for (y = 14; y < Y;)

{

for (x = 0; x < X; x++)

map[x][y] = *-*;

if (x == 30)

break;

}

for (x = 29; x < X;)

{

for (y = 1; y

map[x][y] = *|*;

if (y == 14)

break;

}//绘图

system("cls");

for (y = 0; y < Y; y++)

{

for (x = 0; x < X; x++)

printf("%c", map[x][y]);

printf("\n");

}//画蛇

}

return 0;

}

void guozi(int *x, int *y)

{

srand((unsigned int)time(0));

*x = rand() % 28 + 1;

*y = rand() % 13 + 1;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux命令行提示符居中,linux命令行学习(54):修改提示符

提示符由环境变量PS1决定&#xff0c;所以&#xff0c;修改提示符就是修PS1的值。一、保存PS1原来的值以及恢复原值为了防止麻烦&#xff0c;在修改PS1的值之前&#xff0c;可以先将PS1的值保存起来&#xff0c;以备以后恢复。我们建立一个环境变量ps1执行命令&#xff1a;ps1&…

flask(精讲)

Flask 一&#xff1a;web框架Django和Flask本质 socket服务端 ?123wsgi&#xff1a; Web服务网关接口- wsgiref # Django内部内置模块- werkzeug # Flask安装完成后&#xff0c;内部默认已经安装好werkzeugfrom werkzeug.wrappers import Request, Respons…

c++builder 运行网站的api_04 将您的API Builder Docker映像发布到AMPLIFY运行时服务(ARS)...

「注&#xff1a;转载请注明出处&#xff0c;谢谢&#xff01;」注意&#xff1a;请参考在线文档以获取最新信息。将APIBuilder应用程序部署到AMPLIFY Runtime Services在先前文章中&#xff0c;我们描述了如何轻松地使用API Builder Standalone创建微服务并将其打包为可在任何…

Android数据库 分页查询,Android之怎么使用SQLite数据库(增、删、改、查、分页等)以及ListView显示数据(转)...

由于刚接触android开发&#xff0c;故此想把学到的基础知识记录一下&#xff0c;以备查询&#xff0c;故此写的比较啰嗦&#xff1a;步骤如下&#xff1a;一、介绍&#xff1a;此文主要是介绍怎么使用android自带的数据库SQLite&#xff0c;以及把后台的数据用ListView控件显示…

go int64转string_go常见问题收录

本条文章记录本人在实际项目中遇到的实际问题&#xff0c;如有错误&#xff0c;欢迎指正&#xff0c;仅供参考&#xff01;欢迎点赞收藏转发&#xff0c;转载请添加原链接声明哦&#xff01;感谢您的支持。变量各种类型转换string转成intintstring转成int64int64, err : strcon…

程序员的功法

今天做复杂业务的时候有感而发。 做程序员这一行其实与练功差不多&#xff0c;都讲究外功与内功。 外功有&#xff1a;编辑器的各种快捷键使用&#xff0c;各种工具提高编程以及分析效率。 内功&#xff1a;算法&#xff0c;数据结构&#xff0c;操作系统原理&#xff0c;代码结…

氢os关闭android键盘,氢OS11到来前,先听听这些一加用户对氢OS的吐槽

随着新版安卓系统发布&#xff0c;各厂商都在筹备新版系统。这几天&#xff0c;一加的官方动态全部围绕着即将到来的氢OS11&#xff0c;广开言路收集大家意见&#xff0c;宣传力度非常大&#xff0c;似乎是希望通过新系统改变大家对于氢OS简陋、稳定性差以及功能更新效率低的印…

mysql部门人员排序设计_MySQL数据库访问性能优化

MYSQL应该是最流行的WEB后端数据库。大量应用于PHP&#xff0c;Ruby&#xff0c;Python&#xff0c;Java 等Web语言开发项目中&#xff0c;无论NOSQL发展多么快&#xff0c;都不影响大部分架构师选择MYSQL作为数据存储。MYSQL如此方便和稳定&#xff0c;以至于我们在开发 WEB 程…

缓冲区的原理

缓冲区中封装了一个数组&#xff0c;并对外提供方法来操作数组&#xff0c;这些方法操作的就是该数组的下标。 而缓冲的原理就是从源获取一批数据放进缓冲区&#xff0c;再从缓冲区不断的取出一个一个的数据。 在每次取完后&#xff0c;再从源中取一批数据到缓冲区&#xff0c;…

android如何删除项目,AndroidStudio中怎样删除项目

最近决定从Eclipse转到AndroidStudio了。虽然之前有接触过AndroidStudio&#xff0c;但都是为了体验一下AndroidStudio炫酷的界面&#xff0c;并没有深入的了解过&#xff0c;所以这次准备好好学习一番AndroidStudio。。。刚开始转到AndroidStudio的时候确实有很多不适应的地方…

openstack o版本自动化脚本安装

controller 节点 跑glance nova (MQ)messaging apache keystone neutron mysql memcache chrony empd epmd 介绍如下 参考 http://blog.csdn.net/mituan1234567/article/details/52767290 在《Erlang/OTP 并发编程实战》中&#xff0c;对 epmd 有如下描述&#…

vue点击切换类名_vue 新用户引导(vue-dirver)

最近公司经理让我在项目上做一个新用户引导&#xff0c;讲真这玩意我只在APP上看见过&#xff0c;网页上没啥功能啊&#xff0c;还需要引导&#xff01; 没办法&#xff0c;刚它&#xff01;&#xff01;&#xff01;在网上查了点资料 Vue 基本上都是 intro.js 和 driver.js 两…

Hibernate or 的用法

转自baidu estrictions.or(Restrictions.like(),Restrictions.or(Restrictions.like,........))里面的or可以无限加的.还是比较好用 Session session getHibernateTemplate().getSessionFactory().openSession();Criteria criteria session.createCriteria(Film.class);List&…

c# html转为图片,C# 使用 WebBrowser 实现 HTML 转图片功能的示例代码

在 .NET 平台上&#xff0c;我们有多种方式可以将一段 HTML 文本转换为一张图片&#xff1a;HTML Renderer、SelectPdf 、Aspose.Html等。在 WinForm 程序中&#xff0c;每一个 System.Windows.Forms.Control 的派生类型均包含一个名为 DrawToBitmap 的方法&#xff0c;该方法可…

java的string访问某个元素_CSS伪类与伪元素总是傻傻分不清,这份总结够面试用了

熟悉前端的人都会听过 css 的伪类与伪元素&#xff0c;然而大多数的人都会将这两者混淆。本文从解析伪类与伪元素的含义出发&#xff0c;区分这两者的区别&#xff0c;并且列出大部分伪类与伪元素的具体用法&#xff0c;即使你有用过伪类与伪元素&#xff0c;但里面总有一两个你…

android平板 深度学习,这款叫Remix的设备,或许可以拯救安卓平板

(图片来自于魏布斯评测视频“Remix平板上手使用体验”)现今平板市场&#xff0c;已呈现出苹果谷歌微软三分天下之势。然而&#xff0c;相较于其他两者&#xff0c;安卓平板却并面临着严重的危机&#xff0c;即便自2013年第三季度&#xff0c;安卓平板便已超越iPad成为市场份额的…

IE8下强制浏览器用哪个IE版本渲染页面

在head中加入<meta http-equiv"X-UA-Compatible" content"IEEmulateIE10"/> 转载于:https://www.cnblogs.com/lansetuerqi/p/8288900.html

华为swot分析2020_科技口译现场:华为2020全球分析师大会

华为第17届全球分析师大会2020年5月18-20日在中国深圳举办&#xff0c;本次大会期间&#xff0c;将分享华为对于全球化合作的思考&#xff0c;如何发挥ICT技术价值应对未来世界的不确定性&#xff1b;如何持续创新为人类社会进步做贡献&#xff1b;如何推动产业发展和生态建设&…

python导出数据找不到csv_【记录】使用Python读取/导出(写入)CSV文件

想要用python处理csv文件。 去查了下&#xff0c;python中本身就自带csv模块。 然后参考在线手册&#xff1a; 去试试。 【用python生成csv】 1. 按照手册的例子&#xff0c;试了试&#xff1a;import csv with open(eggs.csv, wb) as csvfile: spamwriter csv.writer(csvfile…

网段划分

IPv4地址分为A、B、C、D、E五类&#xff0c;出去特殊作用的D、E两类&#xff0c;剩下的A、B、C三类地址是我们常见的IP地址段。A类地址的容量最大&#xff0c;可以容纳16777214个主机&#xff0c;B类地址可以容纳65534个主机&#xff0c;C类地址可以容纳254个主机。在这三类地址…