用c语言写贪吃蛇(简易)(适用初学者)
目标人群前言代码思路程序分析预处理指令全局变量控制控制台光标的子函数蛇的正常运动以及保证食物的持续出现的函数预备知识此子函数 解析
用于初始化时的子函数根据咱们定义的画布上的数据而分别为用户呈现不同视觉效果的子函数与用户无关的更新的子函数判断用户输出了什么键的子函数预备知识解析
主函数
总结
(文章较长,看完大约需要一个小时,初学者能够通过这个项目学习很多课余知识是很棒的) (ps:后续看到本文的读者,尽量用dev c++来运行本文代码,其它几个ide笔者尝试了,确实会出现一些未知的bug,可以先尝试用dev c++ 跑出代码,再根据自己喜欢用的ide调试)
目标人群
已掌握while for do…while if 等基本控制语句及数组相关知识的初学者
前言
本文意在增加刚入门 c语言的朋友的兴趣,目标是让读者朋友能感受到编码的乐趣,最后能自己独立写出此代码,并自行不断优化、完善。
本文会涉及到较多对于初学者较陌生的知识,希望大家不要产生畏难心理,笔者为了文章的流畅性会简单介绍,想深入了解的朋友可以点击文中对应篮字。
接下来让我们看看代码的全景(笔者ide用的是devC++5.11,用vscode的朋友在学习完本文,记得看一下评论)
代码
#include
#include
#include
#include
#define High 20 //游戏画面尺寸 以向下为x的正半轴,向右为Y的正半轴
#define Width 30
//全局变量
int moveDirection; //小蛇移动位置 ,上下左右分别用1,2,3,4表示
int food_x,food_y; //食物的位置
int canvas[High][Width]={0};//二维数组存储游戏画布中对应元素
//该函数是用于控制 控制台的光标的移动
void gotoxy(int x,int y)
{
HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE); //调用
COORD pos; //定义一个坐标
pos.X=x;
pos.Y=y;
SetConsoleCursorPosition(handle,pos);
}
//该函数是为了蛇的正常运动以及保证食物的持续出现
void moveSankeByDirection()
{
int i,j;
for(i=1;i
{
for(j=1;j
{
if(canvas[i][j]>0)
canvas[i][j]++;
}
}
int oldTail_i,oldTail_j,oldHead_i,oldHead_j;
int max=0;
for(i=1;i
{
for(j=1;j
{
if(canvas[i][j]>0)
{
if(max