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

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

python五子棋实验报告_python实现五子棋游戏相关推荐

  1. python综合实验报告_Python程序设计实验报告五:综合运用三种基本结构进行程序设计(综合性实验)...

    安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名姚彩琴学号3190505129 成绩 日期 2020.4.22 指导老师修宇 [实验名称]综合运用三种基本结构进行程序设计(综合性实 ...

  2. python综合实验报告_Python程序设计 实验报告

    安徽工程大学 Python程序设计 实验报告 班级:物流192       姓名:刘马汉卿学号:319005211 成绩:            日期:2020年4月29日        指导老师:修 ...

  3. c#五子棋实验报告_C#实现五子棋游戏

    曾经自学C#做计算机图形学的作业,GDI+画图确实好用,目前在找.NET的实习,尝试做了一个最基本的五子棋,复习一下C#的基本语法,目前只能当跟基友一起玩的单机小游戏,之后再加入AI和联网对战功能.目 ...

  4. python数据分析实验报告_Python数据分析综合小练习:销售数据分析

    有这样一个小小的练习题: 卖电子商品的老板,每天记录了自己卖出的U盘,电脑支架,插座,电池,音箱,鼠标,usb数据线,手机充电线等数量,客户的需求是一方面,也可以通过客户购买关联性比较强的商品进行引导 ...

  5. python五子棋实验报告_Python 五子棋

    # 导入pygame模块 import pygame # 定义三个常量函数,用来表示白棋,黑棋,以及 空 EMPTY = 0 BLACK = 1 WHITE = 2 # 定义黑色(黑棋用,画棋盘) b ...

  6. python爬虫实验报告_python爬虫实验

    原博文 2013-06-28 13:30 − 那天在新浪微博上看到北北出的题目,由于最近也在做类似的爬虫研究,所以就有了这个实验. 后来在QQ上和北北说了下,要求是啥都抓,就抓乌云的... 然后就开始 ...

  7. java四子棋实验报告_Python 实现劳拉游戏的实例代码(四连环、重力四子棋)

    游戏规则:双方轮流选择棋盘的列号放进自己的棋子, 若棋盘上有四颗相同型号的棋子在一行.一列或一条斜线上连接起来, 则使用该型号棋子的玩家就赢了! 程序实现游戏,并将每局的数据保存到本地的文件中 首先我 ...

  8. python数据分析实验报告_Python 数据分析入门实战

    本训练营中,我们将学习怎么样使用 Python 进行数据分析.课程将从数据分析基础开始,一步步深入讲解.从 Python 的基础用法到数据分析的各种算法,并结合各种实例,讲解数据分析过程中的方方面面. ...

  9. python外星人实验报告_Python 项目实践一(外星人入侵)第一篇

    python断断续续的学了一段实践,基础课程终于看完了,现在跟着做三个小项目,第一个是外星人入侵的小游戏: 一 Pygame pygame 是一组功能强大而有趣的模块,可用于管理图形,动画乃至声音,让 ...

最新文章

  1. treeview 保持选中状态
  2. 指针运算(自己做个笔记)
  3. 综述 | Google-斯坦福发布深度学习统计力学
  4. 逻辑回归 logistic regression
  5. Netty系列之一开始使用
  6. toft 测试用例rat_一篇文章详述配对测试的测试用例设计!强烈建议收藏
  7. java 抽象类的匿名类_Java匿名内部类(通过继承抽象类来实现)
  8. 非985/211学校的毕业生,进大厂的机率有多大?
  9. 一篇全面的 MySQL 高性能优化实战总结!
  10. 快速部署PostgreSQL
  11. 监控apache脚本原理
  12. Memcached(七)Memcached的并发实例
  13. scipy的安装教程
  14. 暴力破解wifi密码尝试
  15. 洛谷 P4200 千山鸟飞绝平衡树
  16. 三赢电商:拼多多店铺一直不发货怎么办?
  17. 什么是R型直流电源变压器?
  18. 中标麒麟学习笔记0:安装极点五笔输入法
  19. 25 匹马,5 个赛道,没有计时器,请问最低多少次可以找出跑得最快的 3匹马
  20. 世界上第一家咨询公司的发展历史

热门文章

  1. 【分享】这些年,我使用的一些工具[非开发类]
  2. Django模型类操作数据表
  3. WiFi联盟认证、WiFi联盟测试、WiFi联盟认证测试周期、WiFi联盟会员费是多少?
  4. TCGA_RNA-seq_limma分析
  5. Ubuntu之五:如何使用Rhythmbox听歌?以及解决中文标签乱码问题
  6. 登录PDB的几种操作
  7. 内存优化表MOT管理
  8. 企业移动视频通话会议EasyRTC视频会议通话系统开拓视频会议行业新前景
  9. 微软CRM,路在何方?
  10. Python 时间整点判断