今日任务:

添加飞船类

2.1:添加飞船形象

请在主项目文件夹(alien_invasion)中新建一个文件夹,将其命名为images

并将文件ship.bmp保存到这个文件夹中(也可以是ship.jpg之类的图片)

可以去我的github上下载图片

选择图像时,要特别注意其背景色。请尽可能选择背景透明的图像,这样可使用图像编辑器将其背景设置为任何颜色。图像的背景色与游戏的背景色相同时,游戏看起来最漂亮;你也可以将游戏的背景色设置成与图像的背景色相同。

2.2:创建Ship类

ship.py

import pygame

class Ship:

def __init__(self, screen):

"""初始化飞船并设置初始位置"""

self.screen = screen

# 加载飞船图像并获取其外接矩形

self.image = pygame.image.load('images/ship.png')

self.rect = self.image.get_rect()

self.screen_rect = screen.get_rect()

# 将每艘新飞船放在屏幕底部中央

self.rect.centerx = self.screen_rect.centerx

self.rect.bottom = self.screen_rect.bottom

def blitme(self):

"""在指定位置绘制飞船"""

self.screen.blit(self.image, self.rect)

理解注释

Ship的方法init()接受两个参数:引用self和screen,其中后者指定了要将飞船绘制到什么地方

为加载图像,我们调用了pygame.image.load()。这个函数返回一个表示飞船的surface,而我们将这个surface存储到了self.image中

加载图像后,我们使用get_rect()获取相应surface的属性rect

处理rect对象时,可使用矩形四角和中心的x和y坐标

要将游戏元素居中,可设置相应rect对象的属性center、 centerx或centery。要让游戏元素与屏幕边缘对齐,可使用属性top、 bottom、 left或right

我们将把飞船放在屏幕底部中央。为此,首先将表示屏幕的矩形存储在self.screen_rect中,再将self.rect.centerx(飞船中心的x坐标)设置为表示屏幕的矩形的属性centerx,并将self.rect.bottom(飞船下边缘的y坐标)设置为表示屏幕的矩形的属性bottom。 Pygame将使用这些rect属性来放置飞船图像,使其与屏幕下边缘对齐并水平居中。

我们定义了方法paint(),它根据self.rect指定的位置将图像绘制到屏幕上。

注意:在Pygame中,原点(0, 0)位于屏幕左上角,向右下方移动时,坐标值将增大。在1200×800的屏幕上,原点位于左上角,而右下角的坐标为(1200, 800)。

2.3:在屏幕上绘制飞船

alien_invasion.py

import pygame

import pygame.display as window

from settings import Settings

# 引入Ship类

from ship import Ship

def run_game():

pygame.init()

settings = Settings()

screen = window.set_mode(

(settings.screen_width, settings.screen_height))

window.set_caption("外星人入侵")

# 创建一艘飞船

ship = Ship(screen)

while True:

for event in pygame.event.get():

if event.type == pygame.QUIT:

exit()

screen.fill(settings.bg_color)

# 绘制飞船

ship.blitme()

window.flip()

run_game()

我把pygame.display简称为了windows

我们导入Ship类,并在创建屏幕后创建一个名为ship的Ship实例。必须在主while循环前面创建该实例,以免每次循环时都创建一艘飞船。填充背景后,我们调用ship.paint()将飞船绘制到屏幕上,确保它出现在背景前面。

现在如果运行alien_invasion.py,将看到飞船位于空游戏屏幕底部中央

游戏《外星人入侵》屏幕底部中央有一艘飞船

