刚接触棋类游戏程序编写的朋友,往往比较迷惑,不知从何下手。

本文总结了棋类游戏的主程序流程、计算机走子策略、打分方式(以井字棋、黑白棋、五子棋为例),未使用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棋类游戏编写入门的更多相关文章

  1. Python游戏编程入门

    <Python游戏编程入门>这些文章负责整理在这本书中的知识点.注意事项和课后习题的尝试实现.并且对每一个章节给出的最终实例进行分析和注释. 初识pygame:pie游戏pygame游戏库 ...

  2. Python编程:从入门到实践(选记)

    本文参考< Python 编程:从入门到实践>一书,作者: [ 美 ] Eric Matthes 第1章 起步 1.1     搭建python环境 在不同的操作系统中, Python 存 ...

  3. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  4. Python简介和基础入门

    1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是一种开发语言,而且已经 ...

  5. Python编程:从入门到项目实践高清版附PDF百度网盘免费下载|Python入门编程免费领取

    百度网盘:Python编程:从入门到项目实践高清版附PDF免费下载 提取码:oh2g   第一部分 基础知识第1章 起步 21.1 搭建编程环境 21.1.1 Python 2和Python 3 21 ...

  6. 小白的 Python 修炼手册:入门篇

    Life is short, you need Python.(人生苦短,我用 Python.) --Bruce Eckel 前言 听说现在是全民 Python 的时代,虽然不知道事实如何,但学会 P ...

  7. Python黑客编程2 入门demo--zip暴力破解

    Python黑客编程2 入门demo--zip暴力破解 上一篇文章,我们在Kali Linux中搭建了基本的Python开发环境,本篇文章为了拉近Python和大家的距离,我们写一个暴力破解zip包密 ...

  8. Python 小游戏 Bunny

    最近在学习Python,所以上网找了一个小程序练练手. 关于这款名为[Bunny]的小游戏,详细请看下面的链接: http://www.oschina.net/translate/beginning- ...

  9. PC游戏编程(入门篇)(前言写的很不错)

    PC游戏编程(入门篇) 第一章 基石 1. 1 BOSS登场--GAF简介 第二章 2D图形程式初体验 2.l 饮水思源--第一个"游戏"程式 2.2 知其所以然一一2D图形学基础 ...

随机推荐

  1. js,H5本地存储

    //存储本地存储----setItem(存储名称,数据名称) var c={name:"man",sex:"woman"}; localStorage.setI ...

  2. TCP连接之报文首部

    在面试时,会经常被问到TCP报文的一些细节,可以说TCP报文是不少企业用来考察面试者对网络的掌握程度的一道题目. TCP连接作为网络传输的一个环节,是不可或缺的一部分.例如,OSI七层模型的应用层HT ...

  3. 第三方apk内置因签名导致SystemUI未启动启动问题案例分析

    这个问题是刷完机正常开机后,发现手机无状态栏,下拉通知栏,按音量键也无法出现VolumeDialog,开始看到这个现象感觉是systemUI未编译到版本中去?或者是在systemserver中syst ...

  4. MySQL写入用户微信名

    很简单的需求,将用户微信名写入MySQl即可,但是测试过程中却遇到了问题,微信名中的emoji写入数据库失败.解决步骤如下 1.了解utf8mb4 MySQL从5.5.3版本开始支持utf8mb4编码 ...

  5. [20171128]rman Input or output Memory Buffers.txt

    [20171128]rman Input or output Memory Buffers.txt --//做一个简单测试rman 的Input or output Memory Buffers. 1 ...

  6. 05-sudo权限配置

    阅读目录 基础环境准备 服务端配置 客户端配置 客户端验证 附:sudo常见属性介绍 常见错误分析 1. 基础环境准备 本文接文章openldap服务端安装配置 2. 服务端配置 导入sudo sch ...

  7. node.js 基础学习

    node.js 是一个 javaScript 运行环境,可以让 js 运行在服务端. 在 nodejs 环境下,可以运行 javascript 基本语法,可以在nodejs 中执行一些无法在浏览器端执 ...

  8. REPLACE函数的使用方法

    Replace函数的含义~ 用新字符串替换旧字符串,而且替换的位置和数量都是指定的. replace函数的语法格式 =Replace(old_text,start_num,num_chars,new_ ...

  9. hubilder打包+C#服务端个推服务实现

    关于推送鼓捣了好长时间,这里不再写helloworld了,只讲里面遇到的问题. 1.关于苹果开发者平台上的注册 网上很多的教程,只要按照步骤来设置就行了,在 iOS证书(.p12)和描述文件(.mob ...

  10. Web自动化

    # -*- coding:utf-8 -*- ''' Created on Oct 17, 2018 @author: SaShuangYiBing Comment: ''' from seleniu ...