Python 实践——外星人入侵小游戏(上)
目录
- Python 实践——外星人入侵小游戏(上)
- 安装pip/pygame
- 1.开始项目
- 2.设置屏幕背景色
- 基本操作:
- 3. 设置类
- 4. 添加飞船图像
- 5.导入程序
- 基本操作:
- 完整:
- 总结
安装pip/pygame
先查询python路径,然后在终端输入:
/路径/python3 -m ensurepip --default-pip
通过pip安装pygame:
/路径/python3 -m pip install pygame
新建一个python文档:
import pygame
没报错就说明安装成功
1.开始项目
import sys
import pygame
def run_game():# 初始化游戏并创建一个屏幕对象pygame.init() #初始化screen = pygame.display.set_mode((1200,800)) #设置屏幕大小pygame.display.set_caption("Alien Invasion")# 开始游戏的主循环while True:#事件(用户的操作)循环# 监视键盘和鼠标事件for event in pygame.event.get():#检测事件-操作if event.type == pygame.QUIT:sys.exit()# 让最近绘制的屏幕可见pygame.display.flip() #更新屏幕
run_game()
注意:
名称不要叫pygame.py,他会覆盖真正的pygame
pygame 开发游戏
sys 退出游戏
.get()检测事件
.display.flip() (flip快速翻动)随着操作改变,不断更新屏幕,以显示元素的新位置。
2.设置屏幕背景色
基本操作:
(1)bg_color=(,) RGB 表示
(2)调用screen.fill(bg_color),这个方法只接受一个实参(颜色)
RGB
这种颜色由红色、绿色和蓝色值组成,其中每个值的可能取值范围都为0~255。颜色值(255,0,0)表示红色,(0,255,0)表示绿色,而(0,0,255)表示蓝色。通过组合不同的RGB值,可创建1600万种颜色。在颜色值(230,230,230)中,红色、蓝色和绿色量相同,它将背景设置为一种浅灰色。
3. 设置类
可以在另一个py文件中把你的规定都写好,然后直接导入到游戏文件里。
settings.py
class Setting():def __init__(self):self.screen_width= 1200self.screen_height= 800self.bg_color=(230,230,230)
alien.py
import sys
import pygame
from settings import Setting
def run_game():# 初始化游戏并创建一个屏幕对象pygame.init() #初始化ai_settings=Setting()#传递元组screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.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(ai_settings.bg_color)pygame.display.flip() #更新屏幕
run_game()
注意:
screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
传递元组,而不是参数。
4. 添加飞船图像
- 写代码之前:
在pycharm中创建一个叫images的文件夹
然后把图片粘贴到其中,refactor成ship.bmp
(根据需求,可以在ps里调整一下像素大小)
注意背景颜色要一样 - 代码操作:
初始化
加载图像.image.load(‘路径.bmp’)
矩形处理图形 self.rect/.get_rect()
矩形处理屏幕self.screen_rect
放置位置 .screen_rect.位置
def
.blit(图形,屏幕) 位块传输,绘制
import pygame
class Ship():def __init__(self,screen):self.screen = screen# 加载飞船图像self.image = pygame.image.load('images/ship.bmp')#处理图形self.rect = self.image.get_rect()#处理屏幕self.screen_rect = screen.get_rect()# 将每艘新飞船放在屏幕底部中央self.rect.centerx = self.screen_rect.centerxself.rect.bottom = self.screen_rect.bottomdef blitme(self):self.screen.blit(self.image, self.rect)
注意:
.bmp形式 位图
.表示访问属性
· get_rect():像处理矩形一样处理游戏元素.
·要将游戏元素居中,可设置相应rect对象的属性center、centerx或centery。要让游戏元素与屏幕边缘对齐,可使用属性top、bottom、left或right;要调整游戏元素的水平或垂直位置,可使用属性x和y,它们分别是相应矩形左上角的x和y坐标。
·在Pygame中,原点(0,0)位于屏幕左上角,向右下方移动时,坐标值将增大。在1200×800的屏幕上,原点位于左上角,而右下角的坐标为(1200,800)。
5.导入程序
基本操作:
from xx import
ship=Ship(screen) 创建实例
ship.blitme()
完整:
import sys
import pygame
from settings import Setting
from ship import Ship
def run_game():# 初始化游戏并创建一个屏幕对象pygame.init() #初始化ai_settings=Setting()#传递元组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()
总结
欢迎你进入编写自己的游戏阶段!我把很长的一章切分成了几个部分。本章你在画布中导入了一个飞船的图片。你完成了如下几个部分:开始项目(初始化/循环/屏幕可见/更新屏幕);设置背景颜色;设置类(预设规定);添加飞船图像;导入程序。