凸起的阴影效果,以配合界面,由于像素取整的原因,游戏高级难度设置的是6x6模式,而非5×5。
在游戏运行算法中,在开机时运行了预处理的算法,这其中包括了硬件初始化,硬件检测以及游戏资源载入三个步骤。硬件的检测这里只包含了RTC部分检测、FLASH检测、字库检测以及查找系统文件(游戏文件的根目录)。为了使得开机部分界面效果更加美观,在预处理过程中屏幕贴一张带有进度条的开机画面,当检测部分每检测完毕一个项目的时候,都将会return一个值,这是进度条就相应的移动一格,直至结束。
对于拼图游戏的核心算法,进入游戏之后,系统将界面分为若干个区域并依次编号,保存在一个数组里面,当点击触屏之后,会返回点击处所在位置的编号,而后进行判定,若需移动,则将空白区域与拼图区域相互交换,同时step数值加一。当拼图块编号与区域编号相等的时候,游戏即判定获胜,读取相应的time与step值,并判断是否创纪录。当点击暂停键之后,界面显示time固定,同时按键除开始键外均失效,再点击开始键时,读取系统时间,并减去暂停后的时间得到显示时间。点击全图按钮的时候,屏幕将贴出全屏的原图,此时点击任意一点均将返回游戏。
四、主要函数成员
Get_Ps_Addr( ) PT_Win_Chk( ) Move_Pic( ) Need_Move( ) PTGame_Key_To_Num( ) Win_Msg( ) Game_pause( ) Load_Fun_Start( ) PTGame_Play( ) Is_In_area( )
获取游戏图片起始坐
标点
检查拼图游戏是否获胜的算法
拼图移动的算法
判断拼图是否需要移动的算法
拼图游戏获取按键返回值
拼图游戏是否获胜及创纪录判断
暂停、开始设置
按键触点选项函数
拼图游戏主函数
判断触点是否在区域内
五、程序整体间调用关系
六、程序的实现
1.游戏的启动:
包括了硬件初始化,硬件检测以及游戏资源载入三个步骤。其中硬件检测最为重要,包含了RTC部分检测、FLASH检测、字库检测以及查找系统文件(游戏文件的根目录)。当自检正常的时候,依此返回对应的值。
while(RTC_Init()) //检测RTC部分是否正常 { POINT_COLOR=RED; LCD_ShowString(20,20,"RTC ERROR "); delay_ms(500); LCD_ShowString(20,20,"RTC Trying..."); delay_ms(500); } while(AT24CXX_Check()) { POINT_COLOR=RED; LCD_ShowString(20,40,"AT24C02 ERROR"); delay_ms(500); LCD_ShowString(20,40,"Rechecking..."); delay_ms(500); } while(SPI_Flash_ReadID()!=0XEF14)//FLASH检测 { POINT_COLOR=RED; LCD_ShowString(20,60,"W25X16 ERROR "); delay_ms(500); LCD_ShowString(20,60,"Rechecking..."); delay_ms(500); } if(Font_Init())goto UPDF;//字库不存在,则更新字库 SD_Init(); while(FAT_Init())//FAT 错误 { if(FAT_Init()==1) { POINT_COLOR=RED; LCD_ShowString(20,100,"Fat Check ERR ,return 1"); delay_ms(2000); }