贪吃蛇游戏c语言编程心得体会,利用C/C++实现较完整贪吃蛇游戏

本文介绍了作者使用C/C++编写贪吃蛇游戏的心得体会,通过自定义gotoxy函数实现字符在DOS界面的移动,并利用kbhit()非阻塞函数处理游戏逻辑,同时详细讲解了游戏的关键部分,如方向控制、蛇身移动和碰撞检测等。
摘要由CSDN通过智能技术生成

记得在大一时刚学习c/c++语言,学到一半突然想用这门语言做一些小游戏出来,首先想到的便是贪吃蛇。于是本人利用空余时间写出了这么一个简单的小游戏。

由于当时的我还没有能力构造出用户界面,故直接使用dos界面运行。那么问题来了,如何让一个字符在dos界面上自由移动???对于这个问题我采用的解决方案是实现gotoxy函数来控制指针位置从而实现字符的移动。那么我们就先来实现这个函数。

gotoxy 函数并非系统函数,我将其储存于 gotoxy.h 的头文件中方便调用。

gotoxy.h

#include

void gotoxy(int x,int y)

{

COORD pos;

pos.X = x - 1;

pos.Y = y - 1;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);

}

现在我们已经能够利用 gotoxy 函数对指针进行控制,那么实现字符的移动则只需将原来位置的字符清除,然后利用此函数移动指针到想去的坐标后打印字符即可。

在对此函数进行测试的时候,我发现了一个重要的问题,因为代码是一行一行的运行,那么在等待我输入方向的时候,其他代码是无法执行的,这意味这我的蛇只能是我给一下方向它移动一下,那么该如何使得字符在等待我输出方向的同时自行移动呢???对于这个问题有两个解决方案:一、创建线程(对于当时的我来说线程还很陌生) 二、利用 kbhit() 非阻塞函数(百度一下,你就知道)。当然我选择的是第二个方案,再配合使用 getch() 函数即可完美实现方向的输入。

该游戏的两个难点都解决了,话不多说 ↓

(由于没有涉及什么算法,加之年少,代码显得过于冗长)

这里主要运用到的知识有这些:结构体,srand(),rand(),kbhit(),getch(),Sleep().

/*******************http://blog.csdn.net/lcsy000**********************/

#include

#include"gotoxy.h"

#include

#include

#include

using namespace std;

char direction_a,direction_b; //方向a、b,用于方向的限制

int scores,num,fool_x,fool_y,speed=100; //得分、num用于蛇身起步、食物x坐标、食物y坐标

bool end; //结束标记

struct node //蛇身结点

{

int x,y;

node *next;

}*head=NULL,*p,*tail;

void init(); //初始化开始界面

void start(); //游戏开始入场

void init_snake(); //初始化蛇身

void delete_snake(); //删除蛇身

void control(); //方向控制

void move(); //蛇身移动

void limit(); //方向限制

void panduan(); //配合limit限制方向

void

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值