电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

使用python制作的单人AI扫雷游戏全解析

13页
  • 卖家[上传人]:Baige****0346
  • 文档编号:265414170
  • 上传时间:2022-03-13
  • 文档格式:DOCX
  • 文档大小:1.48MB
  • / 13 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、使用python制作的单人AI扫雷游戏全解析 【摘要】 扫雷是一款单人益智游戏,相信大部分人都在以前上微机课的时候玩过。游戏的目标是借助每个区域中相邻地雷数量的线索,清除包含隐藏的“地雷”或炸弹的单元格,但不引爆其中任何一个,全部清除后即可获胜。今天我们用 Python 完成这个小程序,并且用AI来学习并实现它。AI玩扫雷很高兴又见面了!?扫雷是一款单人益智游戏,相信大部分人都在以前上微机课的时候玩过。游戏的目标是借助每个区域中相邻地雷数量的线索,清除包含隐藏的“地雷”或炸弹的单元格,但不引爆其中任何一个,全部清除后即可获胜。今天我们用 Python 完成这个小程序,并且用AI来学习并实现它。看看我们将要实现的最终样子。?运行扫雷1.确保安装了Python 3.6+。2.安装Pygame。3.克隆这个存储库:GitHub地址:设置 minesweeper.py 扫雷游戏表示class Minesweeper():def _init_(self, height=8, width=8, mines=8): # 设置初始宽度、高度和地雷数量 self.height = height self

      2、.width = width self.mines = set() # 初始化一个没有地雷的空字段 self.board = for i in range(self.height): row = for j in range(self.width): row.append(False) self.board.append(row) # 随机添加地雷 while len(self.mines) != mines: i = random.randrange(height) j = random.randrange(width) if not self.boardij: self.mines.add(i, j) self.boardij = True # 最开始,玩家没有发现地雷 self.mines_found = set()输出地雷所在位置的基于文本的表示def print(self):for i in range(self.height): print(- * self.width + -) for j in range(self.width): if self.boardij: pr

      3、int(|X, end=) else: print(| , end=) print(|) print(- * self.width + -)def is_mine(self, cell): i, j = cell return self.boardijdef nearby_mines(self, cell):返回给定单元格的一行和一列内的地雷数,不包括单元格本身。def nearby_mines(self, cell): # 保持附近地雷的数量 count = 0 # 遍历一行和一列内的所有单元格 for i in range(cell0 - 1, cell0 + 2): for j in range(cell1 - 1, cell1 + 2): # 忽略单元格本身 if (i, j) = cell: continue # 如果单元格在边界内并且是地雷,则更新计数 if 0 = i self.height and 0 = j self.width: if self.boardij: count += 1 return count检查是否已标记所有地雷。def won(self): re

      4、turn self.mines_found = self.mines关于扫雷游戏的逻辑语句一个句子由一组棋盘单元和这些单元格的数量组成。class Sentence(): def _init_(self, cells, count): self.cells = set(cells) self.count = count def _eq_(self, other): return self.cells = other.cells and self.count = other.count def _str_(self): return fself.cells = self.count def known_mines(self):返回 self.cells 中已知为地雷的所有单元格的集合。def known_mines(self): if len(self.cells) = self.count: return self.cells返回 self.cells 中已知安全的所有单元格的集合。def known_safes(self): if self.count = 0: return sel

      5、f.cells鉴于已知单元格是地雷,更新内部知识表示。def mark_mine(self, cell): if cell in self.cells: self.cells.discard(cell) self.count -= 1鉴于已知单元格是安全的,更新内部知识表示。def mark_safe(self, cell): if cell in self.cells: self.cells.discard(cell)扫雷游戏玩家class MinesweeperAI(): def _init_(self, height=8, width=8): # 设置初始高度和宽度 self.height = height self.width = width # 跟踪点击了哪些单元格 self.moves_made = set() # 跟踪已知安全或地雷的细胞 self.mines = set() self.safes = set() # 关于已知为真游戏的句子列表 self.knowledge = 将一个单元格标记为地雷,并更新所有知识以将该单元格也标记为地雷。def mark_mine(s

      6、elf, cell): self.mines.add(cell) for sentence in self.knowledge: sentence.mark_mine(cell)将一个单元格标记为安全,并更新所有知识以将该单元格也标记为安全。def mark_safe(self, cell): self.safes.add(cell) for sentence in self.knowledge: sentence.mark_safe(cell)用于获取所有附近的单元格def nearby_cells(self, cell): cells = set() for i in range(cell0 - 1, cell0 + 2): for j in range(cell1 - 1, cell1 + 2): if (i, j) = cell: continue if 0 = i self.height and 0 = j self.width: cells.add(i, j) return cells当扫雷板告诉我们,对于给定的安全单元,有多少相邻单元中有地雷时调用。这个功能应该:1)将单

      7、元格标记为已进行的移动2)将单元格标记为安全3)根据 cell 和 count 的值在 AI 的知识库中添加一个新句子4)如果可以根据 AI 的知识库得出结论,则将任何其他单元格标记为安全或地雷5) 如果可以从现有知识中推断出任何新句子,则将其添加到 AI 的知识库中def add_knowledge(self, cell, count): self.moves_made.add(cell) # 标记单元格安全 if cell not in self.safes: self.mark_safe(cell) # 获取所有附近的单元格 nearby = self.nearby_cells(cell) nearby -= self.safes | self.moves_made new_sentence = Sentence(nearby, count) self.knowledge.append(new_sentence) new_safes = set() new_mines = set() for sentence in self.knowledge: if len(sentence.cells) = 0: self.knowledge.remove(sentence) else:

      《使用python制作的单人AI扫雷游戏全解析》由会员Baige****0346分享,可在线阅读,更多相关《使用python制作的单人AI扫雷游戏全解析》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.