当前位置: 首页 > news >正文

pygame中多个class类之间的关系

用一个实例介绍一下有关pygame中不同类之间的通信,
详细介绍在代码段有标注,感兴趣的可以复制代码试试:
 1 import pygame
 2 import sys
 3 # -------------------------围墙堆叠---------------------------
 4 brickImage =r"../image/brick.png"
 5 ironImage = r"../image/iron.png"
 6 
 7 pygame.init()
 8 screen=pygame.display.set_mode([800,600])
 9 # 砖块类
10 class Brick(pygame.sprite.Sprite):
11     def __init__(self):
12         pygame.sprite.Sprite.__init__(self)
13         self.image=pygame.image.load(brickImage)
14         self.rect=self.image.get_rect()
15 
16 #         铁块类
17 class Iron(pygame.sprite.Sprite):
18     def __init__(self):
19         pygame.sprite.Sprite.__init__(self)
20         self.image=pygame.image.load(ironImage)
21         self.rect=self.image.get_rect()
22 
23 class Map():
24   def __init__(self):
25       # 初始化砖块群组
26       self.brickGroup=pygame.sprite.Group()
27       # 初始化铁块群组
28       self.ironGroup=pygame.sprite.Group()
29       # 数字代表地图中的位置
30       # 画砖块
31       X1379 = [2, 3, 6, 7, 18, 19, 22, 23]
32       Y1379 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 17, 18, 19, 20, 21, 22, 23]
33 
34       X28 = [10, 11, 14, 15]
35       Y28 = [2, 3, 4, 5, 6, 7, 8, 11, 12, 15, 16, 17, 18, 19, 20]
36 
37       X46 = [4, 5, 6, 7, 18, 19, 20, 21]
38       Y46 = [13, 14]
39 
40       X5 = [12, 13]
41       Y5 = [16, 17]
42       X0Y0 = [(11, 23), (12, 23), (13, 23), (14, 23), (11, 24), (14, 24), (11, 25), (14, 25)]
43       for x in X1379:
44           for y in Y1379:
45               # 实例化砖块类对象
46               self.brick=Brick()
47               # 生砖块的位置
48               self.brick.rect.left,self.brick.rect.top=3+x*24,3+y*24
49 
50                   每循环一次自动将动画添加到精灵组(下同)
51               self.brickGroup.add(self.brick)
52       for x in X28:
53           for y in Y28:
54               self.brick=Brick()
55               self.brick.rect.left,self.brick.rect.top=3+x*24,3+y*24
56               self.brickGroup.add(self.brick)
57       for x in X46:
58           for y in Y46:
59               self.brick=Brick()
60               self.brick.rect.left,self.brick.rect.top=3+x*24,3+y*24
61               self.brickGroup.add(self.brick)
62       for x in X5:
63           for y in Y5:
64               self.brick=Brick()
65               self.brick.rect.left,self.brick.rect.top=3+x*24,3+y*24
66               self.brickGroup.add(self.brick)
67       # for item in X0Y0:
68       for x,y in X0Y0:
69           self.brick=Brick()
70           # self.brick.rect.left,self.brick.rect.top=3+item[0]*24,3+item[1]*24
71           self.brick.rect.left, self.brick.rect.top = 3 + x * 24, 3 + y * 24
72           self.brickGroup.add(self.brick)
73       for x, y in [(0, 14), (1, 14), (12, 6), (13, 6), (12, 7), (13, 7), (24, 14), (25, 14)]:
74           self.iron=Iron()
75           self.iron.rect.left,self.iron.rect.top=3+x*24,3+y*24
76           self.ironGroup.add(self.iron)
77 
78       while True:
79           for event in pygame.event.get():
80               if event.type == pygame.QUIT:
81                   pygame.quit()
82                   sys.exit()
83           self.brickGroup.update()
84           self.ironGroup.update()
85           self.brickGroup.draw(screen)
86           self.ironGroup.draw(screen)
87           pygame.display.update()
88 
89 
90 
91 
92 Map()
更多pygame知识可以关注博客:http://eyehere.net/2011/python-pygame-novice-professional-index/

转载于:https://www.cnblogs.com/Dark-fire-liehuo/p/9724304.html

相关文章:

  • Luogu 1341 无序字母对 - 欧拉路径
  • Hadoop HDFS 文件系统的存储哲学
  • 牛客国庆集训派对Day1-New Game!(几何+最短路)
  • 寻找最长回文字符串
  • JavaScript 中 this的指向
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • Java 里如何实现线程间通信
  • Django框架-AJAX
  • P1044 栈 洛谷(数论)(卡特兰数)
  • 矩阵运算
  • MySQL之架构与历史(一)
  • 函数指针
  • Django admin源码剖析
  • 第53节:Java当中的IO流(上)
  • linux下自动获取并安装软件包 apt-get 的命令介绍
  • .pyc 想到的一些问题
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 4. 路由到控制器 - Laravel从零开始教程
  • Angular4 模板式表单用法以及验证
  • Create React App 使用
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • linux学习笔记
  • Redash本地开发环境搭建
  • RxJS: 简单入门
  • SSH 免密登录
  • uva 10370 Above Average
  • 半理解系列--Promise的进化史
  • 当SetTimeout遇到了字符串
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 前端设计模式
  • 微信开源mars源码分析1—上层samples分析
  • 详解移动APP与web APP的区别
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 译自由幺半群
  • 用element的upload组件实现多图片上传和压缩
  • nb
  • FaaS 的简单实践
  • 移动端高清、多屏适配方案
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #if和#ifdef区别
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (C++)八皇后问题
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (第一天)包装对象、作用域、创建对象
  • (二)fiber的基本认识
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (六)激光线扫描-三维重建
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)关于多人操作数据的处理策略
  • . NET自动找可写目录
  • .net 7 上传文件踩坑