用python实现五子棋简单人机模式的练习过程,供大家参考,具体内容如下
第一次写博客,我尽力把它写好。
最近在初学python,今天就用自己的一些粗浅理解,来记录一下这几天的python简单人机五子棋游戏的练习,下面是实现过程的理解(是在cmd中运行的):
主要流程: 重点内容
-
首先是模块及类的划分
-
棋子类和棋盘类的方法
-
对策略类里的功能进行细分,调用棋子类和棋盘类
-
写出判断输赢的方法
-
用main函数进行整个游戏进度的控制
模块及类的划分
类的划分涉及到了面向对象的内容,根据五子棋游戏的设定,人和机器依次在一个棋盘里下棋,一方五子连线为赢,初步分为棋子类、棋盘类和策略类,每个类单独放一个模块,加上main模块一共四个模块。
棋子类包含棋子的坐标和棋子颜色(阵营),及相关get、set方法
棋盘类包含了棋盘的大小和棋盘的状态 ,及相关get、set方法
棋盘类的功能:接收要放入的棋子,清空棋盘,打印(显示)棋盘,给出对应位置的状态
策略类:一个策略类对应一个棋盘类,在构造器里导入一个棋盘类
策略类的功能:人把棋子放入棋盘、机器把棋子放入棋盘、判断棋局的输赢
棋子类和棋盘类
棋子类比较简单,在棋子的角度,只要接收位置和颜色(阵营),传出位置和颜色(阵营)即可,其中位置用元组打包传递
class Chessman(object):
#初始化
def init(self):
pass
def set_pos(self,pos):
self.pos = pos
def get_pos(self):
return self.pos
def set_color(self,color):
self.color = color
def get_color(self):
return self.color
棋盘类需要用到棋子类,在这之前,先要进行棋盘的设定
在这里棋盘是用列表来构建,分为两层,实现x,y的位置,棋盘大小设为类属性
#类属性
board_size =15
#初始化棋盘
def init(self):
self.__board = [[0 for i in range(0,Chessboard.board_size+1)] for j in range(0,Chessboard.board_size+1)]
清空棋盘类似
#清空棋盘,‘+'为棋盘的样子
def init_board(self):
#忽略第0行
for i in range(1,Chessboard.board_size+1):
for j in range(1,Chessboard.board_size+1):
self.__board[i][j] = ‘+’
打印也差不多,注意在坐标轴旁放上序列号,这里纵坐标为1-15,横坐标为a-o
打印棋盘
def print_board(self):
#打印列号
print(’ ‘, end&