本文实例为大家分享了Python实现五子棋小游戏的具体代码,供大家参考,具体内容如下

使用的库

pygame、pyautogui

流程简述

1.画棋盘

设置网格间隔40px ,留白 80 px ,与网格横竖线数量 ,初定19 × 19 。

2.鼠标点击

鼠标点击取得坐坐标(x0 , y0),再获得最近的网格上的点(x1 , y1),再将每次动作获得的(x1 , y1 )放入列表 chess_location 中。

再通过:

chess_location_b = chess_location[0::2]
chess_location_w = chess_location[1::2]

3.判断胜负

这一块网上有很多不同的方法,我为了让大家读懂尽量写的详细了。
首先 ,我们要知道连五有四个方向:竖直 ,水平 ,右上左下 , 右下左上 。
每次将新落下的子分别进行4个方向的判断,判断是否出现连五及以上。
我使用的方法是:

    # 竖直score = []for i in range(cell_num): #cell_num = 19if [x[-1][0], i ] in x:score.append([x[-1][0], i ])if score.__len__() >= 5:return 1else:score =[]

大概意思就是最新落下的(x1 , y1)中的竖直方向从上往下检查如果出现黑(白)棋 ,则将出现棋子的坐标加入列表 score 中 , 如果出现异色棋子或者没有棋子,则清空 score 中的元素 ,如果列表 score 中的元素数量大于等于5个 ,则分胜负 。
如果棋子填满棋盘但是仍没有分出胜负 ,则平局 。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以价位@762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

代码及结果

from pygame.locals import *
# 初始参数
cell_size = 40
space = 80
cell_num = 19
grid_size = (cell_num - 1)*cell_size + space*2
screen = pygame.display.set_mode([grid_size,grid_size],0,32)
chess_location , chess_location_w , chess_location_b = [] , [] , []
# 画棋盘
def grid():screen.fill([208,173,108])font = pygame.font.SysFont("arial", 20)i = 0for x in range(0, cell_size * cell_num , cell_size):i += 1text_surface = font.render("{}".format(i), True, (0, 0, 0))screen.blit(text_surface,[(space - font.get_height()) - 10,(space - font.get_height()/2) + cell_size*(i -1 )])pygame.draw.line(screen, (0, 0, 0), (x + space, 0 + space), (x + space, cell_size * (cell_num - 1) + space), 2)i = 0for y in range(0, cell_size * cell_num, cell_size):i += 1text_surface = font.render("{}".format(chr(64 + i)), True, (0, 0, 0))screen.blit(text_surface,[(space + cell_size * (i - 1)) -5, (space - font.get_height() / 2) - 20])pygame.draw.line(screen, (0,0,0), (0 + space, y + space),(cell_size * (cell_num - 1) + space, y + space), 2)
# 分胜负
def result(x):# 竖直score = []for i in range(cell_num):if [x[-1][0], i ] in x:score.append([x[-1][0], i ])if score.__len__() >= 5:return 1else:score =[]# 水平score = []for i in range(cell_num):if [i , x[-1][1]] in x:score.append([i , x[-1][1]])if score.__len__() >= 5:return 1else:score = []# 右上左下score = []for i in range(cell_num):if [i,x[-1][0] + x[-1][1] - i] in x:score.append([i,x[-1][0] + x[-1][1] - i])if score.__len__() >= 5:return 1else:score = []# 右下左上score = []for i in range(cell_num):if [x[-1][0] - x[-1][1] + i,i] in x:score.append([x[-1][0] - x[-1][1] + i,i])if score.__len__() >= 5:return 1else:score = []# 平局if chess_location.__len__() == cell_num * cell_num :return 2
# 主循环
def running():global chess_location_w , chess_location_bwhile True:grid()for event in pygame.event.get():if event.type == QUIT:exit()# 落子if event.type == MOUSEBUTTONDOWN:x0 , y0 = pygame.mouse.get_pos()if x0 > space and y0 > space and x0 < space + cell_size*(cell_num - 1) and y0 < space + cell_size * (cell_num - 1):x1 = round((x0 - space) / cell_size)y1 = round((y0 - space) / cell_size)if [x1 , y1] not in chess_location:chess_location.append([x1 , y1])# 悔棋elif event.type == KEYDOWN:if event.key == K_LEFT:chess_location.pop(-1)chess_location_b = chess_location[0::2]chess_location_w = chess_location[1::2]# 黑棋for i in chess_location_b:pygame.draw.circle(screen, [ 0 , 0 , 0 ], [i[0]* cell_size + space, i[1]* cell_size + space], 15, 0)# 白棋for i in chess_location_w:pygame.draw.circle(screen, [255,255,255], [i[0]* cell_size + space, i[1]* cell_size + space], 15, 0)# 判断胜负if chess_location_b and result(chess_location_b) == 1:pyautogui.alert(text='黑棋胜',title='游戏结束')exit()elif chess_location_w and result(chess_location_w) == 1:pyautogui.alert(text='白棋胜',title='游戏结束')exit()elif chess_location_b and chess_location_w:if result(chess_location_b) or result(chess_location_w) == 2:pyautogui.alert(text='平局', title='游戏结束')exit()pygame.display.update()if __name__ == '__main__':pygame.init()running()

