C语言做贪吃蛇用什么软件编写?

 我来答
匿名用户
2019-01-12
展开全部
问题上已经说了,是用C语言做的贪吃蛇,那么编写它的软件就是:C语言(一门通用计算机编程语言,广泛应用于底层开发)。
百度网友44a945b
2019-01-12 · 贡献了超过153个回答
知道答主
回答量:153
采纳率:30%
帮助的人:12.5万
展开全部
了解贪吃蛇设计思路

上图中的红色空心方框(□)表示边框,是贪吃蛇的边界,贪吃
蛇不能碰到它,否则就“死掉”
,游戏结束。绿色实心方框(■)表示
贪吃蛇的活动范围,贪吃蛇可以自由移动,食物(苹果)也会随机出
现在这个区域。
我们不妨将贪吃蛇的活动范围称为
“贪吃蛇地图”


加上边框就称为“全局地图”


我们需要记录地图中每一个节点的信息,包括:

位置:也就是第几行几列;

类型:这个节点出现的是贪吃蛇、食物、边框,还是什么都没有
(绿色的背景)


索引:也就是数组下标,稍后会说明是什么意思。

所以需要定义一个结构体二维数组:
struct{
char type;
int index;
}globalMap[MAXWIDTH][MAXHEIGHT];
用一维下标和二维下标表示位置;用
type
表示类型,不同的类
型用不同的数字代表;用
index
表示索引。

直观上讲,应该将
type
定义为
int
类型,不过
int
占用四个字
节,而节点类型的取值范围非常有限,一个字节就足够了,所以为了
节省内存才定义为
char
类型。

同时,再建立一个足够大的一维数组,让贪吃蛇在数组内活动:

struct{
int x;
int y;
} snakeMap[ (MAXWIDTH-2)*(MAXHEIGHT-2) ]
x

y
表示行和列,
也就是
globalMap
数组的两个下标。
globalMap
数组中的索引
index
就是
snakeMap
数组的下标。

globalMap
表示了所有节点的信息,而
snakeMap
只表示了贪吃
蛇的活动区域。
通过
snakeMap
可以定位
globalMap
中的元素,
反过
来通过
globalMap
也可以找到
snakeMap
中的元素。请看下图:


1

globalMap

snakeMap
的初始对应关系

贪吃蛇向左移动时,
headerIndex
指向
404

tailIndex
指向

406


为什么设计的这么晦涩和复杂呢?因为这样设计有以下几个好
处:

贪吃蛇移动时不用处理所有节点,只要添加蛇头、删除蛇尾、重

globalMap

snakeMap
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
廖煊07I
2019-01-12
知道答主
回答量:22
采纳率:0%
帮助的人:1.7万
展开全部
#include <stdio.h>
#include <graphics.h>
#include <stdlib.h>
#include <dos.h> /*引用的库函数*/
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b/*宏定义键名*/
#define N 200
int i,key;
int level;/*游戏等级*/
int score=0;/*得分*/
int gamespeed;/*游戏速度*/
struct Food
{
int x;/*食物的横坐标*/
int y;/*食物的纵坐标*/
int yes;/*判断是否要出现食物的变量*/
}food;/*食物的结构体*/
struct Snake
{
int x[N];
int y[N];
int node;/*蛇的节数*/
int direction;/*蛇移动方向*/
int life;/* 蛇的生命,0活着,1死亡*/
}snake;/*蛇的结构体*/
void Choicelevle(void);/*选择游戏等级*/
void Init(void);/*图形驱动*/
void Close(void);/*图形结束*/
void DRAW(void);/*游戏区域*/
void GameOver(void);/*结束游戏*/
void GamePlay(void);/*玩游戏具体过程*/
void PrScore(void);/*输出成绩*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
执手念华年

2019-01-12 · TA获得超过204个赞
知道小有建树答主
回答量:895
采纳率:49%
帮助的人:57.4万
展开全部
C语言编写贪吃蛇用什么软件,这个问题有点不好回答,你应该是问编译器吧!C语言的编译器有很多的,例如VC++6.0或许最新版的Visual Stdio 2019都能编写的。

<<<<<<<希望以上内容能帮到你
追问
对对,那VC++能运行贪吃蛇吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
色额新东方
2019-01-12 · TA获得超过332个赞
知道小有建树答主
回答量:1928
采纳率:36%
帮助的人:101万
展开全部
其实蛇每吃一个食物蛇身子就增加一格,用UP, DOWN, LEFT, RIGHT控制蛇头的运动,而蛇身子跟着蛇头走,每后一格蛇身子下一步走到上一格蛇身子的位置,以此类推。

#include <stdio.h>

#include <conio.h>

#include <windows.h>

#define BEG_X 2

#define BEG_Y 1

#define WID 20

#define HEI 20

HANDLE hout;

typedef enum {UP, DOWN, LEFT, RIGHT} DIR;

typedef struct Snake_body

{

COORD pos;//蛇身的位置

struct Snake_body *next;//下一个蛇身

struct Snake_body *prev;//前一个蛇身

}SNAKE, *PSNAKE;

PSNAKE head = NULL;//蛇头

PSNAKE tail = NULL;//蛇尾

//画游戏边框的函数

void DrawBorder()

{

int i, j;

COORD pos = {BEG_X, BEG_Y};

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

{

SetConsoleCursorPosition(hout, pos);

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

{

if(i == 0)//第一行

{

if(j == 0)

printf("┏");

else if(j == WID - 1)

printf("┓");

else

printf("━");

}

else if(i == HEI - 1)//最后一行

{

if(j == 0)

printf("┗");

else if(j == WID - 1)

printf("┛");

else

printf("━");

}

else if(j == 0 || j == WID - 1)//第一列或最后一列

printf("┃");

else

printf("  ");

}

++pos.Y;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(33)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式