c语言贪吃蛇实训报告文档,C语言实现贪吃蛇.docx

*

*

C 语言实现贪吃蛇

*****************************************************************

************************************************************

贪吃蛇实现原理:

贪吃蛇游戏在理论上是可以无限的进行下去的(除了撞墙和 咬到自己),那么游戏主体就一定是个循环。

蛇是如何动起来的?在这里就是通过不断改变蛇的坐标,然 后根据蛇的坐标不断刷新屏幕在视觉上形成蛇的移动效果。

食物出现在随机位置(当然不能出现在障碍物和蛇身上)

蛇能吃到食物其实就是蛇头的坐标与食物的坐标重合时。

当蛇咬到自己或者撞到墙的时候游戏结束(坐标判断)

******************************************************************

************************************************************/#incl ude

#include

#include

#include

#include //72,80,75,77 是方向键对应的键值

#define UP 72

#define DOWN 80

#define LEFT 75

#define RIGHT 77

#define SNAKE 1

#define SNAKE 1

//蛇的坐标标识

#define FOOD 2

#define FOOD 2

//食物的坐标标识

#define BAR 3

#define BAR 3

// 墙的坐标标识 //初始化地图 17*17

char map[17][17] = {0};

//初始化蛇头坐标 unsigned char snake[50] = {77};

//初始化食物坐标 unsigned char food = 68;

//蛇长 char len = 1;// 存储坐标数字与 x、 y 的转换函数

void tran(unsigned char num,unsigned char * x,unsigned char * y);

//打印游戏 void print_game(void);

//获取方向函数(注意当蛇身长度超过一节时不能回头) int get_dir(int old_dir);

//移动蛇身函数 (游戏大部分内容在其中 void move_snake(int dir);

//生产食物的函数 unsigned char generate_food(void);

//判断蛇死活的函数 (判断了蛇是否撞到边界或者自食) int isalive(void);int main(void){

int dir = UP;//初始方向默认向上, UP 是我们定义的

//按道理该游戏是可以无限继续下去的,因此是个循环

while(1){

print_game();//打印游戏dir = get_dir(dir);//获取方向 (

print_game();

//打印游戏

dir = get_dir(dir);

//获取方向 (我们摁下的方

向)

move_snake(dir);

//移动蛇身

if(!isalive()){

//判断蛇的生命状态

break;printf("Game Over!\n");

break;

printf("Game Over!\n");

return

return 0;

// void tran(unsigned char num,unsigned char * x,unsigned char * y){

//注*x = num >>

//注

*y = (unsigned char)(num << 4) >> 4;

意这里要做个强制类型转换

//根据汇

编,如果不做强制转换,y

编,如果不做强制转换,

y 的值与 num 的值相同

}void print_game(void){

int i,j;

}

}

}

}

//根据地图上每点的情况绘制游戏(i 表示 x 轴, j 表

示 y 轴),按行打印, j 表示行, i 表示列

for(j = 0;j < 17;j ++){

for(i = 0;i < 17;i ++){

//空白地方 if(map[i][j] == 0){

putchar(' ');

//蛇身 else if(map[i][j] == SNAKE){

putchar(

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值