系列文章目录

第一章:武装飞船

03:设置飞船图片
04:创建Ship类——管理飞船行为的类

一、设置飞船图片

1.注意事项

A.将图片设置为位图bmp格式最简单,因为pygame默认加载位图

B.飞船图片像素大小不能太大,否则飞船会占满整个面板(我的飞船图片像素为80102,游戏面板像素为1200800)

2.素材及工具

图片素材来源:pixabay

网站链接:pixabay

改变图片格式工具:WPS图片工具箱(需要会员!其他图片编辑工具也可以,例如PS)

3.操作步骤

A.在主项目文件夹中创建images文件夹存放图片

B.将BMP格式、像素为80*102的飞船图片存放在images文件夹中

C.飞船图片

二、代码及演示

1.创建Ship类管理飞船行为

在与文件:alien_invasion.py同一文件夹下创建

文件:ship.py

点击查看代码
#渗透小红帽python的学习之路
#外星人入侵小游戏
#ship.py
#管理飞船行为的类 import pygame class Ship():
def __init__(self,screen):
#参数screen用来指定将飞船绘制到什么地方
self.screen = screen
#加载飞船图片并获取其外接矩形
self.image = pygame.image.load('F:/PythonProject/pythongame/images/ship.bmp')
#复制图片路径后需要将斜杠改为反斜杠
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)

2.在屏幕上绘制飞船

修改文件:alien_invasion.py

点击查看代码
import sys

#模块sys用来退出游戏
import pygame
from settings import Setting
#导入刚创建的设置类
from ship import Ship
#导入管理飞船行为的类 def run_game():
pygame.init() #初始化屏屏幕对象
ai_settings = Setting()
# 创建Setting类的实例,并存储在ai_settings变量中 screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height)) #创建显示窗口
pygame.display.set_caption("Alien Invasion")
ship = Ship(screen) #绘制一艘飞船
#开始游戏主循环 while True:
for event in pygame.event.get(): #监听键盘和鼠标事件
if event.type == pygame.QUIT:
sys.exit()
screen.fill(ai_settings.bg_color) #每次循环都会重绘屏幕
ship.blitme() #每次循环时重新绘制飞船
pygame.display.flip() #让最近绘制的屏幕可见 run_game()

3.运行效果

三、学习笔记

1.pygame.image.load此函数可以返回一个表示飞船的surface,参数为存放图片的地址。

2.self.image.get_rect()加载图像后,使用get_rect()获取对应的surface属性rect。

3.rect对象:处理rect对象时可使用矩形四角和中心的x,y坐标。通过这些参数指定矩形的位置。

4.pygame中原点(0,0)位于屏幕左上角,向右下方移动时,坐标值将增大。右下角的坐标值为最大值。

5.self.rect.centerx表示飞船中心坐标的x坐标。

6.self.rect.bottom表示飞船下边缘的y坐标。

7.两个属性设置好的效果为飞船处于屏幕底部中央。

8.blitme()方法可以根据self.rect指定的位置将图像绘制到屏幕上。

有什么不懂的地方在评论区留言哦!希望我的文章能对你有所帮助,如果喜欢我的文章,请点赞收藏并关注!你的认可是对我创作最大的鼓励!

2022-08-20 15:32:58 星期六