输出

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持python教程入门学习。【公众号】

[Python教程入门教程]Python五子棋小游戏实例分享相关推荐

  1. python游戏-零基础python教程-用Python设计你的第一个小游戏

    学以致用,今天给大家分享零基础Python设计你的第一个小游戏,既然要学习Python就要让它来实现我们想做的东西,这次咱就用Python来做个简单小游戏,在实践中不断成长.刚学习Python的小伙伴 ...

  2. python简单小游戏代码-零基础python教程-用Python设计你的第一个小游戏

    学以致用,今天给大家分享零基础Python设计你的第一个小游戏,既然要学习Python就要让它来实现我们想做的东西,这次咱就用Python来做个简单小游戏,在实践中不断成长.刚学习Python的小伙伴 ...

  3. TZC Python编程入门教程 ————题解

    本博客原文地址:Python编程入门教程(以在线评测平台为载体) - 暴力都不会的蒟蒻 - 博客园,原文体验更佳 如果你是一名浙江2020级及以后的高中生要学习Python,抑或是一位科学工作者要学习 ...

  4. Python爬虫入门教程:博客园首页推荐博客排行的秘密

    1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...

  5. 编程入门python语言是多大孩子学的-不学点编程,将来怎么给孩子辅导作业―Python新手入门教程...

    为了填满AI时代的人才缺口,编程语言教育都从娃娃抓起了!如果你还不懂Python是什么将来怎么给孩子辅导作业呢? Python新手入门教程 近期,浙江省信息技术课程改革方案出台,Python言语现已断 ...

  6. python教学视频下载-Python机器学习入门教程全套视频下载【传智播客】

    Python机器学习入门教程 初级共3天课 本套教程是机器学习的入门课程,主要介绍一些经典的传统机器学习算法,如分类算法:KNN算法,朴素贝叶斯算法,逻辑回归,决策树算法以及随机森林;回归算法:线性回 ...

  7. python基础教程是什么语言-终于懂得python中文入门教程

    Python作为一门新型的编程语言(一般常用作脚本语言)很受欢迎,毕竟相对其他的编程语言(Java ,C#等)来说比较容易入手.那么,在刚开始学习Python时有哪些疑难点需要掌握呢?以下是小编为你整 ...

  8. python菜鸟工具-终于清楚python菜鸟入门教程

    Python是一款功能强大的脚本语言,具有丰富和强大的库,重要的是,它还具有很强的可读性,易用易学,非常适合编程初学者入门.以下是小编为你整理的python菜鸟入门教程 环境配置:下载Python并安 ...

  9. python作业不会做怎么办_不学点编程,将来怎么给孩子辅导作业——Python新手入门教程...

    为了填满AI时代的人才缺口,编程语言教育都从娃娃抓起了!如果你还不懂Python是什么将来怎么给孩子辅导作业呢? Python新手入门教程 近期,浙江省信息技术课程改革方案出台,Python言语现已断 ...

最新文章

  1. mysql error 1442_MySQL错误代码为err[1442]的解决总结_MySQL
  2. 【AI2】更新app inventor离线开发环境百度网盘下载链接,安卓app图形化开发环境...
  3. 浅谈HSRP(热备份路由选择协议)
  4. 《Solution-Centric Organization》解决方案导向型组织 节选 III
  5. Javascript - ExtJs - 组件 - 分页
  6. webpack联邦模块之consumes方法
  7. 软件项目管理-构建之法-四周总结
  8. 隐私与机器学习,二者可以兼得吗?
  9. 诗与远方:无题(七十九)- 望红云而作
  10. 一个以标签为特色的社交网站——易寻
  11. java连接rabbitmq_RabbitMQ教程(工作模式篇)
  12. 3.7-php连接MongoDB
  13. Ubuntu20.04安装ROS教程(虚拟机/双系统,含报错解决)
  14. WinRAR是什么?------压缩工具
  15. Codeforces 938E Max History [排列组合]
  16. 建筑灭火器配置设计规范
  17. node-red与西门子PLC通信
  18. sd/mmc驱动框架-(三)mmc子系统的数据结构
  19. 凌动z3735f运行64位linux,在z3735上装ubuntu,装完的经验
  20. jwt鉴权(react express jsonwebtoken)

热门文章

  1. ERP 开发过程中涉及到的算法 库存,工程,生产计划,固定资产计算方法
  2. 微信小程序上传图片到服务器总是失败_微信小程序怎么上传图片到服务器?
  3. 使用百度地图SDK进行地址搜索、定位的工作小结
  4. JZ56从头到尾打印链表
  5. Tyk网关Docker安装
  6. 实验一 HTML编程基础和Javascript编程基础
  7. HTML+CSS+JavaScript编程入门指南
  8. linux 进程状态 rl,Linux进程状态详解
  9. AssetBundle的原理及最佳实践
  10. 前端——JavaScript获取系统时间以及通过ajax获取服务器时间