亲自动手实现Python+pygame中国象棋游戏
功能1:实现游戏整体界面显示
一、创建基本的结构
代码如下:
import time
import pygame
def main():
# 初始化pygame
pygame.init()
# 创建用来显示画面的对象(理解为相框)
screen = pygame.display.set_mode((750, 667))
# 主循环
while True:
time.sleep(0.1)
# 显示screen这个相框的内容(此时在这个相框中的内容像照片、文字等会显示出来)
pygame.display.update()
if __name__ == '__main__':
main()
运行效果:

二、显示背景
1. 添加图片
点击如下地址下载素材
https://www.itprojects.cn/58.html
2. 显示一张图片
代码如下
import time
import pygame
def main():
# 初始化pygame
pygame.init()
# 创建用来显示画面的对象(理解为相框)
screen = pygame.display.set_mode((750, 667))
# 游戏背景图片
background_img = pygame.image.load("images/bg.jpg")
# 主循环
while True:
# 显示游戏背景
screen.blit(background_img, (0, 0))
time.sleep(0.1)
# 显示screen这个相框的内容(此时在这个相框中的内容像照片、文字等会显示出来)
pygame.display.update()
if __name__ == '__main__':
main()
运行效果

3. 通过多张图片实现整体背景
import time
import pygame
def main():
# 初始化pygame
pygame.init()
# 创建用来显示画面的对象(理解为相框)
screen = pygame.display.set_mode((750, 667))
# 游戏背景图片
background_img = pygame.image.load("images/bg.jpg")
# 主循环
while True:
# 显示游戏背景
screen.blit(background_img, (0, 0))
screen.blit(background_img, (0, 270))
screen.blit(background_img, (0, 540))
time.sleep(0.1)
# 显示screen这个相框的内容(此时在这个相框中的内容像照片、文字等会显示出来)
pygame.display.update()
if __name__ == '__main__':
main()

三、鼠标关闭窗口
import sys
import time
import pygame
def main():
# 初始化pygame
pygame.init()
# 创建用来显示画面的对象(理解为相框)
screen = pygame.display.set_mode((750, 667))
# 游戏背景图片
background_img = pygame.image.load("images/bg.jpg")
# 主循环
while True:
# 事件检测(例如点击了键盘、鼠标等)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit() # 退出程序
# 显示游戏背景
screen.blit(background_img, (0, 0))
screen.blit(background_img, (0, 270))
screen.blit(background_img, (0, 540))
time.sleep(0.1)
# 显示screen这个相框的内容(此时在这个相框中的内容像照片、文字等会显示出来)
pygame.display.update()
if __name__ == '__main__':
main()
运行效果

四、显示棋盘
代码
import sys
import time
import pygame
def main():
# 初始化pygame
pygame.init()
# 创建用来显示画面的对象(理解为相框)
screen = pygame.display.set_mode((750, 667))
# 游戏背景图片
background_img = pygame.image.load("images/bg.jpg")
# 游戏棋盘
chessboard_img = pygame.image.load("images/bg.png")
# 主循环
while True:
# 事件检测(例如点击了键盘、鼠标等)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit() # 退出程序
# 显示游戏背景
screen.blit(background_img, (0, 0))
screen.blit(background_img, (0, 270))
screen.blit(background_img, (0, 540))
# 显示棋盘
screen.blit(chessboard_img, (50, 50))
time.sleep(0.1)
# 显示screen这个相框的内容(此时在这个相框中的内容像照片、文字等会显示出来)
pygame.display.update()
if __name__ == '__main__':
main()
运行效果

五、显示棋子
代码
import sys
import time
import pygame
def main():
# 初始化pygame
pygame.init()
# 创建用来显示画面的对象(理解为相框)
screen = pygame.display.set_mode((750, 667))
# 游戏背景图片
background_img = pygame.image.load("images/bg.jpg")
# 游戏棋盘
chessboard_img = pygame.image.load("images/bg.png")
# 棋子
chessboard_map = [
["b_c", "b_m", "b_x", "b_s", "b_j", "b_s", "b_x", "b_m", "b_c"],
["", "", "", "", "", "", "", "", ""],
["", "b_p", "", "", "", "", "", "b_p", ""],
["b_z", "", "b_z", "", "b_z", "", "b_z", "", "b_z"],
["", "", "", "", "", "", "", "", ""],
["", "", "", "", "", "", "", "", ""],
["r_z", "", "r_z", "", "r_z", "", "r_z", "", "r_z"],
["", "r_p", "", "", "", "", "", "r_p", ""],
["", "", "", "", "", "", "", "", ""],
["r_c", "r_m", "r_x", "r_s", "r_j", "r_s", "r_x", "r_m", "r_c"],
]
for row, line in enumerate(chessboard_map):
for col, chess_name in enumerate(line):
if chess_name:
# 将创建的棋子添加到属性map中
chessboard_map[row][col] = [pygame.image.load("images/" + chess_name + ".png"), (50 + col * 57, 50 + row * 57)]
else:
chessboard_map[row][col] = None
# 主循环
while True:
# 事件检测(例如点击了键盘、鼠标等)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit() # 退出程序
# 显示游戏背景
screen.blit(background_img, (0, 0))
screen.blit(background_img, (0, 270))
screen.blit(background_img, (0, 540))
# 显示棋盘
screen.blit(chessboard_img, (50, 50))
# 显示棋盘上的所有棋子
for line_chess in chessboard_map:
for chess in line_chess:
if chess:
screen.blit(chess[0], chess[1])
time.sleep(0.1)
# 显示screen这个相框的内容(此时在这个相框中的内容像照片、文字等会显示出来)
pygame.display.update()
if __name__ == '__main__':
main()
运行效果