python外星人入侵的详细_Python外星人入侵游戏(三):创建飞船类相关推荐

  1. python打砖块游戏算法设计分析_python小游戏--打砖块的实现与讲解(python自学总结系列)...

    我在系统地学习了python之后,觉得python带给我很多乐趣,因此在网络平台GitHub上寻找了这个小游戏,这个小游戏是一个很经典的游戏,只是打砖块,但是可以很好地入门并体现python的乐趣. ...

  2. python高端写法_python高级篇:使用元类方式实现单例模式详解

    对于编程开发的朋友来说,设计模式应该最为熟悉不过了,如果要谈到哪种设计模式最为简单,也最容易理解,首当其冲的"单例模式"应该不为过了.本文主要讲解在python3中如何使用元类实现 ...

  3. python外星人入侵添加音效_python外星人入侵游戏打包

    笔者配置:win10,python3.7 步骤: 1.使用pip install pyinstaller安装pyinstaller包,如下,貌似顺带装了pywin32等其他包. 2.cmd中进入要打包 ...

  4. 垃圾短信识别python步骤详细_python数据挖掘第三篇-垃圾短信文本分类

    文本分类总体上包括8个步骤.数据探索分析->数据抽取->文本预处理->分词->去除停用词->文本向量化表示->分类器->模型评估.重要python库包括num ...

  5. python教程很详细_Python编程入门教程:从入门到高级,非常详细

    本文的资料和内容是我下载的,觉得非常有用,于是转过来大家瞧瞧: 这里给初学Python的朋友提供一些建议和指导吧.大神请无视, 俗话说:授人以鱼不如授人以渔.所以我这里只是阐述学习过程,并不会直接详细 ...

  6. python写界面文字游戏_Python:pygame游戏编程之旅五(游戏界面文字处理详解)

    再简单的游戏界面中均涉及文字处理,本节主要解读一下pygame模块中对文字及字体的处理方式. 同样,以实例进行讲解,先看看代码: #!/usr/bin/env python # -*- coding: ...

  7. and true和if都是python语言的保留字_python自学 第三章 python语言基础之保留字、标识符与内置函数...

    一.保留字(关键字) 保留字是 python 语言中一些已经被赋予特定意义的单词,这就要求开发者在开发程序时,不能用这些保留字作为标识符给变量.函数.类.模板以及其他对象命名. Python 保留字一 ...

  8. python幂次方计算公式_python中计算三次方怎么表示

    Python中幂运算可以使用**表示,Python中三次方可以表示为x**3,即为x的3次方. **是Python中算术运算符表示幂运算,Python中算术运算符还有加.减.乘.除.取模.取整除. 运 ...

  9. python多线程的作用_Python多线程中三个函数的强大功能简介

    在Python多线程中有三个比较简单的函数,在实际的相关操作中你对这一实际操作是否了解?是否对其感兴趣?如果你想对Python多线程的开发与多线程程序及相关实际操作方案有所了解的话,你就可以点击以下的 ...

最新文章

  1. 应用上架被拒2.1问题
  2. WebRTC Audio 接收和发送的关键过程
  3. 【图示,简单明了】HttpServlet中getAttribute和getParameter的区别——【javaweb系列学习笔记】
  4. java房源信息管理的代码_crawler4j源码学习(2):Ziroom租房网房源信息采集爬虫
  5. python 对象的异或运算符_python的运算符
  6. C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法
  7. 候选JEP:记录和密封类型
  8. python word
  9. int x = 0x13 c语言,2004年7月全国高等教育自学考试微型计算机原理与接口技术试题...
  10. 仿QQ打开网址显示的当前网页非官方页面
  11. jquery粘贴按钮_实现前端点击按钮自动复制剪贴板功能
  12. HTTP协议详解(经典)
  13. Java基础编程题50道题
  14. php 限定字符长度,PHP中字符串的最大长度是多少?
  15. FutureMapping:空间人工智能的计算结构
  16. [爬虫笔记02] Scrapy爬取阳光问政平台
  17. ESP分区和MSR分区下怎么重做GHOST系统
  18. 【vue】微信sdk中接口和标签本地调试
  19. php 抽奖活动_php 积分抽奖活动(大转盘)
  20. 微服务模式笔记:服务分解策略

热门文章

  1. 【CSDN博客之星】您的支持就是我最大的动力!喜欢本博客的读者,请拿出您宝贵的几秒钟时间来支持一下吧,非常感谢~
  2. 关于思科模拟器7.3.1无法显示登陆窗口的解决方案
  3. jdk1.8新特性之Lambda表达式
  4. Linux的电源管理-休眠与唤醒
  5. java 模拟登录微信_java 微信模拟登录错误,微信改版后不能使用
  6. Angular-CLI工具使用文档翻译
  7. 关于路缘石成型机管理你想象能有几多种变化
  8. matlab解决中文显示乱码
  9. python外星人游戏制作
  10. Transformer 新型神经网络在机器翻译中的应用