本文实例为大家分享了python实现五子棋小程序的具体代码,供大家参考,具体内容如下

一、结合书上例子,分三段编写:

wuziqi.py

#coding:utf-8

from win_notwin import *

from show_qipan import *

maxx=10 #10行10列

maxy=10

qipan=[[0,0,0,0,1,0,0,2,0,0],[0,1,2,1,1,0,2,0,0,0],[0,0,0,0,1,1,0,2,0,0],[0,0,0,0,2,0,0,1,0,0],

[0,0,0,1,1,1,2,0,0,0],[0,0,0,2,0,0,0,2,0,0],[0,0,1,2,0,2,2,0,1,0],[0,0,0,2,0,0,0,1,0,0],[0,0,0,0,0,0,1,1,0,0],

[0,0,0,0,0,0,0,0,0,0]]

sqipan(qipan) #显示初始化的棋盘

who=True

while True:

t=input("请输入棋子的位置(x,y),现在由"+("O" if who else "X")+"方下子:").split(",")

#输入坐标

if len(t)==2:

x=int(t[0])

y=int(t[1])

if qipan[x][y]==0:

qipan[x][y]=1 if who else 2

who=not who

sqipan(qipan) #显示当前棋盘

win_not(qipan,x,y) #判断有没有人赢

else:

print("当前位置已有棋子,请重新下子")

else :

print("输入位置有误,请输入要下的位置,如1,1")

show_qipan.py

def sqipan(qipan):

maxx=10

maxy=10

print(" O 一 二 三 四 五 六 七 八 九")

for i in range(maxx):

print(i, " ", end="")

for j in range(maxy):

if qipan[i][j] == 0:

print("+", " ", end="") # 无棋子

elif qipan[i][j] == 1:

print("O", " ", end="") # 白色

elif qipan[i][j] == 2:

print("X", " ", end="") # 黑色

print("\n")

win_notwin.py

def win_not(qipan,x,y):

maxx=10

maxy=10

flag=qipan[x][y]

xPoint = x

yPoint = y

# 横向

count = 0

# x=xPoint

# y=yPoint

while (x >= 0 and flag == qipan[x][y]): # 向左统计连续棋子数

count += 1

x -= 1

x = xPoint

y = yPoint

while (x >= 0 and flag == qipan[x][y]):

count += 1

x += 1

if (count > 5): print("纵向五子棋相连,胜利!")

count = 0

x = xPoint

y = yPoint

while (y >= 0 and flag == qipan[x][y]):

count += 1

y -= 1

y = yPoint

while (y <= maxy and flag == qipan[x][y]):

count += 1

y += 1

if (count > 5): print("横向五子相连,胜利")

# 斜向

# 左下

count = 0

x = xPoint

y = yPoint

while (x >= 0 and y < maxy and flag == qipan[x][y]):

count += 1

x -= 1

y += 1

x = xPoint

y = yPoint

# 右上

while (x < maxx and y >= 0 and flag == qipan[x][y]):

count += 1

x += 1

y -= 1

if (count > 5): print("斜向五子棋相连,胜利")

# 斜上

count = 0

x = xPoint

y = yPoint

# 左上

while (x >= 0 and y >= 0 and flag == qipan[x][y]):

count += 1

x -= 1

y -= 1

x = xPoint

y = yPoint

while (x < maxx and y < maxy and flag == qipan[x][y]):

count += 1

x += 1

y += 1

if (count > 5):

print("斜向五子相连,胜利")

二、下面的代码没有验证

#coding:utf-8

import os

import pdb

import pickle

class Player(object):

number=0

def __init__(self,name=''):

"""

玩家类构造方法

"""

if not name:

Player.number+=1

name='Player%d'% Player.number

self.name=name

def play(self):

"""

玩家输入下一步落子位置

"""

t=input('Please input(x,y),now is'+self.name+':')

return t

#棋盘类

class Board(object):

class Status(object):

"""

状态量,提供转态常量

"""

NONE=0

WHITE=1

BLACK=2

def __init__(self,maxx=10,maxy=10):

"""

棋盘类构造方法 确定尺寸,以及创建棋盘成员对象

"""

