python控制台简单实现五子棋
#棋盘
#落子
#规则
import random
class chess:
def __init__(self):
print('#---------------棋盘----------------#')
self.grid = []
self.si = []
for i in range(8):
self.grid.append([' □ ']*8)
for j in range(8):
print(''.join(self.grid[j]),'\n') #''.join(grid[j])) def getPos(self,x,y):
print('#----------------落子----------------#')
self.x = x
self.y = y
if self.grid[self.x][self.y]== ' ○ ' or self.grid[self.x][self.y]== ' ● ': # 判断棋子是否重复
print('\t\t\t棋子有重复')
else:
self.l = 0
self.grid[self.x][self.y] = ' ● '
if self.x==7 or self.y==0 :
self.grid[random.randint(self.x-2,self.x-1)][random.randint(self.y-2,self.y-1)] = ' ○ '
else: self.grid[self.x][self.y] = ' ● '
self.grid[self.x + 1][ self.y + 1] =' ○ '
self.si.append([self.x, self.y])
for i in range(len(self.si)):
if self.si[i-1][0] == self.si[i][0] or self.si[i-1][1] == self.si[i][1] or self.si[i][1]==self.si[i][0] and self.si[i-1][1]==self.si[i-1][0] and (self.grid[self.x-1][self.y] != ' □ ' or self.grid[self.x+1][self.y+1] != ' □ '
or self.grid[self.x-1][self.y-1] != ' □ '
or self.grid[self.x+1][self.y] != ' □ '
or self.grid[self.x-1][self.y] != ' □ '
or self.grid[self.x][self.y-1] != ' □ ' or self.grid[self.x][self.y+1] != ' □ '
or self.grid[self.x][self.y-1] != ' □ '): # 判断玩家是否排成一条线
self.l += 1
for j in range(8):
print(''.join(self.grid[j])+'\n') #''.join(grid[j])) def rulers(self):
recode = []
recode.append([self.x,self.y])
print(self.si) for i in range(len(recode)):
for j in range(len(recode[i])):
if self.l==5: # 标记,当为5时结束游戏
print('游戏结束')
print('玩家胜利')
self.t = False
return self.t
elif len(self.si)>6: # 判断平局,因为条件简单,所以不会出现电脑赢的情况
print('游戏结束')
print('平局')
self.t = False
return self.t
else:
self.t = True
return self.t play = chess()
t = True
while t: # 循环实现棋盘出现
x,y = input("\t请输入x,y坐标用','分割:\n").split(',')
play.getPos(int(x),int(y))
t = play.rulers()
这只是简单练习
小白一枚,AI训练方式还未学习,后面会持续出更
继续努力
python控制台简单实现五子棋的更多相关文章
- Python 实现简单的 Web
简单的学了下Python, 然后用Python实现简单的Web. 因为正在学习计算机网络,所以通过编程来加强自己对于Http协议和Web服务器的理解,也理解下如何实现Web服务请求.响应.错误处理以及 ...
- 用 python实现简单EXCEL数据统计
任务: 用python时间简单的统计任务-统计男性和女性分别有多少人. 用到的物料:xlrd 它的作用-读取excel表数据 代码: import xlrd workbook = xlrd.open_ ...
- python开启简单webserver
python开启简单webserver linux下面使用 python -m SimpleHTTPServer 8000 windows下面使用上面的命令会报错,Python.Exe: No Mod ...
- Python开发简单爬虫 - 慕课网
课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序 课程目录 第1章 课程介绍 ...
- python使用简单http协议来传送文件
python使用简单http协议来传送文件!在ubuntu环境下,局域网内可以使用nc来传送文件,也可以使用基于Http协议的方式来下载文件我们可以使用python -m SimpleHTTPServ ...
- Python超简单的HTTP服务器
Python超简单的HTTP服务器 安装了python就可以 python -m SimpleHTTPServer 执行这一个命令即可实现一个HTTP服务器,将当前目录设为HTTP服务目录,可以通过h ...
- 教学项目之-通过Python实现简单的计算器
教学项目之-通过Python实现简单的计算器 计算器开发需求 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/ ...
- python多线程简单例子
python多线程简单例子 作者:vpoet mail:vpoet_sir@163.com import thread def childthread(threadid): print "I ...
- python实现简单的循环购物车小功能
python实现简单的循环购物车小功能 # -*- coding: utf-8 -*- __author__ = 'hujianli' shopping = [ ("iphone6s&quo ...
随机推荐
- 【Java例题】4.4使用牛顿迭代法求方程的解
4. 使用牛顿迭代法求方程的解:x^3-2x-5=0区间为[2,3]这里的"^"表示乘方. package chapter4; public class demo4 { publi ...
- 浅谈微服务架构与服务治理的Eureka和Dubbo
前言 本来计划周五+周末三天自驾游,谁知人算不如天算,周六恰逢台风来袭,湖州附近的景点全部关停,不得已只能周五玩完之后,于周六踩着台风的边缘逃回上海.周末过得如此艰难,这次就聊点务虚的话题,一是浅谈微 ...
- java并发编程(十一)----(JUC原子类)基本类型介绍
上一节我们说到了基本原子类的简单介绍,这一节我们先来看一下基本类型: AtomicInteger, AtomicLong, AtomicBoolean.AtomicInteger和AtomicLong ...
- 大厂面试Kafka,一定会问到的幂等性
01 幂等性如此重要 Kafka作为分布式MQ,大量用于分布式系统中,如消息推送系统.业务平台系统(如结算平台),就拿结算来说,业务方作为上游把数据打到结算平台,如果一份数据被计算.处理了多次,产生的 ...
- mybatis的一对多双向映射
连表查询 select id resultType resultMap resultType和resultMap不能同时使用 association 属性 映射到多对一中的“一”方的“复杂类型”属性, ...
- RocketMQ中PullConsumer的启动源码分析
通过DefaultMQPullConsumer作为默认实现,这里的启动过程和Producer很相似,但相比复杂一些 [RocketMQ中Producer的启动源码分析] DefaultMQPullCo ...
- 算法与数据结构基础 - 双指针(Two Pointers)
双指针基础 双指针(Two Pointers)是面对数组.链表结构的一种处理技巧.这里“指针”是泛指,不但包括通常意义上的指针,还包括索引.迭代器等可用于遍历的游标. 同方向指针 设定两个指针.从头往 ...
- RSA加密的java实现2(交互IOS)
这里的base64的依赖不一样,一个是apache,一个是sun的 ,由于base64的依赖不同,导致在IOS中解析不了! package com.handsight.platform.cipher ...
- 关于 MySQL查询当天、本周,本月,上一个月的数据
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...
- activemq的下载与安装
一.介绍 Apache ActiveMQ™是最流行的开源,多协议,基于Java的消息服务器.它支持行业标准协议,因此用户可以通过广泛的语言和平台获得客户选择的好处.可以使用C,C ++,Python, ...