源码及资源请前往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)总体分析及资源准备相关推荐

  1. python 下棋_Python开发象棋小游戏(总体思路分析)

    先来个温馨提示:不会象棋,或者不是很懂象棋规则的朋友,可以先去下载个象棋小游戏,了解一下规则,毕竟后面这些规则都是我们写的啦,但也不能乱写呀,嘎嘎嘎~~~ 切入正题,在开始之前呢,我们要先缕清思路,下 ...

  2. Pathon开发象棋小游戏

    因为参加了python学习竞赛,自学了python的一些基础语法,做了一个中国象棋的小游戏,作为参赛项目,开始之前专门在电脑上下载了一个象棋小游戏,研究了一下象棋规则以及一些按键,接下来就把这个象棋小 ...

  3. 用 pygame 开发象棋小游戏

    源码及资源请前往github获取 如果觉得还不错的话,请赏个 star 呗. 最近因为工作原因,需要学习一下python,学习了基础语法,打算做一个游戏,算做python 学习的一个阶段点. 前段时间 ...

  4. 象棋小游戏(pygame)代码汇总

    源码及资源请前往github获取 如果觉得还不错的话,请赏个 star 呗. 点击查看象棋小游戏系列目录导航 流程图: 效果图: 主函数代码: import pygame from pygame.lo ...

  5. 象棋小游戏(pygame)棋子随机摆布

    源码及资源请前往github获取 如果觉得还不错的话,请赏个 star 呗. 点击查看象棋小游戏系列目录导航 在上一篇博客中,我们实现了需求的分析,流程图,以及框架的搭建,这一篇,我们正式开始具体功能 ...

  6. 象棋小游戏(pygame)吃子判赢

    源码及资源请前往github获取 如果觉得还不错的话,请赏个 star 呗. 点击查看象棋小游戏系列目录导航 流程图依旧需要: 吃子的条件是啥呢? 1.当前自己的棋子有被选中(select_chess ...

  7. 如何用Python开发象棋小游戏

    如何用Python开发象棋小游戏,源代码版本 人生苦短,我用Python! hello 大家好!我是Mark,一个姓马名克的中国人. 最近,我在CSDN当中看到了这一篇文章: 传送门 他详细地讲解了如 ...

  8. 象棋小游戏(python)棋子的翻转和移动

    源码及资源请前往github获取 如果觉得还不错的话,请赏个 star 呗. 点击查看象棋小游戏系列目录导航 继续贴出流程图: 从流程图中可以看出,首先判断棋子有没有被选中(鼠标点击位置是否有棋子) ...

  9. 用html+css+js实现中国象棋小游戏开发项目

    用html+css+js中国象棋小游戏开发项目 最近刚学习完JS的相关课程,跟着老师做了两个小游戏项目,就已经抑制不住内心的小激动,想着要迫不及待的着手准备做一个网页小游戏--中国象棋 由于从小就比较 ...

最新文章

  1. R语言ggplot2可视化左对齐两个可视化图像的画图区域(边缘)实战
  2. Focal Loss论文阅读笔记
  3. Python基础——PyCharm版本——第七章、面向对象编程
  4. C语言中如何使用宏连接多个字符串(#和##的用法)
  5. async-await原理解析
  6. JavaScript 精粹 基础 进阶(5)数组
  7. 洛谷P1605:迷宫(DFS)
  8. npkill(安全快速的清理电脑上的 node_modules)
  9. 小程序毕设作品之微信小程序点餐系统毕业设计(6)开题答辩PPT
  10. 保护板测试仪上位机软件,蓄电池性能测试仪放电部分与上位机软件设计
  11. cpu排行计算机专业,最新计算机处理器排名_cpu性能排名梯形图高清大图
  12. 百度BML-飞桨服务器以及Jetson nano部署实战案例(下)
  13. 字符间距和文字效果(转)
  14. IOS收起键盘的几种办法(摘抄自唐巧《iOS开发进阶》)
  15. 借记卡、贷记卡叫法的由来
  16. 未能加载文件或程序集“office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”或它的某一个依赖项。拒绝访问
  17. js鼠标放上去和移出事件
  18. 高通平台之TP代码分析
  19. 分享8款令人惊叹的HTML5 Canvas动画特效
  20. css 实现sticky 吸顶吸底效果

热门文章

  1. 【D1N910】一线大厂React实践宝典(二) 课程引言+React开发环境
  2. Win10下adb连接到华为Mate10 Pro手机
  3. 《程序员必读之软件架构》 [豆瓣评分 7.30] 强调实践、注重实效、轻量级、面向开发者的软件架构指南...
  4. 讯客分类信息网系统PHP正式版,一款【讯客分类信息系统】最新大气含手机版php源码...
  5. H5 app js比较版本号
  6. android隐藏键盘方法,Android中点击隐藏软键盘最佳方法
  7. 网络流量监控-多合一网络数据包代理工具
  8. python 继承(史上最详细版本)
  9. NYOJ 懒省事的小明
  10. 关于使用Xstream转换java对象时遇到的错误