学习目标:提升自己的编程能力## 标题
*> 可谓是一波三折 ,刚开始看的一本电子书 里面是python2.0的内容,我敲着在3系列的编译器试着2.0的代码可谓好不酸爽
那报错 绝了
学习内容:安装Pygame
1. 使用pip安装Python包`(打开命令行窗口输入)
python -m pip install --user pygame
2. 创建Pygame窗口以及响应用户输入`
import sys
import pygame
from settings import Settings
from ship import Ship
class AlienInvasion:
def __init__(self):
pygame.init()
self.settings = Settings()
self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))
pygame.display.set_caption("alien invasion")
self.ship = Ship(self)
def run_game(self):
# 设置背景色
self.bg_color = (230, 100, 230)
# 游戏主循环
while True:
# 监视键盘和鼠标事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
self.screen.fill(self.settings.bg_color)
self.ship.blitme()
pygame.display.flip()
if __name__ == '__main__':
ai = AlienInvasion()
ai.run_game()
- 导入了模块sys 和pygame ;
模块pygame 包含开发游戏所需的功能。玩家退出时,我们将使用模;块sys 来退出游戏。 - pygame.init() 初始化背景设置,让Pygame能够正确地工作
- 我们导入Settings 类,调用pygame.init() ,再创建一个Settings 实例,并将其存储在变量ai_settings 中。创建屏幕时,使用了ai_settings 的属性screen_width 和screen_height ;接下来填充屏幕时,也使用了ai_settings 来访问背景色;
- 导入Ship 类,并在创建屏幕后创建一个名为ship 的Ship 实例。必须在主while 循环前面创建该实例,以免每次循环时都创建一艘飞船。填充背景后,我们调用ship.blitme() 将飞船绘制到屏幕上,确保它出现在背景前面。现在如果运行alien_invasion.py,将看到飞船位于空游戏屏幕底部中央。
小知识
在游戏中几乎可以使用任何类型的图像文件,但使用位图(.bmp)文件最为简单,因为Pygame默认加载位图。虽然可配置Pygame以使用其他文件类型,但有些文件类型要求你在
计算机上安装相应的图像库。大多数图像都为.jpg、.png或.gif格式,但可使用Photoshop、GIMP和Paint等工具将其转换为位图。
**
在Pygame中,颜色是以RGB值指定的。这种颜色由红色、绿色和蓝色值组成,其中每个值的可能取值范围都为0~255。颜色值(255, 0,
0)表示红色,(0, 255, 0)表示绿色,而(0, 0,
255)表示蓝色。通过组合不同的RGB值,可创建1600万种颜色。在颜色值(230, 230,
230)中,红色、蓝色和绿色量相同,它将背景设置为一种浅灰色。
)
3.创建设置类
- 下面来编写一个名为settings 的模块,其中包含一个名为Settings 的类,用于将所有设置存储在一个地方,以免在代码中到处添加设置。这样,我们就能传递一个设置对象,而不是众多不同的设置。另外,这让函数调用更简单,且在项目增大时修改游戏的外观更容易:要修改游戏,只需修 settings.py中的一些值,而无需查找散布在文件中的不同设置。
- `class Settings:
def __init__(self):
self.screen_width =700
self.screen_height =600
self.bg_color = (230,230,230)`
``import pygame
class Ship:
'''管理飞船的类'''
def __init__(self,ai_game):
self.screen =ai_game.screen
self.screen_rect = ai_game.screen.get_rect()
#加载飞船图像并获得外接矩形
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect()
#对于每艘新飞船,都将其放在屏幕底部的中央
self.rect.midbottom = self.screen_rect.midbottom
def blitme(self):
'在指定的位置绘制new space ship'
self.screen.blit(self.image,self.rect)
>LUCKY