事由,在某外国网站上看见一个用MASM32写的小游戏(作者zedd),见图:

游戏开始时,15个方块是随机的,玩家移动方块直到排好顺序...1,2,3,4,5....15为止.
数字的图片档放在一个叫PIX的文件夹,由01.BMP到15.BMP共15个.
想像一下,假如把一幅风景图(或任意图)分作16份(网上有许分图的软件,可自行搜寻),
然后任意丢弃四角之一,剩下15个,替换原来的数字图,那么,这个小程式
就会变成一个简单的拼图游戏.
今天要动脑筋的,并不是如何分图,而是如何修改完善已有的代码.
原程式已经写很不错了,不足500行的代码包括了一个windows游戏最基本的结构,
改动一下就可以套用在其他游戏上,问题是,此游戏不支援滑鼠,
只能按上下左右推动小砖块!据原作表示,根本没有考虑过支援滑鼠....
怎么按滑鼠没反应?
这就是我第一个反应,于是瞄一下作者发的源码,找到切入点,在消息回路中加入读取滑鼠的
uMsg == WM_LBUTTONDOWN
然后根据坐标判断位置是否确(空格四周按滑鼠才有效,比如按空格左侧的砖块,
砖块会右移,按不是邻近的砖块无效),再作移动,我把加入的代码,大概4-50行发给原作者,
最后加到完成的版本里v2.

压缩包里包含未滑鼠支持的原版本4x4.asm和程式4x4.exe
4x4-1.exe是加入支援滑鼠的版本(同时也支持方向键),其余的文件是编译时的相关文件/运行文件,
执行时必须也放在同一个文件夹.
4x4.exe编译加了ico,大小41k,比较大,4x4-1.exe没有加ico,反而很小,只有5k.
好了,动脑筋的问题是.....
大家想想,如何在源代码上加入滑鼠支持,首先要看懂人家怎么写方向键支援,
然后把滑鼠的位置(置身在那一格),化为方向键.....的思路,有兴趣masm32汇编的吧友可以玩玩..

游戏开始时,15个方块是随机的,玩家移动方块直到排好顺序...1,2,3,4,5....15为止.
数字的图片档放在一个叫PIX的文件夹,由01.BMP到15.BMP共15个.
想像一下,假如把一幅风景图(或任意图)分作16份(网上有许分图的软件,可自行搜寻),
然后任意丢弃四角之一,剩下15个,替换原来的数字图,那么,这个小程式
就会变成一个简单的拼图游戏.
今天要动脑筋的,并不是如何分图,而是如何修改完善已有的代码.
原程式已经写很不错了,不足500行的代码包括了一个windows游戏最基本的结构,
改动一下就可以套用在其他游戏上,问题是,此游戏不支援滑鼠,
只能按上下左右推动小砖块!据原作表示,根本没有考虑过支援滑鼠....
怎么按滑鼠没反应?
这就是我第一个反应,于是瞄一下作者发的源码,找到切入点,在消息回路中加入读取滑鼠的
uMsg == WM_LBUTTONDOWN
然后根据坐标判断位置是否确(空格四周按滑鼠才有效,比如按空格左侧的砖块,
砖块会右移,按不是邻近的砖块无效),再作移动,我把加入的代码,大概4-50行发给原作者,
最后加到完成的版本里v2.

压缩包里包含未滑鼠支持的原版本4x4.asm和程式4x4.exe
4x4-1.exe是加入支援滑鼠的版本(同时也支持方向键),其余的文件是编译时的相关文件/运行文件,
执行时必须也放在同一个文件夹.
4x4.exe编译加了ico,大小41k,比较大,4x4-1.exe没有加ico,反而很小,只有5k.
好了,动脑筋的问题是.....
大家想想,如何在源代码上加入滑鼠支持,首先要看懂人家怎么写方向键支援,
然后把滑鼠的位置(置身在那一格),化为方向键.....的思路,有兴趣masm32汇编的吧友可以玩玩..