更多步骤
更多步骤请访问 https://book.itprojects.cn/01-b29fd8caf9b9ad57558c3a7c84c3de97/index.html
亲自动手实现Python+pygame中国象棋游戏的更多相关文章
- C#中国象棋+游戏大厅 服务器 + 客户端源码
来源:www.ajerp.com/bbs C#中国象棋+游戏大厅 服务器 + 客户端源码 源码开源 C#版中国象棋(附游戏大厅) 基于前人大虾的修改版 主要用委托实现 服务器支持在线人数,大厅桌数的设 ...
- 基于HTML5实现的中国象棋游戏
棋类游戏在桌面游戏中已经非常成熟,中国象棋的版本也非常多.今天这款基于HTML5技术的中国象棋游戏非常有特色,我们不仅可以选择中国象棋的游戏难度,而且可以切换棋盘的样式.程序写累了,喝上一杯咖啡,和电 ...
- 中国象棋游戏Chess(3) - 实现走棋规则
棋盘的绘制和走棋参看博文:中国象棋游戏Chess(1) - 棋盘绘制以及棋子的绘制,中国象棋游戏Chess(2) - 走棋 现在重新整理之前写的代码,并且对于每个棋子的走棋规则都进行了限制,不像之前那 ...
- 中国象棋游戏Chess(2) - 走棋
之前的文章请看:中国象棋游戏Chess(1) - 棋盘绘制以及棋子的绘制 现在实现走棋的功能. 首先需要获取点击到的棋子,用QWidget中的函数 mouseReleaseEvent 实现函数: vo ...
- C/C++编程笔记:C语言打造中国象棋游戏,项目源代码分享!
中国象棋是起源于中国的一种棋,属于二人对抗性游戏的一种,在中国有着悠久的历史.由于用具简单,趣味性强,成为流行极为广泛的棋艺活动. 它是中国棋文化,也是中华民族的文化瑰宝,它源远流长,趣味浓厚,基本规 ...
- Python开发中国象棋实战(附源码)
Pygame 做的中国象棋,一直以来喜欢下象棋,写了 python 就拿来做一个试试,水平有限,电脑走法水平低,需要在下次版本中更新电脑走法,希望源码能帮助大家更好的学习 python.总共分 ...
- Python3+pygame中国象棋 代码完整 非常好 有效果演示
这几天看到抖音上有个妹子下象棋超级猛,我的中国象棋也差不到哪去啊,走 做一个.... 一.运行效果 二.代码 下面的代码用到图片素材(images文件夹),下载地址如下:https://www.itp ...
- 【原创】使用HTML5+canvas+JavaScript开发的原生中国象棋游戏及源码分享
目前已经实现的功能: V1.0 : 实现棋子的布局,画布及游戏场景的初始化V2.0 : 实现棋子的颜色改变V3.0 :实现所有象棋的走棋规则V4.0 : 实现所有棋子的吃子功能 GItHub源码下载地 ...
- GMchess Linux下的中国象棋游戏
gmchess,一款Linux下的中国象棋程序
随机推荐
- GitHub & Hacker & MicroSoft
GitHub & Hacker & MicroSoft GitHub源码被黑客洗劫和勒索事件 微软也未能幸免 https://www.cnbeta.com/articles/tech/ ...
- useful podcast
useful podcast front end podcast https://shoptalkshow.com https://stackoverflow.blog/podcast/ SoundC ...
- spring boot用ModelAndView向Thymeleaf模板传参数
最近在调试一个Spring Boot向Thymeleaf模板传参数的例子,但踩了很多坑,这里就把详细过程记录下来,以供大家参考. 先说下,这里遇到哪些坑呢? 1 我用的是IDEA社区版,这不支持JSP ...
- java中synchronized与Lock的异同
本文转载自java中synchronized与Lock的异同 前言 synchronized和Lock通过互斥保障原子性,能够保护共享数据以实现线程安全,其作用包括保障原子性.可见性.有序性 常见问题 ...
- 一些小Tip
导语 个人感悟,持续更新中... 正文 无论NIO还是AIO,都没有在数据传输过程(tcp/udp)作革命性的创新.他们在传输过程的效率和传统BIO是一样的,还是会产生阻塞(网络延迟,Socket缓冲 ...
- InnoDB 的记录结构和页结构
本文转载自InnoDB 的记录结构和页结构 概述 InnoDB将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,中页的大小一般为16KB.也就是在一般情况下,一次最少从磁盘中读取16KB的内 ...
- Python基础之:数字字符串和列表
目录 简介 数字 字符串 字符串对象str 列表 简介 Python的主要应用是进行科学计算,科学计算的基础就是数字,字符串和列表.本文将会详细的给大家介绍一下这三个数据类型的使用情况. 数字 数字是 ...
- banner自用图床
放些常用的图做图床,也不在别的平台用.
- SpringBoot整合MyBatis-Plus框架(代码生成器)
MyBatis-Plus的简介 Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 代码生成器 通用的CU ...
- C#测试--内部类测试
C#测试--内部类测试 在被测试的代码库的AssemblyInfo.cs中添加"[assembly: InternalsVisibleTo("UnitTest项目名称") ...