·
·
功能描述
1、自带BGM。
2、实现贪吃蛇基本操作,默认无敌模式,暂时未设置分数。
3、操作可通过上下左右或者wsad/WSAD,空格键暂停或者继续。
·
·
环境要求
推荐使用vs,且需要配置有easyx。
关于easyx的使用安装,推荐查阅博客:点我!!!
·
·
结果展示
·
·
所涉及的音频文件
蓝奏云链接:https://wws.lanzous.com/b01i41fgb
密码:1024
蓝奏云跳转可直接点我!!!
注意:建议下载后放至源文件同级文件夹res中
·
·
源码展示及功能解读
重点内容全写注释里面了。
主要讲一点,关于蛇本身相对位置的初始化,是需要自己去从具体数据变化中抽象中相应的数学知识的,简单点说,敲代码和数学是离不开的。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>//获取键盘按键
#include <graphics.h>//easyx
//播放音乐用的头文件
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
//窗口大小
#define WIDTH 640
#define HEIGHT 480
//蛇的最大节数
#define SNAKE_NUM 500
//表示蛇的方向
enum DIR//使用枚举型,方便后续记忆
{
UP,
DOWN,
RIGHT,
LEFT
};
//蛇的结构
struct Snake
{
int size;//蛇的大小
int dir;//方向
POINT coor[SNAKE_NUM];//坐标
}snake;
//食物结构
struct Food
{
bool flag;//判断食物是否被吃标志
int r;//食物半径
DWORD color;//食物颜色
//食物坐标:这里就不用POINT了,因为POINT需要逐级访问,还要多一级,比较麻烦
int x;
int y;
}food;
void initFood()//初始化食物
{
//设置随机数种子,一般把时间作为种子,因为时间是在不断变化的
srand(GetTickCount());//GetTickCount():获取系统开机到现在的所经过的毫秒数,也可使用经典方法
//初始化食物
food.x = rand() % WIDTH;//初始化坐标
food.y = rand() % HEIGHT;
food.color = RGB(rand() % 256, rand() % 256, rand(