暂无分类
暂无标签
发布于2020-06-18 22:39 阅读(268) 评论(0) 点赞(15) 收藏(1)
0
1
2
3
4
5
6
7
8
9
目标 —— 使用 面相对象 设计 飞机大战游戏类
PlaneGame
类如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3YfAPO4n-1592320505799)(media/15025159832322/009_%E6%B8%B8%E6%88%8F%E4%B8%BB%E7%A8%8B%E5%BA%8F.png)]
提示 根据 职责 封装私有方法,可以避免某一个方法的代码写得太过冗长
如果某一个方法编写的太长,既不好阅读,也不好维护!
__init__()
会调用以下方法:方法 | 职责 |
---|---|
__create_sprites(self) |
创建所有精灵和精灵组 |
start_game()
会调用以下方法:方法 | 职责 |
---|---|
__event_handler(self) |
事件监听 |
__check_collide(self) |
碰撞检测 —— 子弹销毁敌机、敌机撞毁英雄 |
__update_sprites(self) |
精灵组更新和绘制 |
__game_over() |
游戏结束 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SX0lCOhH-1592320505853)(media/15025159832322/011_%E7%A8%8B%E5%BA%8F%E6%96%87%E4%BB%B6%E8%81%8C%E8%B4%A3.png)]
plane_main
plane_sprites
plane_main.py
文件,并且设置为可执行import pygame
from plane_sprites import *
class PlaneGame(object):
"""飞机大战主游戏"""
def __init__(self):
print("游戏初始化")
def start_game(self):
print("开始游戏...")
if __name__ == '__main__':
# 创建游戏对象
game = PlaneGame()
# 开始游戏
game.start_game()
__init__()
代码如下:def __init__(self):
print("游戏初始化")
# 1. 创建游戏的窗口
self.screen = pygame.display.set_mode((480, 700))
# 2. 创建游戏的时钟
self.clock = pygame.time.Clock()
# 3. 调用私有方法,精灵和精灵组的创建
self.__create_sprites()
def __create_sprites(self):
pass
- 常量 —— 不变化的量
- 变量 —— 可以变化的量
应用场景
700
常量的定义
常量的好处
提示:Python 中并没有真正意义的常量,只是通过命名的约定 —— 所有字母都是大写的就是常量,开发时不要轻易的修改!
代码调整
plane_sprites.py
中增加常量定义import pygame
# 游戏屏幕大小
SCREEN_RECT = pygame.Rect(0, 0, 480, 700)
plane_main.py
中的窗口大小self.screen = pygame.display.set_mode(SCREEN_RECT.size)
start_game()
基础代码如下:def start_game(self):
"""开始游戏"""
print("开始游戏...")
while True:
# 1. 设置刷新帧率
self.clock.tick(60)
# 2. 事件监听
self.__event_handler()
# 3. 碰撞检测
self.__check_collide()
# 4. 更新精灵组
self.__update_sprites()
# 5. 更新屏幕显示
pygame.display.update()
def __event_handler(self):
"""事件监听"""
for event in pygame.event.get():
if event.type == pygame.QUIT:
PlaneGame.__game_over()
def __check_collide(self):
"""碰撞检测"""
pass
def __update_sprites(self):
"""更新精灵组"""
pass
@staticmethod
def __game_over():
"""游戏结束"""
print("游戏结束")
pygame.quit()
exit()
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e3s1ba3a-1592320505859)(media/15025159832322/010_%E7%B2%BE%E7%81%B5%E7%BB%84%E7%A1%AE%E5%AE%9A.png)]
def __create_sprites(self):
"""创建精灵组"""
# 背景组
self.back_group = pygame.sprite.Group()
# 敌机组
self.enemy_group = pygame.sprite.Group()
# 英雄组
self.hero_group = pygame.sprite.Group()
def __update_sprites(self):
"""更新精灵组"""
for group in [self.back_group, self.enemy_group, self.hero_group]:
group.update()
group.draw(self.screen)
原文链接:https://blog.csdn.net/HeElLose/article/details/106797741
0
1
2
3
4
5
6
7
8
9
作者:你太美丽
链接: https://www.pythonheidong.com/blog/article/424266/c7f87b88ba248f191718/
来源: python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2019 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系z452as@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!