c语言做贪吃蛇vs2015,熬书几个月,终于编出简易的贪吃蛇了,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/409383.shtml

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

相关文章

java零钱换整程序_贪心算法换零钱(java)

贪心算法思想贪心算法总是做出在当前看来做好的选择。也就是说贪心算法并不从整体最后考虑&#xff0c;他做出的选择只是局部最优选择。他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解&#xff0c;但对范围相当广泛的许多问题他能产生整体…

[LeetCode] Sqrt(x)

Implement int sqrt(int x). Compute and return the square root of x. 牛顿迭代 1 class Solution {2 public:3 int sqrt(int x) {4 // Start typing your C/C solution below5 // DO NOT write int main() function6 double ans x;7 8…

c语言江宝钏实验六答案,C语言程序设计江宝钏著实验六答案

C语言程序设计江宝钏著实验六答案6.4 实验六 数组一、 实验目的与要求1. 掌握一维数组的定义、赋值和输入输出的方法。2. 理解一维数组的存储方法及下标的表示方法。3. 掌握与数组有关的算法(特别是排序算法 )。4. 掌握二维数组的定义、赋值和输入输出的方法。5. 理解二维数组的…

一文带你理解vue创建一个后台管理系统流程(Vue+Element)

我是歌谣 放弃很容易 但是坚持一定很酷 1前言 本文根据自己工作经历编写&#xff0c;若有不合理之处&#xff0c;欢迎吐槽 2定义 后台管理系统什么 对一个页面进行增删改查 是不是有点像&#xff0c;不重复定义 3第一次接触后台管理系统 第一次接触后台管理系统是某b站的一…

glibc的头文件 linux_求助,编译glibc头文件时出错

我用的软件包如下:binutils-2.16.tar.gzgcc-3.4.4.tar.bz2glibc-2.3.5.tar.gzglibc-linuxthreads-2.3.5.tar.gzlinux-2.6.14.1.tar.gz补丁:ioperm.c.diffflow.c.difft-linux.diff想编译交叉工具链,用的编译指令是这样的:[rootlocalhost build-glibc-headers]#../glibc-2.3.5/co…

多表查询的一些技巧

1、基本方法&#xff1a;From 后面可以接多个表名&#xff0c;表与表之间用逗号隔开&#xff0c;查询字段之间要加上表的名字。 例如&#xff1a;Select table1.column1, table2.column1 from table1, table2 2、表别名&#xff1a;可以为表设置别名&#xff0c;以简化输入&…

c语言 将结构体放在flash,如何将 结构体 的 数据 定义在flash里面,并如何读出来,求各位达人帮助……...

如题&#xff0c;本人不太熟悉GCC&#xff0c;特别是定义在flash和eeprom的数据&#xff0c;所以在做液晶的字库时遇到问题&#xff0c;讲解下思路&#xff1a;用查表的方式&#xff0c;定义一个结构体来装载字符的内码和字符数据。程序如下&#xff1a;/*********************…

“数万行代码“教你用html和css编写一个精美的网页

我是歌谣 放弃很容易 但是坚持一定很酷 1前言 作为一名前端开发工程师 开发一个完美的网页也是我们的必修课之一 逻辑写起来有时候不是那么的难 据说页面样式才是最难的一课 本文内容纯属自己个人观点 欢迎一起交流吐槽 2网页基础版&#xff08;divcss&#xff09; 我第一次接触…

C#中在主窗体中用ShowDialog方法显示子窗体的使用技巧

显示和关闭子窗体&#xff1a; 方法1&#xff1a;源代码&#xff1a; EatGood.FoodManageUI.MessageForm.ConfirmDelFeelkindOrFeelsForm feelkindform new MessageForm.ConfirmDelFeelkindOrFeelsForm(); //创建一个窗体对象 feelkindform.ShowDialog() ; //显示窗体 子窗体中…

cmd oracle sys登录_oracle忘记sys/system/scott用户密码的解决方法

一、忘记除SYS、SYSTEM用户之外的用户的登录密码。用SYS (或SYSTEM)用户登录。CONN SYS/PASS_WORD AS SYSDBA;使用如下语句修改用户的密码。ALTER USER user_name IDENTIFIED BY newpass;注意&#xff1a;密码不能全是数字。并且不能是数字开头。否则会出现&#xff1a;ORA-009…

汇编语言写c51延时程序,单片机延时程序实例讲解

在单片机实验中&#xff0c;有一个很重要也是很基本的子程序必须要求我们掌握&#xff0c;那就是延时程序。下面我凭记忆来讲解延时程序。课本上讲&#xff0c;1个机器周期6个状态周期12个时钟周期&#xff0c;而这个时钟周期与晶振频率有关。我们接下来要上的实验基本都是以12…

Data Analysis: What are the skills needed to become a data analyst?

今天看到一个讨论贴&#xff1a;如何成为一个牛逼的数据分析师&#xff1f;其中有一贴如此总结。全文如下&#xff1a;There are two classes of skills that are needed to be a successful data analyst: both soft and technical skills are needed. The core work flow fo…

一文带你理解如何解决工作中的需求

我是歌谣 放弃很容易 但是坚持一定很酷 1前言 在我们的开发过程中 会遇到一些开发的需求 怎么实现 怎么写 怎么做才最合理 2需求处理 拿到一个需求就和做数学题一样 我们要理清所有的关系 由于本文知识对需求进行阐述 所以就以vue为例子 2.1 需求1处理页面样式某页面跳转之后如…

tc溜溜865手机投屏卡_溜溜tcgames老版本(电脑玩手机游戏)-溜溜TC Games32位/64位旧版本PC下载V2.0.0官网安卓真机投屏-西西软件下载...

溜溜TC Games32位/64位旧版本PC是一款非常好用的手机游戏投屏工具&#xff0c;有了这款软件我们就可以将手机上的游戏画面投入到电脑上&#xff0c;大屏幕玩游戏&#xff0c;这样肯定会跟畅快&#xff0c;该软件是由成都杰华科技有限公司基于PC端研发的&#xff0c;从此电脑玩游…

c语言八个方向迷宫课程设计,【精品资料最新版】C语言课程设计-迷宫游戏.doc...

计算机技术基础课程设计C语言设计报告题目&#xff1a;完整的二维迷宫游戏学院&#xff1a;工商管理学院专业&#xff1a;信息系统与信息管理班级&#xff1a;050507姓名&#xff1a;孙月指导教师&#xff1a;张首伟设计日期&#xff1a;2004年12月10日题目&#xff1a;完整的二…

文件操作的小tips

freopen功 能: 替换一个流&#xff0c;或者说重新分配文件指针&#xff0c;实现重定向。 eg: freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); /* close the standard output stream */ fclose(stdout);若要返回到显示…

ant接口用什么天线_Ant-Basic天线基本知识讲

1天线1.1天线的作用与地位无线电发射机输出的射频信号功率&#xff0c;通过馈线(电缆)输送到天线&#xff0c;由天线以电磁波形式辐射出去。电磁波到达接收地点后&#xff0c;由天线接下来(仅仅接收很小很小一部分功率)&#xff0c;并通过馈线送到无线电接收机。可见&#xff0…

android imageview 图片切换动画,在Android中以动画方式将ImageView移动到不同的位置...

TranslateAnimation animation new TranslateAnimation(0, 50, 0, 100);animation.setDuration(1000);animation.setFillAfter(false);animation.setAnimationListener(new MyAnimationListener());imageView.startAnimation(animation);更新&#xff1a;问题是&#xff0c;Vi…