Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1851281
  • 博文数量: 909
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 12260
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-06 20:50
文章分类

全部博文(909)

文章存档

2008年(909)

我的朋友

分类:

2008-05-06 22:34:24

一起学习
贪吃蛇游戏

作者:我心飞翔

下载源代码

  这又是一个贪吃蛇游戏,只不过算法有一点特别。运行得还是很好的。每个结点都有自己的颜色,是动态生成的。不同的颜色有不同的分数.每个结点是一个类,而蛇又是一个类。这样程序的独立和可移植性很强。每个对结点是一个类,也就是一个结构。包含自身的信息,有颜色,转角坐标列表。

class CSnake;

typedef enum{UP=1,DOWN,LEFT,RIGHT,Error} Direction;

typedef struct tagData{

	Direction dirt;

	CPoint pot;

} Data;

typedef CList DirectionList;

class CNode : public CObject

{

private:

	CPoint m_Point;

	Direction m_CurrentDirection;//当前的运动方向

	DirectionList m_List;

	COLORREF m_Color;

	int m_nColorIndex;

	

	friend CSnake;

public:

	CNode();

	virtual ~CNode();

	void SetDirection(int nx, int ny);

	void SetDirection(CPoint point);

	COLORREF GetColor(void);

	void SetColor(COLORREF color);

	void AddDirection(Data* eValue);

	Data* RemoveHead(void);

	void SetColor(int index);

	int GetColorIndex(void);

	

	void SetCurrentDirection(Direction dirt);

	Direction GetCurrentDirection(void);

	void Change(CPoint& point);

	Data* GetHead(void);

};      	
  在CSnake类派生于CWnd是为了建立一个不可见的窗口,用来完成计时器的功能。这里还有一个dll,用来生成一个钩子。来完成得到键盘的操作。如果不这样作的话。游戏区(CEdit)会有光标闪动。当然钩子也不一定要用dll,因为这是一个自己程序的钩子。用它只是用来练手的。就这么多吧。很简单的。


图一

希望大家指点。 E-mail:Error_110@163.com 下载本文示例代码


贪吃蛇游戏贪吃蛇游戏贪吃蛇游戏贪吃蛇游戏贪吃蛇游戏贪吃蛇游戏贪吃蛇游戏贪吃蛇游戏贪吃蛇游戏贪吃蛇游戏贪吃蛇游戏贪吃蛇游戏

阅读(226) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~