self.maxx,self.maxy=maxx,maxy

self.qipan=[[0]*maxy for i in range(maxx)]

def hasChaessman(self,xPoint,yPoint):

"""

判断是否有棋子存在

"""

return self.qipan[xPoint][yPoint]!=Board.Status.NONE

def downPawn(self,xPoint,yPoint,who):

"""

玩家在某个位置落子

"""

if self.hasChaessman(xPoint,yPoint):

return False

else:

self.qipan[xPoint][yPoint]=Board.Status.WHITE if who else Board.Status.BLACK

return True

def inRange(self,xPoint,yPoint):

"""

玩家在某个位置落子

"""

return xPoint

yPoint

xPoint>=0 and\

yPoint>=0

def checkFiveInRow(self,xPoint,yPoint,xDir,yDir):

"""

判断以(xpoint,ypoiny)点(xDir,yDir)方向上是否五子连珠

"""

count = 0

t=self.qipan[xPoint][yPoint]

x,y=xPoint,yPoint

while (self.inRange(x,y) and t==self.qipan[x][y]):

count += 1

x+=yDir

y+=yDir

x, y = xPoint, yPoint

while (self.inRange(x, y) and t == self.qipan[x][y]):

count += 1

x -= yDir

y -= yDir

return count>5

def isWin(self,xPoint,yPoint):

"""

以(xpoint,ypoiny)点为中心在四个方向分别判断五子连珠

"""

pdb.set_trace()#####################

return self.checkFiveInRow(xPoint,yPoint,1,0) or \

self.checkFiveInRow(xPoint, yPoint, 0,1) or \

self.checkFiveInRow(xPoint, yPoint, 1,1) or \

self.checkFiveInRow(xPoint, yPoint, 1,-1)

def printQp(self):

"""

打印棋盘

"""

qiType=["十","O","X"]

print(' O 一 二 三 四 五 六 七 八 九')

for i in range(self.maxx):

print(i," ",end='')

print(' '.join(qiType[x] for x in self.qipan[i]))

#文件存读档类

class FileStatus(object):

def save(self):

"""

存档方法

"""

fpath=input("请输入保持文件的路径:")

file=open(fpath,'w')

pickle.dump(self,file)

file.close()

def load(self):

"""

读档方法

"""

pass

#游戏类

class GoBang(FileStatus):

def __init__(self,qipan,white,black):

"""

游戏类构造方法

创建成员变量

"""

self.qipan=qipan

self.white=white

self.black=black

self.who=True

def start(self):

"""

游戏主流方法

"""

os.system('cls')

self.printQp()

while True:

t=(self.white if self.who else self.black).play()

if t=='S':

self.save()

continue

if t=='L':

self.load()

continue

t.split(',')

if len(t)==2:

x,y=int(t[0]).int(t[1])

if self.qipan.downPawn(x,y,self.who):

os.system('cls')

self.printQp()

if self.qipan.isWin(x,y):#判断游戏是否结束

print(self.white.name if\

self.who else self.black.name)+'Win'

break

self.who=not self.who #切换游戏角色

os.system('pause')

def load(self):

"""

重写读档方法

"""

fpath=input("请输入读取文件的路径")

file=open(fpath,'r')

status=pickle.load(file)

file.close()

#读档 拷贝

self.qipan=status.qipan

self.white=status.white

self.black=status.black

self.who=status.who

os.system('cls')

self.printQp()

def printQp(self):

"""

打印

"""

self.qipan.printQp()

print("按L读取,S保存")

if __name__=='__main__':

t=GoBang(Board(),Player(),Player())

