python棋类程序_python棋类游戏编写入门
刚接触棋类游戏程序编写的朋友,往往比较迷惑,不知从何下手。
本文总结了棋类游戏的主程序流程、计算机走子策略、打分方式(以井字棋、黑白棋、五子棋为例),未使用minimax算法,比较简单,适合刚接触的朋友。特记录如下:
作者:hhh5460
本文地址:https://www.cnblogs.com/hhh5460/p/10114236.html
一、主程序流程
所有双人对战棋类游戏在人机模式下的主程序流程几乎雷同。
流程:
1.初始化棋盘
2.确定玩家,执黑先走
3.进入循环
4.打印棋盘、提示走子、(显示得分?)
5.思考走法、放弃终止
6.落子、(吃子?、翻棋?)
7.判断局面、是否终止、(是否轮换?)
8.切换棋手
9.游戏结束,返回信息
二、计算机走子策略
1.对所有合法的走子位置“打分”
2.取分值最高的走子位置
3.再取行最小的,若行相等,再取列最小的
三、“打分”方式
注意:同一个点位,双方的棋型分都要加上!!
1.井字棋
棋型分值:
三连 100
活二 10
活一 1
2.黑白棋
翻了对方棋子的数目、或者翻了对方棋子的权重之和
3.五子棋
棋型分值:
0.活五 +100000
1.死五 +100000
2.活四 +10000
3.死四 +1000
4.活三 +1000
5.死三 +100
6.活二 +100
7.死二 +10
8.活一 +10
9.死一 +2
特别说明:
10.跳连 两边棋型分相加 + 上一级分值的20% ?商榷
四、确定棋型
方法是,从当前落子位置向周围八个方向搜索。
注意,黑白棋八个方向是独立考虑的,而井字棋与五子棋八个方向的相反方向要放在一起考虑。
五、棋力分析
这种按照最高得分走棋的策略,就是我们下棋时常说的:贪吃,即贪婪模式。棋力不会太高,属于入门水平
六、代码
(未公布)
python棋类程序_python棋类游戏编写入门相关推荐
- python 单机程序_Python tkinter制作单机五子棋游戏
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于Python家庭,作者Python家庭 实战项目:使用Python ...
- python游戏设计_python小游戏设计入门1-了解游戏
从小到大玩过很多的游戏,在我小时候,能玩游戏的地方不多,那时玩游戏都是偷摸玩的,只要是个游戏就觉得非常有趣,比较经典的有魂斗罗,拳皇,超级玛丽,贪吃蛇,俄罗斯方块等游戏:发展到现在,玩游戏已经成为生活 ...
- python 重启程序_python重启程序
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! # 重启程序 def restart_program():print(重启... ...
- 人工智能python小程序_Python:一个可以套路别人的python小程序
一个可以套路别人的python小程序~ 先简要介绍一下程序. 程序是使用pycharm工具,python语言所写.程序包括客户端 client.py 和服务器端 server.py 两部分,利用了py ...
- python游戏程序中游戏对象是什么_Python写游戏: PyGame入门(上)
Python部落(www.freelycode.com)组织翻译, 禁止转载 PyGame是一个用Python写的SDL库.SDL是一个能访问计算机多媒体硬件组件(包括声卡,视频卡,输入组件等)的跨平 ...
- python源文件改写_Python源文件改写.编写一个程序,读取一个Python源程序,将文件中所有除保留字外的小写字母换成大写字母...
程序代码如下: importkeyword. s=keyword.kwlist. #建立保留字列表. n=input("输入一个文件名:"). f=open(n,"r&q ...
- 温度转换的python程序_Python通过小实例入门学习---1.0(温度转换)
1.安装Python 3 下载地址: Welcome to Python.orgwww.python.org 2."温度转换"实例:摄氏度--->华氏度 / 华氏度---& ...
- python抽奖程序_Python编写抽奖式随机提问程序
本文主要思路:使用tkinter编写界面,使用3个Label组件和多线程技术实现学生名单的滚动显示. import tkinter import tkinter.messagebox import r ...
- python汇率程序_Python入门案例(一):汇率兑换
一.汇率兑换V1.0 主要知识点:注释:说明信息,是不被执行的,单行注释用#,多行注释用三个单引号 命名:命名只能使用字母.数字和下划线:且须保证命名的唯一性:且不能以数字开头,Python是区分字母 ...
最新文章
- 使用GDI+缩放图片文件
- 区块链BaaS云服务(28)TOP Network 区块链平台
- java程序的最小程序单位_微信小程序中rpx与rem单位使用
- 误删了公司数据库,但我还是活下来了
- 实战HCNA1:华为设备快速记忆生成树的角色及选举规则,实施基本的VLAN间路由和基础的VRRP协议...
- 怎么看端口有没有被占用?Win11查看端口是否占用的方法
- 问题十:【总结】解决了问题四~问题九,vec3这个类的代码应该都能看懂了
- Django 输出二维码
- 让海底电缆给数据中心提供更快的直连
- word大括号中公式左对齐
- 24.FFmpeg学习笔记 - 用libavfilter转换原始音频格式1
- 罗永浩曾想自杀,戴威债务缠身仍不认输......这是无数创业者的生存现状
- 阿里云数据迁移工具解决方案:腾讯云迁移到阿里云
- 机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据
- 51单片机 八音盒设计
- 漫画 | 连绿巨人都想要了解的Greenplum
- Spring IOC详解 以及 Bean生命周期详细过程 可以硬刚面试官的文章
- Flutter vs Native用于移动开发
- 直线内插法的图怎么用计算机画,直线内插法(设计费).pdf
- Steam教育对国内大学生的影响力
热门文章
- Pytest装饰器@pytest.mark.parametrize一键生成接口正交试验用例
- 【资讯】2017年最好的25大发明,你最钟爱哪个?
- 制作github博客
- 设备树中#address-cells和#size-cells作用
- Hadoop Mapreduce 调优
- 如何在命令长度受限的情况下成功get到webshell(函数参数受限突破、mysql的骚操作)...
- CentOS7 升级Python2.x到3.x
- Gridiew——表的内容居中
- elipse+pydev+python开发arcgis脚本程序
- 扬长避短使用Windbg和Visual Studio高效调试调试你的代码