星际争霸之小霸王之小蜜蜂(二)--类的使用

简介: 星际争霸之小霸王之小蜜蜂(二)--类的使用

前言

昨天我们设置好了窗口,下面我们需要向窗口中添加元素了。

一、将设置内容写在一个类里

我个人理解书上的意思是要创建一个类,将所有需要设置的属性都放在这里,这样后期需要升级改变的时候,在这里修改参数就行了,例如我们昨天设置的窗口背景颜色,可以将这个参数设置放在设置类里,需要的时候再调用,这就是面向对象的编程思维。那么我们现在建立一个settings文件,在里面创建一些参数。代码如下:

class Settings():
    def __init__(self):
        self.screen_width = 800
        self.screen_height = 600
        self.bg_color = (220,220,220)

可以看出,我们创建了窗口的长和宽,然后设置了颜色,颜色我做了修改,感觉昨天的青色不好看。现在我们需要修改alien_invasion文件里的代码,导入这个类,从而调用这些参数,我们看代码。

import sys
import pygame
import settings
def run_game():
    pygame.init()
    new_setting=settings.Settings()
    screen = pygame.display.set_mode((new_setting.screen_width,new_setting.screen_height))
    pygame.display.set_caption("Alien Invasion")
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
        screen.fill(new_setting.bg_color)
        pygame.display.flip()
run_game()

可以看出,我们首先使用import导入我们创建的类,然后实例化setting类,实例为new_setting,最后通过new_setting调用提前设置好的参数。单看这一段代码来说比之前好像要复杂一点,也要难理解一点,但是当你的程序达到一定的复杂度以后,这样分类编写会更容易维护。下面我们来看一下效果。

运行成功,颜色也变成了灰色(我看是灰色)

二、设置小蜜蜂的造型

书上说,pygame默认使用bmp位图,使用其他的文件类型,要安装库,这么麻烦吗?在网上找一下说明看看。

pygame.image.load可以加载多种类型的图片文件,包括但不限于:

  • BMP
  • GIF
  • JPG/JPEG
  • PNG
  • TGA
  • TIFF
  • WebP

需要注意的是,如果加载的图片文件不是pygame支持的格式,将会抛出异常。

按照网上说的,pygame支持的格式有很多啊,我们就偏偏用JPG格式试试(我个人就喜欢jpg格式)

现在我们需要注意两点:一是背景为透明的jpg图片,二是免费的。找了半天没找到,为了不浪费时间,找了一只猫,凑合用吧,大家欣赏下。

三、设置猫蜜蜂的参数

按照之前的编程思维,我们要创建单独的类来定义这只猫蜜蜂的各种属性,包括大小、位置、动作等。跟书上一样,我们创建ship文件,不知道为什么命名为ship,ship不是船的意思吗?


首先我们先展示类里面的代码:

import pygame
class Ship():
    def __init__(self,screen):
        self.screen = screen
        self.image = pygame.image.load('cat.webp')
        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)

这一段代码不是很好理解,书上讲的也不是很清楚,我先说说我的初步理解,后面如果发现错了,再进行解释。


首先初始化方法里传入的screen就是我们的窗口,然后我们导入我们下载好的图片“cat.webp”(我们看看这个格式能不能直接用)。


self.rect = self.image.get_rect()这段代码就是获取图片的边框,同理,下面的代码就是获取窗口的边框,然后通过centerx和bottom属性将图片实现在屏幕最下边居中对齐。


最后我们定义了blitme方法,它里面调用了pygame的blit函数,blit函数的作用就是将图片绘制到屏幕上,self.rect已经设置好了位置。


四、绘制猫蜜蜂到窗口

下面我们只需要在主程序调用Ship类的blitme方法就可以绘制猫蜜蜂到指定位置。