Python小游戏——外星人入侵(保姆级教程)第一章 03设置飞船图片 04创建Ship类的更多相关文章

  1. Python小游戏——外星人入侵(保姆级教程)第一章 01创建Pygame窗口 02创建设置类Setting()

    系列文章目录 第一章:武装飞船 01:创建Pygame窗口以及响应用户输入 02:创建设置类Setting() 一.前期准备 1.语言版本 Python3.9.0 2.编译器 Pycharm2022 ...

  2. Python小游戏——外星人入侵(保姆级教程)第一章 07调整飞船速度 08限制飞船活动范围

    系列文章目录 第一章:武装飞船 07调整飞船速度 08限制飞船活动范围 一.代码及演示 1.修改settings 修改文件:settings.py 点击查看代码 #渗透小红帽python的学习之路 # ...

  3. Python小游戏——外星人入侵(保姆级教程)第一章 06让飞船移动

    系列文章目录 第一章:武装飞船 06:让飞船移动 一.驾驶飞船 下面来让玩家能够左右移动飞船.我们将编写代码,在用户按左或右箭头键时做出响应.我们将首先专注于向右移动,再使用同样的原理来控制向左移动. ...

  4. Python小游戏——外星人入侵(保姆级教程)第一章 05重构模块game_functions

    系列文章目录 第一章:武装飞船 05:重构:模块game_functions 一.重构 在大型项目中,经常需要在添加新代码前重构既有代码.重构旨在简化既有代码的结构,使其更容易扩展.在本节中,我们将创 ...

  5. 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)

    写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...

  6. RocketMQ保姆级教程

    大家好,我是三友~~ 上周花了一点时间从头到尾.从无到有地搭建了一套RocketMQ的环境,觉得还挺easy的,所以就写篇文章分享给大家. 整篇文章可以大致分为三个部分,第一部分属于一些核心概念和工作 ...

  7. 自建本地服务器,自建Web服务器——保姆级教程!

    搭建本地服务器,Web服务器--保姆级教程! 本文首发于https://blog.chens.life/How-to-build-your-own-server.html. 先上图!大致思路就是如此. ...

  8. Python小游戏、小程序

    python 小游戏之摇骰子猜大小 python 实现一个双色球生成程序 python-循环与判断练习题

  9. Eclipse for C/C++ 开发环境部署保姆级教程

    Eclipse for C/C++ 开发环境部署保姆级教程 工欲善其事,必先利其器. 对开发人员来说,顺手的开发工具必定事半功倍.自学编程的小白不知道该选择那个开发工具,Eclipse作为一个功能强大 ...

随机推荐

  1. 开发工具-SSMS官方下载地址

    更新记录 2022年6月10日 完善标题. SQL Server Management Studio官方下载地址 https://docs.microsoft.com/en-us/sql/ssms/d ...

  2. 什么是AR技术?AR的价值究竟有多大?

    什么是AR技术? AR技术,解释来说就是增强现实(Augmented Reality),是一种实时地计算摄影机影像的位置及角度并加上相应图像.3D模型的技术,它的目标是把虚拟世界嵌套进真实世界进行互动 ...

  3. BUUCTF-FLAG

    FLAG 16进制打开没看到有什么东西,使用binwalk分离也没看到其他文件,猜测是否使用lsb隐写方式. StegSolve打开 可以看到是压缩包的文件头,save bin保存为zip文件解压 提 ...

  4. mysql InnoDB通过.frm和.ibd恢复表和数据

    ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据.撤销记录.修改buffer和双写buffer.如果file-per-table选项打开的话,该文件则不一 ...

  5. jieba分词的功能和性能分析

    jieba分词问题导引 用户词典大小最大可以有多大 用户词典大小对速度的影响 有相同前缀和后缀的词汇如何区分 对比百度分词的API 问题一:词典大小 从源码大小分析,整个jieba分词的源码总容量为8 ...

  6. NC15553 数学考试

    NC15553 数学考试 题目 题目描述 今天qwb要参加一个数学考试,这套试卷一共有 \(n\) 道题,每道题qwb能获得的分数为 \(a_i\) ,qwb并不打算把这些题全做完, 他想选总共 \( ...

  7. Ubuntu14.04.6配置阿里源

    Ubuntu14.04.6配置阿里源 这两天上手 Ubuntu 系统,因为公司用的是 14.04.6 版本,所以有了一些踩坑记录. 起因是安装完系统我需要安装一个搜狗输入法,过程得安装 fcitx,需 ...

  8. 基于.NetCore开发博客项目 StarBlog - (15) 生成随机尺寸图片

    系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...

  9. C语言整形转字符串的方法

    今天写力扣第九题,里面用到了这个,就做个笔记.   1. char *itoa( int value, char *string,int radix);(stdlib.h)     Windows特有 ...

  10. SSH远程连接学校实验室服务器 一 python版本问题

    问题1: 连接上远程服务器后,输入 python 发现python版本只有2.7 .试图使用以下方式更新: sudo apt install python3.9 会出现如下报错信息: 解决方式: 一般 ...