python拼图游戏

本文介绍了一个使用Python编写的自动拼图游戏,采用A*算法进行路径搜索。游戏允许用户选择图片分割维数和空缺位置,然后自动打乱并恢复。文章详细阐述了A*算法的原理,包括开放列表和关闭列表的操作,以及如何找到最优路径。同时,展示了游戏的效果图,并提供了关键代码段。最后,作者提供了代码下载链接,欢迎大家交流讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近用python写了个自动拼图游戏,内部算法使用的是A*算法。
功能为打开一张图片,选择图片分割的维数和图片空缺的位置,然后自动打乱生成新的图片,然后再恢复。

A*原理

  1. 把起点加入 open表。

  2. 重复如下过程:

a. 遍历 open表,查找 F 值最小的节点,把它作为当前要处理的节点。

b. 把这个节点移到 close表。

c. 对当前方格的 4个方向相邻方格进行操作:

◆ 如果它是不可抵达的或者它在 close表中,忽略它。

◆ 如果它不在 open表中,把它加入 open表,并且把当前方格设置为它的父亲,记录该方格的 F,G 和H值。

◆ 如果它已经在 open表中,检查这条路径 ( 即经由当前方格到达它那里 ) 是否更好,用 H值作参考。更小的H值表示这是更好的路径。如果是这样,把它的父亲设置为当前方格,并重新计算它的 G 、H和 F 值。
d. 判断是否出现以下情况,是就停止跳出循环:

◆ 把终点加入到了 open表中,此时路径已经找到了,或者

◆ 查找终点失败,并且 open表是空的,此时没有路径。

  1. 保存路径。从终点开始,每个方格沿着父节点移动直至起点,这就是你的路径。

效果

开始界面
在这里插入图片描述

打开图片在这里插入图片描述

打乱图片
在这里插入图片描述

主要代码

这是A*算法的代码,主要的就是这个,其他的只是画界面和呈现出来而已。

def run_Axing():
    maxcount=10000+m*m*n*n
    # 1. 把起始格添加到开启列表。
    openList[0]=li0[:]
    cost[0]=H_cost(li_goal,openList[0])
    before[0]=0
    Gn = 0
 #   add_open(st[0])
    # 2.重复如下的工作:
    while len
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值