当前位置:
文档之家› 基于MFC的数字拼图游戏设计与实现
基于MFC的数字拼图游戏设计与实现
pE mp t y Bu t t o n 一 >m Ti i t l e Nu m : m i t l e Nu m;
_
p B u t [ n u m一 1 】 一 > C O I =i :
( 5 )设 置最 后 一 个 按 钮 为 空 位 按 钮 。 主要 实现 代 码 如 下 :
p B u t [ d i m d i m一1 1 一>S h o wW i n d o w( F AL SE ) ;
( 4 )记 录游戏步数 。实现代码为 :c M o v e B u t t o n : : s t e p s + + ;
( 5 )若 该 按 钮 标 题 不 在 链 表 尾 结 点 中 ,则 将 其 添 加 到 链
表尾 ,以便 在 向用 户提供 帮助或者 自动完成 游戏 时按其逆 序
复原 ;否则删除链表尾结点 。主要实现代码如下 :
WS C H J L D I WS V I S I B L E f B S P US HB U T 丁 ON, B u t t o n R e c t
t h i s ,l D+1 0 0 0 +n u m) :
为类 C Mo v e B u t t o n添 加 成 员 函 数 Mo v e ( ' , I ,将 该 按 钮 移 至 空
住每 次移动的按钮 属性 ,为此定 义链 表数据 结构用 于存储 图
片 按 钮 的 位 置 和 数字 。游 戏 出题 算 法 为 :
为 了控 制 图片按 钮的移动 ,还需 要对 图片按钮 重载 鼠标 左键 单击事件 的消息响应 函数 O n L B u u o n U p ,通过在 O n L B u t - . t o n U p函数 中调用 Mo v e函数 完成单击 图片实现移动功能 。
3 . 2 动 态 界 面 的 创 建
r l 图 … 一 形 … … 处~ 理 … … … 与 一 ~ 多 ~ ~ 媒 一 一 I 体
… …
嘲I ME P R O C E S S I N G&MU L T I M E D I A T A C H N O L O G Y …… … …… ……
n u m =i d i m +i +1 :
CS t r i n g m T i t l e Nu m;
_
s t a t i c CM o v eB u t t o n p E mp t y Bu t t on ; s t a t i c i n t E r c v v ,E c o l , S t e p s :
此 时游 戏 界 面 中 图 片 的 排 列 顺 序 提 供 给 用 户 作 为 游 戏 的开 始
布局 。可移动 图片按钮必须 与空位按 钮位相 邻 ,空 位按钮 最
多 有 4个 移 动 方 向 。每 次移 动 网 片就 是 罔 片 按 钮 存 与 空 位 按 钮 进 行 交 换 ,包 括 交换 标 题 、行 列 位 置 和 可 性 。 为 了便 于 实 现 后 面 的 游 戏 提 示 和 自动 完 成 功 能 ,需 要 记
i f ( E x i s t T r a c k ( m_ T i i t l e N u m) ) D e I T r a c k N o d e ( ) :
el s e Ne wT Y a c k No d e ( m T i t l e Nu m,I O W, c o1 ) ;
S h o wW i n d o w( F AL S E ) ;
p E mp t yB u t t o n=t h i s ;
Do w t O W; E c o l= c ol ;
在有些拼 图游戏 中采用 了 8 数码 问题用于 图片 的拆分/ ,保证
每次游戏都有解 。本游戏采用逆 向法实现 图片 的可 重排归位 , 即从游 戏要完成 的 目的界 面开始 ,随机移动 若干 步数后 ,以
CM o v eB u t t o n : : E r o w =d i m一1 :
CM o v eB u t t o n : : E c oI =d i m 一1 :
CMo v eB u t t o n : : p E mp t y Bu t t on= p Bu t [ n u m一1 】 :
p B u t [ n u m一1 】 一 >r C W =i :
位 中。算法步骤包括 : ( 1 )判 断 当前 按 钮如 果 与空位 相邻 ,则 执行 下 面步 骤 ; 否则算法结束 。 ( 2 )设置空位按钮属性 。主要实现代码如下 :
pE mp t y Bu t t on 一 >Sh o wW i n d o w( T RUE ) ;
一…… … …………
t o n ,为其 添 加 成 员 变 量 如 下 :
p u b l i c : i n t c o l , l O W;
p Bu t [ n u m一1 】=n e w CMo v e Bu t t o n 0 ; p Bu t [ n u m一1 】 一>mL T i t l e Nu m. F o r ma t ( ” %d ” , n u m) : p Bu t【 n u m一1 】 = Cr e a t e ( p Bu t【 n u m一1 】 一 >m— Ti t t e Nu m
m
.Se t Wi n d o wT e x t I ( pE mp t y Bu t t o n一 > T i t l e Nu m) ;
4 游戏初 始 化
开 始游 戏时需 要打 乱每个 数字 的顺 序 ,进行 游 戏布局 。
( 3 )使 当前按钮为空位按钮 。主要实现代码如下 :