t.start()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python五子棋程序教程_python实现五子棋小程序相关推荐

  1. 小程序教程1:初识小程序,快速搭建一个小程序项目

    前言: 打算整理一个小程序系列的资料.如何快速搭建一个小程序项目,以及一个小程序项目应该有哪些内容. 相关资料: 微信公众平台微信公众平台,给个人.企业和组织提供业务服务与用户管理能力的全新服务平台. ...

  2. python抽奖简单小程序游戏_python实现抽奖小程序

    本文实例为大家分享了python实现抽奖小程序的具体代码,供大家参考,具体内容如下 设计一个抽奖服务 背景:有x个奖品,要求在y天内发完:每天至少发放z个奖品:每天抽奖人数不定,事先会假设一个范围是m ...

  3. python微信小程序抢购_Python实现微信小程序支付功能!Python确实强的一批!

    正文 由于最近自己在做小程序的支付,就在这里简单介绍一下讲一下用python做小程序支付这个流程.当然在进行开发之前还是建议读一下具体的流程,清楚支付的过程. 1.支付交互流程 2.获取openid( ...

  4. python微信语音转发_python实现微信小程序自动回复

    本文是使用Python的itchat模块进行微信私聊消息以及群消息的自动回复功能,必须在自己的微信中添加微信号xiaoice-ms(微软的微信机器人)才能实现,直接复制代码运行之后扫一扫二维码即可,经 ...

  5. python设计答题软件_python开发答题小程序

    线下线上整合:小程序的重要入口在线下,帮助商户将线下庞大的用户引流至线上,营造更多O2O场景,且小程序无需下载安装,用户喜欢用. 在选定后微信开发第三方服务商后,一般是由企业提出需求,微信开发公司根据 ...

  6. 微信小程序教程:注册微信小程序的操作步骤

    为你们推出关于小程序这个项目 今天我们将来说一下关于小程序的一个内容: 在我们做小程序项目的时候,我们需要先做什么准备工作呢? 我们首先需要注册一个小程序,注册网址:mp.weixin.qq.com( ...

  7. python五子棋程序教程_python实现五子棋游戏

    本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下 话不多说,直接上代码: 全部工程文件,在GitHub:五子棋 效果预览: #!/usr/bin/env python ...

  8. python加油代码_python入门教程NO.5 用python写个自动选择加油站的小程序

    本文涉及的python基础语法为:if条件分支 Python条件分支是通过一条或者多条语句的执行结果True或者False来决定是否执行相应的代码块. if单向条件语法结构 if 判断条件: 代码块 ...

  9. 视频教程-微信小程序系统教程python版[3/3阶段]_微信小程序支付-手游开发

    微信小程序系统教程python版[3/3阶段]_微信小程序支付 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试 ...

最新文章

  1. 时讯无线为你提供快速的上网设备
  2. What Does TTY Stand for in Linux?
  3. 购买过php,【已解决】PHP项目需求:用户购买商品时,给上级发送一条通知(无限级下级会员)...
  4. Java 常用类库 之 Arrays 数组操作类
  5. 深入研究 Java Synchronize 和 Lock 的区别与用法
  6. 使用 ServiceStack 构建跨平台 Web 服务(转)
  7. Jsp之我遇到过的中文乱码问题和解决方法
  8. stringbuilder_string和stringBuilder的区别
  9. QString转Char*字符串
  10. react typescript 父组件调用子组件
  11. read, readline, readlines
  12. spark成长之路(1)spark究竟是什么?
  13. 六石管理学:座位可以考虑混排
  14. 超级灰色按钮克星更新v1.3.1112.40
  15. LabVIEW以太网仪器控制
  16. 愿岁月流成花海,你我结伴而行
  17. Approaching ANXIETY DISORDER
  18. flask自定义过滤器,flash,form表单
  19. c语言坐标画折线,如何用C语言画折线图
  20. B站弹幕姬,弹幕礼物感谢,关注感谢,自动回复,房管工具,房管助手,基于java

热门文章

  1. 中秋国庆旅游 App 市场竞争激烈!工具类 App 更易被苹果推荐!
  2. [移动] Mosquitto简要教程(安装/使用/测试)
  3. 编程中的逻辑实现,三种逻辑结构(顺序、循环、分支)、跳转、函数以及错误处理
  4. Accept和Content-type的意思
  5. 隐马尔科夫模型java实现
  6. 在CMD上运行javac前应该这样做
  7. 【济州岛新任市长支持优秀ICO项目】
  8. 通过gitlab的webhook进行项目的自动部署所遇问题总结
  9. 量子通信,究竟是怎样保障信息安全的?
  10. HSV色彩空间筛选 2021-10-06