@Python编程从入门到实践 Python项目练习

七、创建Passenger类

创建passenger.py文件,创建Passenger类,控制乘客属性和行为

# passenger.py
import pygame
from pygame.sprite import Sprite class Passenger(Sprite):
"""表示单个乘客的类"""
def __init__(self, ai_settings, screen):
"""初始乘客并设置其起始位置"""
super(Passenger, self).__init__()
self.screen = screen
self.ai_settings = ai_settings # 加载乘客图像,并设置其rect属性
self.images = [pygame.image.load('images/passenger{}.png'.format(i))
for i in range(1, 9)]
# self.rect = self.images[1].get_rect() # self.image = pygame.image.load('images/passenger1.bmp')
self.image = pygame.transform.scale(self.images[0], (50, 50))
self.image_squence = 0
self.rect = self.image.get_rect() # 每个乘客最初都在屏幕左上角附近
self.rect.x = self.rect.centerx - 20
self.rect.y = self.rect.centery - 20 # 存储乘客的准确位置
self.x = float(self.rect.x) def blitme(self):
"""在指定位置绘制乘客"""
self.image = pygame.transform.scale(self.images[self.image_squence], (50, 50))
self.image_squence += 1
if self.image_squence > 7:
self.image_squence = 0 self.screen.blit(self.image, self.rect)
# self.image = self.images[1] def check_edges(self):
"""如果外星人位于屏幕边缘,就放回True"""
screen_rect = self.screen.get_rect()
if self.rect.right >= screen_rect.right:
return True
elif self.rect.left <= 0:
return True def update(self):
"""向右或向左移动外星人"""
self.x += (self.ai_settings.passenger_speed_factor *
self.ai_settings.fleet_direction)
self.rect.x = self.x

八、创建game_stats类

创建game_stats.py,game_stats类用于跟踪游戏统计信息,记录飞机和乘客发生的碰撞

class GameStats():
"""跟踪游戏的统计信息"""
def __init__(self, ai_settings):
"""初始化统计信息"""
self.ai_settings = ai_settings
self.reset_stats()
self.game_active = True def reset_stats(self):
"""初始化在游戏运行期间可能变化的统计信息"""
self.ships_left = self.ai_settings.ship_limit

Pygame小游戏练习三的更多相关文章

  1. pygame小游戏之坦克大战

    以前在学校的时候无聊的学了会pygame.看了大概一周的教学视频,做出来个坦克大战的小游戏 Python3.5  pycharm import pygame,sys,time from random ...

  2. web版扫雷小游戏(三)

    ~~~接上篇,上篇介绍了游戏实现过程中第一个比较繁琐的地方,现在展现在玩家面前的是一个有血有肉的棋盘,从某种意义上说玩家已经可以开始游戏了,但是不够人性化,玩家只能一个一个节点的点开,然后判断,然后标 ...

  3. Pygame小游戏练习二

    @Python编程从入门到实践 Python项目练习 四.创建Ship类 建立ship.py,创建Ship类,管理飞船行为. # ship.py import pygame class Ship(): ...

  4. Pygame小游戏练习一

    @Python编程从入门到实践 Python项目练习 一.安装Python包Pygame 通过pip安装包工具安装 python3 -m pip --version #查看是否安装pip 确定安装pi ...

  5. Pygame小游戏练习五

    @Python编程从入门到实践 Python项目练习 十一.显示游戏得分及最高分 创建新类Scoreboard,用以显示得分和最高分. # scoreboard.py import pygame.fo ...

  6. Pygame小游戏练习四

    @Python编程从入门到实践 Python项目练习 九.添加Play按钮 一.创建Button类 先让游戏一开始为非活动状态 # game_stats.py # --snip-- self.game ...

  7. 软件设计之基于Java的连连看小游戏(三)——所有功能的实现

    新年快乐!期末接二连三的考试实在太忙了忘记连连看没有更新完,今天想要学习生信时才发现.所以这次直接把连连看所有功能全部放上. 在传统的连连看的基础上,我增加了上传头像的功能,即可以自行上传图片作为游戏 ...

  8. .NET手撸2048小游戏

    .NET手撸2048小游戏 2048是一款益智小游戏,得益于其规则简单,又和2的倍数有关,因此广为人知,特别是广受程序员的喜爱. 本文将再次使用我自制的"准游戏引擎"FlysEng ...

  9. <pygame> 打飞机(小游戏)

    0.游戏的基本实现 ''' 游戏的基本实现 游戏的初始化:设置游戏窗口,绘制图像的初始位置,设定游戏时钟 游戏循环:设置刷新频率,检测用户交互,更新所有图像位置,更新屏幕显示 ''' 1.安装pyga ...

随机推荐

  1. Send Boxes to Alice

    E. Send Boxes to Alice 首先求出每一个位置的前缀和. 对答案进行复杂度为\(\sqrt{a[n]}\)的遍历,因为最后的答案不可能大于\(\sqrt{a[n]}\) for(ll ...

  2. springboot 出现 org.hibernate.LazyInitializationException: could not initialize proxy

    org.hibernate.LazyInitializationException: could not initialize proxy [com.example.shop.dataobject.U ...

  3. CF1214B

    CF1214B 解法: 暴力枚举,时间复杂度 $ O(n) $ CODE: #include<iostream> #include<cstdio> #include<cs ...

  4. iptables 查看对应规则及端口号

    iptables -L -n --line-number

  5. sqli-labs通关记录

    环境搭建:https://www.cnblogs.com/kagari/p/11910749.html 总体感受:sqli-labs还是只适合入门 在此基础上添加了一个flag数据库,库名flag,表 ...

  6. guava常用集合交集,差集,并集,补集操作

    <!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> <grou ...

  7. [Oracle]察看一张表的约束 和 察看一张表的索引

    --察看一张表的约束select table_name,constraint_name,constraint_type from user_constraints where table_name=u ...

  8. Zynq_soc学习

    Zynq_soc学习 SFP高速串行通信得搞来看看 最小系统 PL端时钟配置: 配置DDR控制器,主要是添加DDR正确的型号 外设电平接口配置: BANK0:LVCMOS3.3 BANK1:LVCMO ...

  9. JAVA运维总结篇

    写这篇文章主要目的是完成自己多年来运维JAVA应用的一个总结,相当于个人知识库,以后工作中遇到问题便于临时查阅并不断完善自己的知识体系.     上图,就知道Tomcat在JAVA容器界是多么重要. ...

  10. 什么是DNS?

    什么是DNS域名系统(DNS)是因特网的电话簿.人类通过域名在线访问信息,如nytimes.com或espn.com.Web浏览器通过Internet协议(IP)地址进行交互.DNS将域名转换为IP地 ...