Python游戏设计案例实战第9章-游戏实战篇-人机对战井字棋游戏.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Python游戏设计案例实战第9章-游戏实战篇-人机对战井字棋游戏.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 游戏 设计 案例 实战 人机 战井字棋
- 资源描述:
-
1、第第9章章 人机对战井字棋游戏人机对战井字棋游戏主讲主讲 夏敏捷夏敏捷计算机学院副教授计算机学院副教授9.1 人机对战井字棋游戏功能人机对战井字棋游戏。在九宫方格内进行,如果一方首先某方向(横、竖、斜)连成3子,则获取胜利。游戏中输入方格位置代号,形式如下:游戏中,board棋盘存储玩家、电脑落子信息,未落子处为EMPTY。由于人机对战,需要实现电脑智能性,下面是为这个电脑机器人设计的简单策略:(1)如果有一步棋可以让电脑机器人在本轮获胜,就选那一步走。(2)否则,如果有一步棋可以让玩家在本轮获胜,就选那一步走。(3)否则,电脑机器人应该选择最佳空位置来走。最佳位置就是中间那个,第二好位置是四
2、个角,剩下的就都算第三好的了。9.2 人机对战井字棋游戏设计思想9.3 对战井字棋游戏设计步骤1 1确定谁先走确定谁先走#询问玩家你是否先走def ask_yes_no(question):response=None while response not in(y,n):#如果输入不是y,n,继续重新输入 response=input(question).lower()return response#询问谁先走,先走方为X,后走方为O#函数返回电脑方、玩家的角色代号def pieces():go_first=ask_yes_no(玩家你是否先走(y/n):)if go_first=y:prin
3、t(n玩家你先走.)human=X computer=O else:print(n电脑先走.)computer=X human=O return computer,human9.3 对战井字棋游戏设计步骤2 2产生新的保存走棋信息列表和显示棋盘产生新的保存走棋信息列表和显示棋盘#产生保存走棋信息列表boarddef new_board():board=for square in range(9):board.append(EMPTY)return board#显示棋盘def display_board(board):board2=board:#创建副本,修改不影响原来列表board for i
4、 in range(len(board):if boardi=EMPTY:board2i=i print(t,board20,|,board21,|,board22)print(t,-)print(t,board23,|,board24,|,board25)print(t,-)print(t,board26,|,board27,|,board28,n)9.3 对战井字棋游戏设计步骤3 3产生可以合法走棋位置序列产生可以合法走棋位置序列#产生可以合法走棋位置序列(也就是还未下过子位置)def legal_moves(board):moves=for square in range(9):if b
5、oardsquare=EMPTY:moves.append(square)return moves9.3 对战井字棋游戏设计步骤4 4玩家走棋玩家走棋def human_move(board,human):#人走棋 legal=legal_moves(board)move=None while move not in legal:move=ask_number(你走那个位置?(0-8):,0,9)if move not in legal:print(n此位置已经落过子了)#print(Fine.)return move#输入位置数字def ask_number(question,low,hig
展开阅读全文