使用python语言和pygame库制作一个五子棋游戏。
       代码转载自《跟我一起玩PYTHON编程(第二版,李珊著)》。

环境

  • python
  • pygame库
python -m pip install pygame

源码

import pygame as pgclass ChessBord:def __init__(s):s.grid_length = 26s.grid_count = 20s.start_x = 150s.start_y = 50s.edge_length = s.grid_length / 2s.piece = "black"s.winner = Nones.gameover = Falses.grid = []for i in range(s.grid_count):s.grid.append(list("." * s.grid_count))def handle_event(s, e):origin_x = s.start_x - s.edge_lengthorigin_y = s.start_y - s.edge_lengthchessbord_length = (s.grid_count - 1) * s.grid_length + s.edge_length * 2mouse_pos = e.posif (mouse_pos[0] >= origin_x and mouse_pos[0] <= origin_x + chessbord_length) and (mouse_pos[1] >= origin_y and mouse_pos[1] <= origin_y + chessbord_length):if not s.gameover:x = mouse_pos[0] - origin_xc = int(x / s.grid_length)y = mouse_pos[1] - origin_yr = int(y / s.grid_length)if s.set_piece(r, c):s.check_win(r, c)def set_piece(s, r, c):if s.grid[r][c] == ".":s.grid[r][c] = s.pieceif s.piece == "black":s.piece = "white"else:s.piece = "black"return Truereturn Falsedef check_win(s, r, c):n_count = s.get_continous_count(r, c, -1, 0)s_count = s.get_continous_count(r, c, 1, 0)w_count = s.get_continous_count(r, c, 0, -1)e_count = s.get_continous_count(r, c, 0, 1)nw_count = s.get_continous_count(r, c, -1, -1)ne_count = s.get_continous_count(r, c, -1, 1)sw_count = s.get_continous_count(r, c, 1, -1)se_count = s.get_continous_count(r, c, 1, 1)if n_count + s_count >= 4 or e_count + w_count >= 4 or se_count + nw_count >= 4 or ne_count + sw_count >= 4:s.winner = s.grid[r][c]s.gameover = Truedef get_continous_count(s, r, c, dr, dc):piece = s.grid[r][c]result = 0i = 1while True:new_r = r + dr * inew_c = c + dc * iif 0 <= new_r < s.grid_count and 0 <= new_c < s.grid_count:if s.grid[new_r][new_c] == piece:result += 1else:breakelse:breaki += 1return resultdef draw(s, screen):pg.draw.rect(screen, (185, 122, 87), [s.start_x - s.edge_length, s.start_y - s.edge_length,(s.grid_count - 1) * s.grid_length + s.edge_length * 2,(s.grid_count - 1) * s.grid_length + s.edge_length * 2], 0)for r in range(s.grid_count):y = s.start_y + r * s.grid_lengthpg.draw.line(screen, (0, 0, 0), [s.start_x, y], [s.start_x + s.grid_length * (s.grid_count - 1), y], 2)for c in range(s.grid_count):x = s.start_x + c * s.grid_lengthpg.draw.line(screen, (0, 0, 0), [x, s.start_y], [x, s.start_y + s.grid_length * (s.grid_count - 1)], 2)for r in range(s.grid_count):for c in range(s.grid_count):piece = s.grid[r][c]if piece != ".":if piece == "black":color = (0, 0, 0)else:color = (255, 255, 255)x = s.start_x + c * s.grid_lengthy = s.start_y + r * s.grid_lengthpg.draw.circle(screen, color, [x, y], s.grid_length // 2)class Gomoku:def __init__(s):pg.init()s.screen = pg.display.set_mode((800, 600))pg.display.set_caption("五子棋")s.clock = pg.time.Clock()s.font = pg.font.Font(u"C:\\Windows\\Fonts\\consola.ttf", 24)s.going = Trues.chessbord = ChessBord()def loop(s):while s.going:s.update()s.draw()s.clock.tick(50)pg.quit()def update(s):for e in pg.event.get():if e.type == pg.QUIT:s.going = Falseelif e.type == pg.MOUSEBUTTONDOWN:s.chessbord.handle_event(e)def draw(s):s.screen.fill((255, 255, 255))s.screen.blit(s.font.render("FPS:{0:.3F}".format(s.clock.get_fps()), True, (0, 0, 0)), (10, 10))s.chessbord.draw(s.screen)if s.chessbord.gameover:s.screen.blit(s.font.render("{0}Win".format("black" if s.chessbord.winner == "black" else "white"), True, (0, 0, 0)),(500, 10))pg.display.update()if __name__ == "__main__":game = Gomoku()game.loop()

游戏运行截图

参考文献

[1]李珊.跟我一起玩PYTHON编程(第二版), 天津:天津科学技术出版社,2019.

使用pygame实现双人五子棋游戏相关推荐

  1. C++实现图形界面双人五子棋游戏

    C++实现图形界面双人五子棋游戏 设计思路 定义一个Chess类,用16*16的二维数组的来表示一方棋手在棋局上的落子状态. 通过控制键盘←↑→↓来选择落点,getch()函数可获得用户的键盘输入,用 ...

  2. Python Pygame制作简单五子棋游戏(详细代码+解释)

    这里只想简单演示下一个简单的五子棋界面和落子等操作,主要为了后面设计AI对战方便演示,AI算法后面设计吧,最近事太多了,,,,. 希望本文有助于你制作自己期望的简单的五子棋. 一.pygame初始化画 ...

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

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

  4. python五子棋游戏说明_python实现五子棋游戏(pygame版)

    python实现五子棋游戏(pygame版) 发布时间:2020-10-11 17:05:18 来源:脚本之家 阅读:67 作者:king0964 本文实例为大家分享了python五子棋游戏的具体代码 ...

  5. python五子棋游戏控制台版_python实现五子棋游戏(pygame版)

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

  6. 【Python】Pygame学习制作五子棋笔记

    前几天突发奇想做一个五子棋,但是技术储备不足,于是就在C站找资料,于是我就借鉴大佬做的五子棋,根据其思路,我做的一些笔记. 目录 一,棋盘的绘制 1.窗口 2.网格 3.星位 二,游戏功能介绍 1.下 ...

  7. python五子棋游戏15*15_python实现五子棋游戏(pygame版)

    分享python 编写的五子棋游戏 分享高手给用python编写一个五子棋游戏,需要代码. .心里知道有这么回事,白天就很正常晚上就胡思乱想,事已至此小编们都该向前走一步了. 请用PYTHON编一个小 ...

  8. 用74l138实现一个一位全减器_用pygame实现一个简单的五子棋游戏

    准备 python基础相关准备: pygame的基础知识,参考目光博客的"用Python和Pygame写游戏-从入门到精通" 安装python 3.8.0 在python官网下载, ...

  9. python经典教程游戏_使用pygame制作经典小游戏:五子棋

    准备 python基础相关准备: pygame的基础知识,参考目光博客的"用Python和Pygame写游戏-从入门到精通" 安装python 3.8.0 在python官网下载, ...

  10. 一小时学会C++开发双人对战版五子棋游戏,小白看完也能自己写游戏啦!

    VC++ 双人对战的五子棋游戏 界面新颖附源码,VC.NET源码项目,五子棋-UI美化实例源码.看一看截图吧,是不是看上去很有感觉的五子棋. 程序流程图: 游戏界面如下: 项目结构展示: 部分源码展示 ...

最新文章

  1. pip 升级_python的pip命令
  2. 利用机器学习进行DNS隐蔽通道检测——数据收集,利用iodine进行DNS隐蔽通道样本收集...
  3. 调试笔记--keil 断点调试小技巧
  4. 浏览器 制作---TWebBrowser 控件
  5. 一个经典编程面试题的“隐退”
  6. 时序分析基本概念介绍<Slew/Transition>
  7. MATLAB EOF处理 缺测值问题
  8. mysql 周平均值_SQL语句: 按周、月统计总值 和 平均值
  9. 智能网联车载终端渗透率提升之道
  10. Mac mini 2018 win10 外接显卡终极教程
  11. 使用windows为Android手机进行瘦身
  12. 基于STM32F407的ADC解析-ADC1多通道扫描模式电压采集实验(启用DMA传输数据)
  13. linux切换内核版本
  14. 西安交通大学第14周大计基
  15. arduino uno r3单片机封装图_Arduino教程 Lesson 1 驱动安装及下载Blink程序
  16. 无线充电比有线充电更慢吗?
  17. ESP32 USB LOG打印乱码重启
  18. 平面投影坐标转经纬度坐标
  19. hdu 4489 The King’s Ups and Downs 组合 递推
  20. 【Python茴香豆系列】之 PANDAS 如何根据列的值来选取 DataFrame 的行

热门文章

  1. openbmc开发30:webui开发—基础
  2. 关于python里面xlwt操作excel文件的时候去掉页眉页脚
  3. pika在codis中的探索
  4. 电脑xlsx文件格式打不开怎么办
  5. 灵活用工十大热门行业及应用场景
  6. 最适合程序员转行的10大职业
  7. python编写简易木马程序_python简易木马编写
  8. 简体繁体转换JS(JavaScript)脚本
  9. 程序发生run time error原因及解决方案
  10. RuntimeError: cuda runtime error (999)