象棋小游戏(pygame)总体分析及资源准备
源码及资源请前往github获取
如果觉得还不错的话,请赏个 star 呗。
点击查看象棋小游戏系列目录导航
上边是我初步构思之后画出的一个结构图:
思路解析:
1、首先分析游戏过程
大概分为三部分
①、随机产生初始棋盘
②、棋子操作
③、判断何时游戏结束
2、对象及对象之间的关系
对象就是32个棋子和棋盘
3、对象分析确定对象的属性和方法
棋子 (将1+士2+象2+马2+车2+炮2+卒*5)*2 = 32 个对象
有三种状态 hidden(未被翻开) active(被翻开) dead(被吃掉)
有两个方法 move (移动) eat(吃子)
标记自己角色的 role 属性 (红色还是黑色)
标记自己类型的 type 属性(将,士,象…)
4、资源的准备
棋盘,棋子,棋子背面
背景音乐等
5、pygame 游戏框架搭建
# 引包
import pygame
from pygame.locals import *
import sys
import traceback# 初始化
pygame.init()
try:pygame.mixer.init()
except:print("您没有音频设备!")raise Exceptionbg_size = width,height = 474,663
screen = pygame.display.set_mode(bg_size)
bg_rect = screen.get_rect()
pygame.display.set_caption("象棋小游戏")# 初始化音乐
pygame.mixer.music.load('./sounds/bg.ogg')# 初始化图片chess_pan_img = pygame.image.load('./pic/chess_bg.png').convert()
chess_select1_img = pygame.image.load('./pic/selected.png').convert()
chess_select2_img = pygame.image.load('./pic/selected2.png').convert()# 定义颜色
WHITE = (255,255,255)
BLACK = (0,0,0)
GREEN = (0,255,0)
RED = (255,0,0)
BLUE = (0,0,255)running = Truedef main():# 初始化音乐pygame.mixer.music.play(-1)clock = pygame.time.Clock()global runningwhile running:# 首先绘制棋盘screen.blit(chess_pan_img, (10, 10))pygame.display.flip()clock.tick(60)#主函数
if __name__ == "__main__":try:main()except SystemExit:print("游戏正常退出")except:print("游戏退出异常")traceback.print_exc()pygame.quit()input()
这时,会出现一个问题,刚开始接触 pygame 时,想了好久,贴图解释:
点击运行之后,鼠标一直是转圈状态,点击就出现无响应,怎么解决呢?
在 main() 函数 while running 中添加
# 监听所有事件
for event in pygame.event.get():if event.type == QUIT:pygame.quit()sys.exit()
再次运行,完美解决,所以出现上述现象的原因应该是短时间内刷新次数太多导致的。
然后我们开始定义我们的棋子对象
import pygame
from pygame.locals import *
import mathRED_ROLE = 0
BLACK_ROLE = 1HIDDEN_STATE = 3
ACTIVE_STATE = 4
DEAD_STATE = 5
CHOOSED_STATE = 6JIANG_TYPE = 11
SHI_TYPE = 12
XIANG_TYPE = 13
CHE_TYPE = 14
MA_TYPE = 15
PAO_TYPE = 16
ZU_TYPE = 17class JiangChess:def __init__(self,rect):self.position = x,y = 86,66self.state = HIDDEN_STATEself.type = JIANG_TYPEself.role = RED_ROLEself.rect = self.b_image.get_rect()def move(self,pos):passdef eat(self):pass
到这儿框架的搭建就差不多了,下一篇博客我们开始具体功能的实现第一部分——棋子随机排布
象棋小游戏(pygame)总体分析及资源准备相关推荐
- python 下棋_Python开发象棋小游戏(总体思路分析)
先来个温馨提示:不会象棋,或者不是很懂象棋规则的朋友,可以先去下载个象棋小游戏,了解一下规则,毕竟后面这些规则都是我们写的啦,但也不能乱写呀,嘎嘎嘎~~~ 切入正题,在开始之前呢,我们要先缕清思路,下 ...
- Pathon开发象棋小游戏
因为参加了python学习竞赛,自学了python的一些基础语法,做了一个中国象棋的小游戏,作为参赛项目,开始之前专门在电脑上下载了一个象棋小游戏,研究了一下象棋规则以及一些按键,接下来就把这个象棋小 ...
- 用 pygame 开发象棋小游戏
源码及资源请前往github获取 如果觉得还不错的话,请赏个 star 呗. 最近因为工作原因,需要学习一下python,学习了基础语法,打算做一个游戏,算做python 学习的一个阶段点. 前段时间 ...
- 象棋小游戏(pygame)代码汇总
源码及资源请前往github获取 如果觉得还不错的话,请赏个 star 呗. 点击查看象棋小游戏系列目录导航 流程图: 效果图: 主函数代码: import pygame from pygame.lo ...
- 象棋小游戏(pygame)棋子随机摆布
源码及资源请前往github获取 如果觉得还不错的话,请赏个 star 呗. 点击查看象棋小游戏系列目录导航 在上一篇博客中,我们实现了需求的分析,流程图,以及框架的搭建,这一篇,我们正式开始具体功能 ...
- 象棋小游戏(pygame)吃子判赢
源码及资源请前往github获取 如果觉得还不错的话,请赏个 star 呗. 点击查看象棋小游戏系列目录导航 流程图依旧需要: 吃子的条件是啥呢? 1.当前自己的棋子有被选中(select_chess ...
- 如何用Python开发象棋小游戏
如何用Python开发象棋小游戏,源代码版本 人生苦短,我用Python! hello 大家好!我是Mark,一个姓马名克的中国人. 最近,我在CSDN当中看到了这一篇文章: 传送门 他详细地讲解了如 ...
- 象棋小游戏(python)棋子的翻转和移动
源码及资源请前往github获取 如果觉得还不错的话,请赏个 star 呗. 点击查看象棋小游戏系列目录导航 继续贴出流程图: 从流程图中可以看出,首先判断棋子有没有被选中(鼠标点击位置是否有棋子) ...
- 用html+css+js实现中国象棋小游戏开发项目
用html+css+js中国象棋小游戏开发项目 最近刚学习完JS的相关课程,跟着老师做了两个小游戏项目,就已经抑制不住内心的小激动,想着要迫不及待的着手准备做一个网页小游戏--中国象棋 由于从小就比较 ...
最新文章
- R语言ggplot2可视化左对齐两个可视化图像的画图区域(边缘)实战
- Focal Loss论文阅读笔记
- Python基础——PyCharm版本——第七章、面向对象编程
- C语言中如何使用宏连接多个字符串(#和##的用法)
- async-await原理解析
- JavaScript 精粹 基础 进阶(5)数组
- 洛谷P1605:迷宫(DFS)
- npkill(安全快速的清理电脑上的 node_modules)
- 小程序毕设作品之微信小程序点餐系统毕业设计(6)开题答辩PPT
- 保护板测试仪上位机软件,蓄电池性能测试仪放电部分与上位机软件设计
- cpu排行计算机专业,最新计算机处理器排名_cpu性能排名梯形图高清大图
- 百度BML-飞桨服务器以及Jetson nano部署实战案例(下)
- 字符间距和文字效果(转)
- IOS收起键盘的几种办法(摘抄自唐巧《iOS开发进阶》)
- 借记卡、贷记卡叫法的由来
- 未能加载文件或程序集“office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”或它的某一个依赖项。拒绝访问
- js鼠标放上去和移出事件
- 高通平台之TP代码分析
- 分享8款令人惊叹的HTML5 Canvas动画特效
- css 实现sticky 吸顶吸底效果
热门文章
- 【D1N910】一线大厂React实践宝典(二) 课程引言+React开发环境
- Win10下adb连接到华为Mate10 Pro手机
- 《程序员必读之软件架构》 [豆瓣评分 7.30] 强调实践、注重实效、轻量级、面向开发者的软件架构指南...
- 讯客分类信息网系统PHP正式版,一款【讯客分类信息系统】最新大气含手机版php源码...
- H5 app js比较版本号
- android隐藏键盘方法,Android中点击隐藏软键盘最佳方法
- 网络流量监控-多合一网络数据包代理工具
- python 继承(史上最详细版本)
- NYOJ 懒省事的小明
- 关于使用Xstream转换java对象时遇到的错误