写个贪吃蛇

news/2024/11/20 1:38:26/

看了Windows程序设计(第5版) 前面几章, 就想写点东西练习一下. 

于是就写了这个贪吃蛇游戏. 花了点时间做了详细的注释. 初学的人可以参考一下

图形用windows api绘制, 逻辑思路在类Snake中, 用list存储蛇坐标.

下载地址:http://download.csdn.net/detail/l470080245/3680228

SnakeGame.h

/* - - - - - - - - - - - - - - - - - - - - -贪吃蛇游戏
SnakeGame.h ——  Snake,1.0版Copyright (C) ling135,2011- - - - - - - - - - - - - - - - - - - - - - - -*/#pragma once
#include <windows.h>
#include <list>
using std::list;const int nWIDTH = 300, nHEIGHT = 300;						// 默认窗口大小
const int  _BLOCKSIZE = 15;									// 设定网格块边长(正方形)
const int S_LEFT = 0, S_RIGHT = 1, S_UP = 2, S_DOWN = 3;	// 四个方向
const int _SUCCESS = 2, _OF_TS = 3;							// 成功通关, 越界或蛇头碰到身体(overflow, touch snake)
const int _LENGTH = 15, _TIMER = 300;						// 通关时蛇长度, 定时器时间// 函数声明, 控制游戏和绘画图形void GameInit(HWND& hWnd);										// 初始化游戏
void Start(HWND& hWnd);											// 开始游戏
void Pause(HWND& hWnd);											// 暂停游戏
void End(HWND& hWnd, bool bIsSuccess);							// 结束游戏
void DrawBaseLine(HDC& hdc, int cxClient, int cyClient);		// 画网格线
void SetGameSize(HWND& hWnd, int &cxClient, int &cyClient);		// 设置Client区的大小
void DrawBlock(HWND& hWnd, RECT &rect, COLORREF crColor);		// 绘画格子
void DrawSnake(HWND &hWnd, COLORREF crColor );					// 绘蛇// 模拟蛇
class Snake
{
public:Snake();~Snake();	// 蛇对象行为void InitSnake();		// 初始化蛇void Left();			// 向左void Right();			// 向右void Up();				// 向上void Down();			// 向下	void EatFood();			// 是否吃到食物int  Check();			// 检查是否通关和越界及蛇头碰到身体	RECT GenerateFood();	// 随机产生食物	// 设置和获取信息void SetClientSize(int &cxClient, int &cyClient);		// 设置nClientWidth和nClientHeightint  GetDir() { return Direction; }						// 返回蛇前进方向RECT GetRectFood() { return RectFood; }					// 返回食物坐标void SetState(bool bState) { bPauseGame = bState; }		// 设置蛇状态(是否暂停)bool GetState() { return bPauseGame; }					// 返回蛇状态(是否暂停)list<RECT>& GetSnakeList() { return SnakeList; }		// 返回SnakeList
private:list<RECT>	SnakeList;				// 蛇坐标	bool		bPauseGame;				// 蛇状态(是否暂停)int			Direction;				// 蛇前进方向RECT		RectFood;				// 食物坐标int			nClientWidth;			// Clinet 大小int			nClientHeight;	
};extern Snake snk;





http://www.ppmy.cn/news/471073.html

相关文章

彩色贪吃蛇

基于EasyX库的C语言小游戏 文章目录 基于EasyX库的C语言小游戏前言游戏实录需求与技术难点分析地图与蛇的生成蛇的移动游戏失败 源码 前言 上一篇文章我们已经做过了见缝插针的小游戏&#xff0c;这次再利用EasyX库做一个贪吃蛇的游戏。 游戏实录 需求与技术难点分析 地图与蛇…

蛇岛狂蟒出没

在一夜月黑风高的杀人夜 有一对小情侣正在湖边露营 就在俩人在帐篷里浓情蜜意时 突然发现有东西在拉帐篷的拉链 在这鸟不拉屎的地方怎么会有别人 男人拔出刀 出去查看情况 但是环顾四周 什么都没有 这时 不远处传来一声猴叫 男人觉得是猴子在恶作剧 就没太放在心上 随…

基于OpenVINOTM2022.2和蝰蛇峡谷优化并部署YOLOv5模型

文章作者 英特尔物联网行业创新大使 杨雪锋 博士 中国矿业大学机电工程学院副教授&#xff1b; 发表学术论文30余篇&#xff0c;获国家专利授权20多件&#xff08;其中发明专利8件&#xff09; 目录 1.1 OpenVINOTM 2022.2简介 1.2 YOLOv5简介 1.3 蝰蛇峡谷简介 1.4 准…

机器蛇?蛇 ?

导读 近日&#xff0c;日本东京电子通信大学研制出一种蛇形铰接式移动机器人&#xff0c;并找出了控制它进行三维转向、爬楼梯和操纵物体的方法&#xff0c;极大地提高了其机动性和灵巧性&#xff0c;可应用于检查狭窄空间和灾区救援等工作。 作者&#xff1a;pumpkin酱 貌丑心…

Python:蟒蛇大战C语言(一)

并非特意比较&#xff0c;也没有贵贱之嫌&#xff0c;对比着学和互相借鉴总之是有好处的吧我觉得 目录 1.命名空间 2.结构体 3.模板与泛型 4. 为类型取别名&#xff08;创建同义词&#xff09;&#xff1a;typedef 5.只读变量 6.lambda表达式的应用 7.宏定义 8…

mysql 将date字段默认值设置为CURRENT_DATE

我们是否可以在mysql中&#xff0c;将Date字段的默认值设置为CURRENT_DATE&#xff08;当前日期&#xff09;&#xff1f; 答案是8.0之前不可以&#xff0c;8.0.13之后可以。 比如在5.7版本中使用如下sql创建表&#xff0c;将会提示语法错误: CREATE TABLE t_order (id bigi…

运动蓝牙耳机什么牌子好,骑行运动耳机

你有没有发现热爱运动的人经常喜欢音乐&#xff0c;因为动态的旋律和优美的歌声会让运动更有趣!现在生活节奏很快&#xff0c;似乎人们所有人都很忙&#xff0c;忙着这个&#xff0c;最好让一首音乐放松紧张的精神&#xff0c;放松心情&#xff0c;快乐的运动&#xff0c;健康的…

运动蓝牙耳机哪个品牌比较好?佩戴牢固的运动蓝牙耳机推荐

对于当前的蓝牙耳机市场来说&#xff0c;蓝牙耳机已经到了真正遍地开花全面普及的地步了&#xff0c;可以说从几十元到几百元价位的耳机可以说已经到了琳琅满目、眼花缭乱的地步。因此大家在挑选蓝牙耳机上&#xff0c;难免不知道下手。接下来的四款耳机每一款都有着自己的独特…