import sys
import pygame
import settings
from ship import Ship
def run_game():
    pygame.init()
    new_setting=settings.Settings()
    screen = pygame.display.set_mode((new_setting.screen_width,new_setting.screen_height))
    ship = Ship(screen)
    pygame.display.set_caption("Alien Invasion")
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
        screen.fill(new_setting.bg_color)
        ship.blitme()
        pygame.display.flip()
run_game()

这段代码就没有设么好解释的了,只是调用函数。我们直接看效果。


成功了,证明图片的格式不是bmp也是可以的,但是我们的猫蜜蜂有点太大了,我们需要把它改小一点,最好在窗口里像一只小苍蝇,这里就不赘述怎么改了,我们直接看效果。

嗯,这样效果好多了。


总结

今天主要学习如何设置绘制图像的位置,以及如何绘制。

相关文章
|
存储
数据结构 B树
数据结构 B树
95 0
|
7月前
|
Python
获取中国某省份的ip地址,随机IP
该代码使用Python爬取福建省的IP段数据,通过requests和lxml库获取网页内容并解析,提取省、市、区及IP段信息,保存到Pandas DataFrame中。接着根据IP段随机生成IP地址,并将结果写入Excel文件。
|
5月前
|
运维 监控 BI
15 分钟快速上手 Odoo
Odoo 是一款备受企业青睐的开源 ERP 系统,但传统基于 Docker 的部署方式存在安装复杂、镜像拉取困难、配置繁琐及管理不便等问题。Websoft9 提供了一键部署方案,通过云原生应用模板和自动化运维工具,用户可在 15 分钟内快速上手 Odoo,享受零门槛、极速交付与自动化运维体验。本文还深度体验了 Odoo 的核心功能模块,如 CRM 智能客户管理、项目管理敏捷协作、库存精准控制及报表零代码定制等功能,助力企业高效开启数字化转型之旅。
155 5
|
Unix 索引
生信教程 | 基于PSMC估计有效群体大小
生信教程 | 基于PSMC估计有效群体大小
|
监控 网络协议 安全
Verilog代码在上网行为管理软件中的网络设备控制与协议分析
**Verilog摘要:** Verilog是硬件描述语言,用于数字电路设计和网络设备控制。它在上网行为管理软件中用于控制路由器、交换机等,例如通过简单模块控制端口状态。此外,Verilog还支持协议分析,如解析以太网帧提取MAC地址。监控数据可结合Verilog实现自动化提交,例如通过HTTP发送请求到服务器,实现实时监控和响应。这些示例展示了Verilog在网络安全和性能优化中的应用潜力。
185 1
|
安全 Java jenkins
Jenkins+svn自动化部署
Jenkins+svn自动化部署
571 1
Jenkins+svn自动化部署
|
安全 Java 数据库
Remember 功能源码跟踪|学习笔记
快速学习 Remember 功能源码跟踪
Remember 功能源码跟踪|学习笔记
|
SQL
SQL面试题:按照时间序列补全数据
HiveSQL面试题,根据时间以最新数据补全字段缺失值
842 0
|
移动开发 前端开发 weex
详解|天猫搜索前端技术历代记
作者从 17 年双十一前开始接手天猫搜索前端,开发第一个需求—— H5 凑单页,到今天已经将近两年了。在这两年里,天猫搜索的前端体系发生了比较大的变化。今天分享一篇阶段性的总结文章,记录天猫搜索前端技术的过去、现在,以及自己作为业务目前的唯一前端对未来的思考。
2847 0
详解|天猫搜索前端技术历代记
|
存储 大数据 关系型数据库
HiStore:阿里巴巴海量数据场景下的OLAP解决方案
7月27日,云栖社区、阿里中间件举办了首届阿里巴巴中间件技术峰会,揭秘阿里10年分布式技术干货。在首届阿里巴巴中间件技术峰会上,阿里巴巴中间件技术专家焦方飞为大家分享阿里巴巴海量数据场景下的OLAP解决方案,此外还对阿里新推出的高性能时序数据库进行了简单介绍,精彩不容错过。
5664 0