本文实例为大家分享了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实现五子棋游戏相关推荐

  1. 编写五子棋的完整python代码_python实现五子棋小程序

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

  2. 编写五子棋的完整python代码_python实现五子棋游戏(pygame版)

    本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 目录 简介 实现过程 结语 简介 使用python实现pygame版的五子棋游戏: 环境:Windows系统+pytho ...

  3. 编写五子棋的完整python代码_python制作简单五子棋游戏

    本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 #五子棋 '" 矩阵做棋盘 16*16 "+" 打印棋盘 for for 游戏是否结束 开 ...

  4. 编写五子棋的完整python代码_python开发 实现单机五子棋!

    ''' @Auther : gaoxin @Date : 2019.01.01 @Version : 1.0 ''' from tkinter import * import math #定义棋盘类 ...

  5. 编写五子棋的完整python代码_PyQt写的五子棋

    技术路线 GUI的实现 使用PyQt技术作为基础.PyQt是一个支持多平台的客户端开发SDK,使用它实现的客户端可以运行在目前几乎所有主流平台之上. 使用PyQt,Qt设计器实现UI,通过 pyuic ...

  6. cs精英游戏python代码_python面向对象-cs游戏示例

    #!/usr/local/bin/python3 # -*- coding:utf-8 -*- class Role(object): n = 123 # 类变量 name = "我是类na ...

  7. 【Python基础】如何编写简洁美观的Python代码

    作者 | ANIRUDDHA BHANDARI 编译 | VK 来源 | Analytics Vidhya 概述 Python风格教程将使你能够编写整洁漂亮的Python代码 在这个风格教程中学习不同 ...

  8. Python代码实现尼姆游戏聪明模式

    Python代码实现尼姆游戏聪明模式 代码问题描述: 尼姆游戏是个著名的游戏,有很多变种玩法.两个玩家轮流从一堆物品中拿走一部分.在每一步中,玩家可以自由选择拿走多少物品,但是必须至少拿走一个并且最多 ...

  9. python小游戏代码大全-20行python代码的入门级小游戏的详解

    背景: 作为一个python小白,今天从菜鸟教程上看了一些python的教程,看到了python的一些语法,对比起来(有其他语言功底),感觉还是非常有趣,就随手添了一点内容,改了一个小例程,当着练练手 ...

最新文章

  1. 盘丝洞服务器维护,斗战神哪些区合区了_斗战神合区后名字重复怎么办_快吧游戏...
  2. ASP.NET中删除文件夹下的文件
  3. 酷派手机android版本,酷派大神的手机系统是什么?酷派大神能升级安卓4.3吗?...
  4. 钻井缸套排量_中国石化顺北特深层及川渝页岩气钻完井关键技术集成:碳酸盐岩酸压技术、优快钻井技术、页岩气强化体积改造技术、高温高压窄间隙固井技术...
  5. Unity使用自定义资源(.asset)配置数据
  6. vue后台如何刷新过期的token_Vue刷新token,判断token是否过期
  7. jmeter中build和jmeter-results-detail-report_30.xsl以及jmeter.results.shanhe.me.xsl
  8. 拖放 Drag and drop
  9. learning的反义词英文_常见英语词汇反义词大全
  10. Git fatal: Authentication failed for
  11. 7. F1方程式冠军
  12. Flash鼠绘入门第十课:绘制娇艳郁金香
  13. 68 ping: Lacking privilege for raw socket.
  14. matlab实现GPC隐写算法,基于LSB信息隐藏算法的MATLAB实现
  15. Redis 的 ltrim 命令
  16. 初入社会经验必备能力总结
  17. dmidecode命令详解
  18. AudioRecord报错startRecording() called on an uninitialized AudioRecord.总结
  19. 爬取boss直聘数据并分析
  20. js replace正则替换 \n

热门文章

  1. 使用svnsync同步svn
  2. bzoj 4551[Tjoi2016Heoi2016]树
  3. BEGINNING SHAREPOINT#174; 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 站点设置
  4. 初步认识迭代服务器和并发服务器
  5. 对css类名className的一些操作的函数
  6. Java抽象类、接口、类的特殊成员
  7. 前端导出excel文件带样式_vue前端使用xlsx导出数据到excel中--最简单的方式
  8. 虎贲计算机二级视频解析百度云,详解虎贲T7520:5G为什么需要全场景覆盖增强技术?...
  9. mysql内部实现原理面试_理解完这些基本上能解决面试中MySql的事务问题
  10. linux la 的使用方法,Linux简介及常用命令使用4--linux高级命令与技巧(示例代码)