连连看的算法 ( 积分: 100 )

  • 主题发起人 主题发起人 tswhq
  • 开始时间 开始时间
T

tswhq

Unregistered / Unconfirmed
GUEST, unregistred user!
我初步想是:将数据放在2维矩阵中,每个数据对应一个Image控件,但算法不会请大家赐教
 
TImageID = Integer;
TImages: array of array of TImageID;
...算法...
if Images[0, 0] = Images[x, y] then
begin
Images[0, 0] := -1; //代表空格。
Images[x, y] := -1; //代表空格。
end;
 
连接算法?从一个格子(x,y)放出射线(在X,Y任何一个维度上加或者减),如果遇到的是
空格子,就打上标记,如果格子非空,则检查是不是相同类型的(类型相同表示可以连上,
不同就终止)。然后,遍历二维表,对所有已经打上标记的格子,执行同样的操作。结束后
再遍历一次——这样就完成了两次转折。

至于二维格子的数据结构可以考虑参考 1023319 号帖子的策略。
显示可以采用DrawGrid+ImageList
 
后退
顶部