文章目录
1. 贪吃蛇介绍
贪吃蛇游戏想必大家并不陌生,它的玩法很简单,通过上下左右控制贪吃蛇的移动,让它吃到地图上某个位置的食物,每次吃到食物,小蛇就会变长一段,看起来是不是很神奇呢!其实这个游戏的设计原理十分简单,通过本篇文章你可以学会使用C语言设计简单的贪吃蛇小游戏。在学习之前你只需要有以下知识的基础:
- C语言基础:基本数据类型、循环语句、switch 条件语句,宏定义,struct 结构体,函数的定义与使用
- DevCpp 工具的基本使用:编译 和运行 .c 文件
如果你有以上这些基础,我相信只需要10分钟你就能掌握贪吃蛇小游戏的编写技巧。
如上图所示,这个小游戏最主要的两个部分就是 画面 和 操作。
首先,小游戏绘制出了一个范围表示贪吃蛇允许的运动范围,以及不断运动着的小蛇。
其次,通过画面我们可以通过键盘来操作小蛇的方向,在这个画面中主要有 上、下、左、右 四种方向。
在写游戏代码前,我们有必要先了解一下如何用 C语言来实现小游戏的画面以及获取用户的操作。
2. 前置准备
2.1 C语言移动光标
windows.h 头文件支持许多与 Windows 系统相关的功能,这里我们主要是使用它里面当中可以获取运行的窗口,运行的坐标相关的方法。
参考:https://docs.microsoft.com/zh-cn/windows/console/setconsolecursorposition
#include <windows.h>
/*--------------------移动光标--------------------- */
void gotoxy(int x,int y)
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); // 获取当前运行程序的窗口
COORD coord; // 获取光标
coord.X = x; // 设置坐标
coord.Y = y;
SetConsoleCursorPosition(handle,coord); // 设置指定控制台屏幕缓冲区中的光标位置。
}
测试:
#include <stdio.h>
int main()
{
gotoxy(2,2);
printf("hello");
}
运行结果:
2.2 C语言读取键盘按键
读取用户的键盘按键则通过 conio.h 这个头文件,它的 _kbhit() 方法 判断用户是否按下某个键,它的最大特点是:如果用户没有按下任何按键,则会返回 false,若按下了按键则返回 true, 同时需配合 _getch() 函数来获取到用户之前按下的键对应的 ASCII码。
#include <conio.h>
#include <stdio.h>
/* ---获取用户按键--- */
int keyDown()
{
int key = -1;
if(_kbhit())
{
fflush(stdin); // 刷新控制台输入的缓冲区
key=_getch(); // 读取键盘的按键
}
return key;
}
测试:
int main(){
int key = 0;
while(1){
key = keyDown(); // 读取用户的键盘按键, 若没有则执行下一行内容
if(key != -1)
printf("按下的按键为: %c\n", char(key));
}
}
运行结果:
2.3 C语言延迟生成随机数
在游戏过程中,我们发现食物的位置每次都是随机的,所以我们需要有生成随机数的函数。
#include <time.h>
#include <stdlib.h>
/*--------获取 [a, b) 范围的随机整数------*/
int randomIn(int a, int b){
srand((unsigned int)time(NULL));
return rand() % b + a;
}
测试:( 输出10次 [0, 10) 的随机整数 )
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <