本文实例为大家分享了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<19:

if darray[i][y] == 1:

num1+=1

i += 1

else:

break

j =y-1

while (j >= 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 <= 12 or (x - 30) % 29 >= 17) and (

(y - 30) % 29 <= 12 or (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()

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

时间: 2019-06-18

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

  1. python五子棋程序教程_python实现五子棋小程序

    本文实例为大家分享了python实现五子棋小程序的具体代码,供大家参考,具体内容如下 一.结合书上例子,分三段编写: wuziqi.py #coding:utf-8 from win_notwin i ...

  2. python五子棋程序教程_Python 五子棋 编程

    N年前用python写的五子棋游戏,电脑执白子,只能判断一步,新手级别(可以再添加几层循环让它厉害一点) .程序的UI界面是用python的标准库 Tkinter 写的,有点乱,现在已然看不懂. 代码 ...

  3. python打地鼠游戏教程_Python入门小游戏,炫酷打地鼠教程第二部分,都是干货

    还记得那位玩打地鼠小游戏,然后学会python的女白领吗? 那份教程还没有写完,只写到了对游戏中精灵的定义,然后我们继续写. 实现了游戏精灵的定义后,我们就要开始展现真正的技术啦,也就是写主程序. 首 ...

  4. python学习手册教程_python学习手册:如何学习python学习教程?

    常听人说:选择不对,努力也白费!如今互联网行业火热,越来越多人加入到Python.JAVA.HTML5.大数据的领域来.关于学Python.JAVA.HTML5.大数据到底哪个编程语言好?小编不能帮你 ...

  5. python搭建环境教程_python教程(一)·python环境搭建

    如前所述,python是一种解释语言,需要一个翻译,或者虚拟机,将python代码并运行它.因此,我们需要一个翻译,现在去官方网站.或者使用一个搜索引擎,如百度搜索,搜索关键字\u201Cpython ...

  6. python独立网站教程_python做网站教程_如何免费做网站的教程

    python学习指南教程 180x270 - 7KB - JPEG 图灵程序设计丛书:Python基础教程 260x317 - 12KB - JPEG 跳一跳python使用教程 微信跳一跳pytho ...

  7. python自学完整教程_python自学完整教程

    [教程介绍] 想学习一门编程语言,是不是必须考上大学的计臬机专业,才能真正学会呢? 其实不是,在我们身边,很多初中生,甚至国外不少小学生都能把编程学好,通过自学,很多人都能成为编程高手. python ...

  8. python入门测试教程_Python测试入门

    python入门测试教程 This tutorial is for anyone who has written a fantastic application in Python but hasn' ...

  9. python 微信机器人教程_Python创建微信机器人(附赠Python视频教程)

    微信,一个日活10亿的超级app,不仅在国内社交独领风骚,在国外社交也同样占有一席之地.今天我们要讲的便是如何用Python来做一个微信聊天机器人,突然想起鲁迅先生曾经说过的一句话: 因为是微信机器人 ...

最新文章

  1. java菱形乱码 编码_JAVA:编码与乱码问题
  2. Linux下C程序的链接过程
  3. python-opencv图像处理之SIFT尺度不变特征变换
  4. php tp写构造函数,tp5参数绑定到构造函数
  5. base64编码的图片字节流存入html页面中的显示
  6. HTC 一个基站老无法定位
  7. 计算机视觉与图形学-神经渲染专题-神经体渲染:实时渲染KiloNeRF
  8. [lua]紫猫lua教程-命令宝典-L1-01-02. 变量
  9. android barchart设置标题,android - 如何设置MPAndroidChart BarChart的高度和宽度? - 堆栈内存溢出...
  10. 使用iText对pdf中查找关键字坐标进行填充
  11. 冰冻三尺,非一日之寒。数据解析——xpath(4)
  12. php利用表格敬将所选择的数据显示出来,单元格下拉筛选设置/Excel对筛选后的单元格进行下拉填充...
  13. webpack与vue的结合使用出现的bug
  14. Google 不想与甲骨文争了,要放弃 Java APIs
  15. 程序员如何在技术上提升自己
  16. OPPO Java后端校招提前批面试
  17. 音频电平vu显示表软件下载_正点原子开拓者 Nios II资料连载第十章MCU TFT-LCD图片显示实验...
  18. C/C++ 算法分析与设计:递归(年龄问题)
  19. 字节跳动青训营Day01 - 实战项目 - 在线翻译字典
  20. 基于javaweb+jsp的生病慢病报销管理信息系统(java+MySQL+Jdbc+Servlet+Jsp)

热门文章

  1. UI自动化测试框架-从入门到精通
  2. 从Folly源代码中学习C ++ 11的新功能。
  3. 【Python学习】transpose函数
  4. 计算机图形学结课论文,计算机图形学基础教程结课论文
  5. 医疗行业大数据医疗分析案例
  6. 会声会影X10视频制作软件中文密钥激活版
  7. APP接入微信支付流程
  8. 简单网页版的注册登录案例(JSP+CSS+MySQL+Servlet+MVC设计思想,含源码!)
  9. DNS系统(服务器)的工作原理及攻击防护
  10. java中高效遍历list_Java中四种遍历List的方法总结(推荐)