编写五子棋的完整python代码_python实现五子棋游戏
本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下
话不多说,直接上代码:
全部工程文件,在GitHub:五子棋
效果预览:
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
import pygame
from pygame.locals import *
from sys import exit
import numpy
background_image = 'qipan.png'
white_image = 'white.png'
black_image = 'black.png'
def WhoWin(x,y,darray):
num1,num2,num3,num4 = 0,0,0,0
#判断上下左右左上右上左下右下8个方向
i = x-1
while(i>=0):
if darray[i][y] == 1:
num1+=1
i -= 1
else:
break
i = x+1
while i= 0):
if darray[x][j] == 1:
num2 += 1
j -= 1
else:
break
j = y + 1
while j < 19:
if darray[x][j] == 1:
num2 += 1
j += 1
else:
break
i,j = x-1,y-1
while(i>=0 and j>=0):
if darray[i][j] == 1:
num3 += 1
i -= 1
j -= 1
else :
break
i, j = x + 1, y + 1
while (i < 19 and j < 19):
if darray[i][j] == 1:
num3 += 1
i += 1
j += 1
else:
break
i, j = x + 1, y - 1
while (i >= 0 and j >= 0):
if darray[i][j] == 1:
num4 += 1
i += 1
j -= 1
else:
break
i, j = x - 1, y + 1
while (i < 19 and j < 19):
if darray[i][j] == 1:
num4 += 1
i -= 1
j += 1
else:
break
#五子胜
if num1>=4 or num2>=4 or num3 >= 4 or num4 >= 4:
return True
else:
return False
#初始化
pygame.init()
#屏幕、背景图、白黑子转换
screen = pygame.display.set_mode((584, 584), RESIZABLE, 32)
background = pygame.image.load(background_image).convert()
white = pygame.image.load(white_image).convert_alpha()
black = pygame.image.load(black_image).convert_alpha()
#标题画图字体
screen.blit(background, (0,0))
font = pygame.font.SysFont("arial", 40);
pygame.display.set_caption('五子棋')
#zeros()返回19行19列的数组
white_luodian = numpy.zeros((19,19))
black_luodian = numpy.zeros((19,19))
#设置棋盘的所有点的坐标
qipan_list = [(30+i*29-12,30+j*29-12) for i in range(19) for j in range(19)]
#默认黑子先手,转换下棋
transW_B = True
#游戏主循环
while True:
for event in pygame.event.get():
if event.type == QUIT:
exit()
if event.type == MOUSEBUTTONDOWN:
x,y = pygame.mouse.get_pos()
if 30 <= x <= 554 and 30 <= y <= 554 and ((x - 30) % 29 = 17) and (
(y - 30) % 29 = 17):
#四舍五入
m = int(round((x-30)/29))
n = int(round((y-30)/29))
#结果分析
if transW_B:
transW_B = not transW_B
screen.blit(black, qipan_list[19*m+n])
black_luodian[n][m] = 1
if WhoWin(n,m,black_luodian):
screen.blit(font.render('Black chess player wins!', True, (0, 0, 0),(0,229,238)), (120, 280))
else:
transW_B = not transW_B
screen.blit(white, qipan_list[19 * m + n])
white_luodian[n][m] = 1
if WhoWin(n,m,white_luodian):
screen.blit(font.render('White chess player wins!', True, (255, 255, 255),(0,229,238)), (120, 280))
qipan_list[19*m+n] = ''
pygame.display.update()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
编写五子棋的完整python代码_python实现五子棋游戏相关推荐
- 编写五子棋的完整python代码_python实现五子棋小程序
本文实例为大家分享了python实现五子棋小程序的具体代码,供大家参考,具体内容如下 一.结合书上例子,分三段编写: wuziqi.py #coding:utf-8 from win_notwin i ...
- 编写五子棋的完整python代码_python实现五子棋游戏(pygame版)
本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 目录 简介 实现过程 结语 简介 使用python实现pygame版的五子棋游戏: 环境:Windows系统+pytho ...
- 编写五子棋的完整python代码_python制作简单五子棋游戏
本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 #五子棋 '" 矩阵做棋盘 16*16 "+" 打印棋盘 for for 游戏是否结束 开 ...
- 编写五子棋的完整python代码_python开发 实现单机五子棋!
''' @Auther : gaoxin @Date : 2019.01.01 @Version : 1.0 ''' from tkinter import * import math #定义棋盘类 ...
- 编写五子棋的完整python代码_PyQt写的五子棋
技术路线 GUI的实现 使用PyQt技术作为基础.PyQt是一个支持多平台的客户端开发SDK,使用它实现的客户端可以运行在目前几乎所有主流平台之上. 使用PyQt,Qt设计器实现UI,通过 pyuic ...
- cs精英游戏python代码_python面向对象-cs游戏示例
#!/usr/local/bin/python3 # -*- coding:utf-8 -*- class Role(object): n = 123 # 类变量 name = "我是类na ...
- 【Python基础】如何编写简洁美观的Python代码
作者 | ANIRUDDHA BHANDARI 编译 | VK 来源 | Analytics Vidhya 概述 Python风格教程将使你能够编写整洁漂亮的Python代码 在这个风格教程中学习不同 ...
- Python代码实现尼姆游戏聪明模式
Python代码实现尼姆游戏聪明模式 代码问题描述: 尼姆游戏是个著名的游戏,有很多变种玩法.两个玩家轮流从一堆物品中拿走一部分.在每一步中,玩家可以自由选择拿走多少物品,但是必须至少拿走一个并且最多 ...
- python小游戏代码大全-20行python代码的入门级小游戏的详解
背景: 作为一个python小白,今天从菜鸟教程上看了一些python的教程,看到了python的一些语法,对比起来(有其他语言功底),感觉还是非常有趣,就随手添了一点内容,改了一个小例程,当着练练手 ...
最新文章
- 盘丝洞服务器维护,斗战神哪些区合区了_斗战神合区后名字重复怎么办_快吧游戏...
- ASP.NET中删除文件夹下的文件
- 酷派手机android版本,酷派大神的手机系统是什么?酷派大神能升级安卓4.3吗?...
- 钻井缸套排量_中国石化顺北特深层及川渝页岩气钻完井关键技术集成:碳酸盐岩酸压技术、优快钻井技术、页岩气强化体积改造技术、高温高压窄间隙固井技术...
- Unity使用自定义资源(.asset)配置数据
- vue后台如何刷新过期的token_Vue刷新token,判断token是否过期
- jmeter中build和jmeter-results-detail-report_30.xsl以及jmeter.results.shanhe.me.xsl
- 拖放 Drag and drop
- learning的反义词英文_常见英语词汇反义词大全
- Git fatal: Authentication failed for
- 7. F1方程式冠军
- Flash鼠绘入门第十课:绘制娇艳郁金香
- 68 ping: Lacking privilege for raw socket.
- matlab实现GPC隐写算法,基于LSB信息隐藏算法的MATLAB实现
- Redis 的 ltrim 命令
- 初入社会经验必备能力总结
- dmidecode命令详解
- AudioRecord报错startRecording() called on an uninitialized AudioRecord.总结
- 爬取boss直聘数据并分析
- js replace正则替换 \n
热门文章
- 使用svnsync同步svn
- bzoj 4551[Tjoi2016Heoi2016]树
- BEGINNING SHAREPOINT#174; 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 站点设置
- 初步认识迭代服务器和并发服务器
- 对css类名className的一些操作的函数
- Java抽象类、接口、类的特殊成员
- 前端导出excel文件带样式_vue前端使用xlsx导出数据到excel中--最简单的方式
- 虎贲计算机二级视频解析百度云,详解虎贲T7520:5G为什么需要全场景覆盖增强技术?...
- mysql内部实现原理面试_理解完这些基本上能解决面试中MySql的事务问题
- linux la 的使用方法,Linux简介及常用命令使用4--linux高级命令与技巧(示例代码)