python外星人入侵的详细_Python外星人入侵游戏(三):创建飞船类
今日任务:
添加飞船类
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外星人入侵游戏(三):创建飞船类相关推荐
- python打砖块游戏算法设计分析_python小游戏--打砖块的实现与讲解(python自学总结系列)...
我在系统地学习了python之后,觉得python带给我很多乐趣,因此在网络平台GitHub上寻找了这个小游戏,这个小游戏是一个很经典的游戏,只是打砖块,但是可以很好地入门并体现python的乐趣. ...
- python高端写法_python高级篇:使用元类方式实现单例模式详解
对于编程开发的朋友来说,设计模式应该最为熟悉不过了,如果要谈到哪种设计模式最为简单,也最容易理解,首当其冲的"单例模式"应该不为过了.本文主要讲解在python3中如何使用元类实现 ...
- python外星人入侵添加音效_python外星人入侵游戏打包
笔者配置:win10,python3.7 步骤: 1.使用pip install pyinstaller安装pyinstaller包,如下,貌似顺带装了pywin32等其他包. 2.cmd中进入要打包 ...
- 垃圾短信识别python步骤详细_python数据挖掘第三篇-垃圾短信文本分类
文本分类总体上包括8个步骤.数据探索分析->数据抽取->文本预处理->分词->去除停用词->文本向量化表示->分类器->模型评估.重要python库包括num ...
- python教程很详细_Python编程入门教程:从入门到高级,非常详细
本文的资料和内容是我下载的,觉得非常有用,于是转过来大家瞧瞧: 这里给初学Python的朋友提供一些建议和指导吧.大神请无视, 俗话说:授人以鱼不如授人以渔.所以我这里只是阐述学习过程,并不会直接详细 ...
- python写界面文字游戏_Python:pygame游戏编程之旅五(游戏界面文字处理详解)
再简单的游戏界面中均涉及文字处理,本节主要解读一下pygame模块中对文字及字体的处理方式. 同样,以实例进行讲解,先看看代码: #!/usr/bin/env python # -*- coding: ...
- and true和if都是python语言的保留字_python自学 第三章 python语言基础之保留字、标识符与内置函数...
一.保留字(关键字) 保留字是 python 语言中一些已经被赋予特定意义的单词,这就要求开发者在开发程序时,不能用这些保留字作为标识符给变量.函数.类.模板以及其他对象命名. Python 保留字一 ...
- python幂次方计算公式_python中计算三次方怎么表示
Python中幂运算可以使用**表示,Python中三次方可以表示为x**3,即为x的3次方. **是Python中算术运算符表示幂运算,Python中算术运算符还有加.减.乘.除.取模.取整除. 运 ...
- python多线程的作用_Python多线程中三个函数的强大功能简介
在Python多线程中有三个比较简单的函数,在实际的相关操作中你对这一实际操作是否了解?是否对其感兴趣?如果你想对Python多线程的开发与多线程程序及相关实际操作方案有所了解的话,你就可以点击以下的 ...
最新文章
- 应用上架被拒2.1问题
- WebRTC Audio 接收和发送的关键过程
- 【图示,简单明了】HttpServlet中getAttribute和getParameter的区别——【javaweb系列学习笔记】
- java房源信息管理的代码_crawler4j源码学习(2):Ziroom租房网房源信息采集爬虫
- python 对象的异或运算符_python的运算符
- C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法
- 候选JEP:记录和密封类型
- python word
- int x = 0x13 c语言,2004年7月全国高等教育自学考试微型计算机原理与接口技术试题...
- 仿QQ打开网址显示的当前网页非官方页面
- jquery粘贴按钮_实现前端点击按钮自动复制剪贴板功能
- HTTP协议详解(经典)
- Java基础编程题50道题
- php 限定字符长度,PHP中字符串的最大长度是多少?
- FutureMapping:空间人工智能的计算结构
- [爬虫笔记02] Scrapy爬取阳光问政平台
- ESP分区和MSR分区下怎么重做GHOST系统
- 【vue】微信sdk中接口和标签本地调试
- php 抽奖活动_php 积分抽奖活动(大转盘)
- 微服务模式笔记:服务分解策略