最近开始学习设计游戏。
游戏特别是网络游戏是很复杂的工程。当然学习的时候可以从最简单的开始。
我们知道游戏有两种模式:全屏模式和窗口模式。小游戏多是窗口模式。
我就从最简单的俄罗斯方块开始。源码在这里下载http://www.freewebs.com/jeckma/index.htm。
这是一个最简单的VC工程。基于窗口模式的游戏多是一个基于对话框的工程。但游戏主体尽量和这个框架剥离。这里可以看到在对话框类(CDiamondDlg)中只有一个消息提前捕获函数(PreTranslateMessage)处理按键消息。而游戏的主体全在CDiamondStatic m_ctlDiamond这个变量中。
俄罗斯方块的游戏规则很简单。但从设计的角度考虑需要解决以下几个问题
一 方块组合的几种类型。这是固定的五个样式。CDiamondShape中实现了这个功能。
二 方块的自动下落
三 方块样式的变化
四 消行的触发和记录
五 游戏速度的调节
程序很简单,大家可以自己看看是怎样解决上述问题的。 从总体上看,图形绘制是重点,游戏规则设定是核心。