赞
踩
在游戏《外星人入侵》中,玩家控制着一艘最初出现在屏幕底部中央的飞船。玩家可以使用箭头键左右移动飞船,还可使用空格键进行射击。游戏开始时,一群外星人出现在天空中,他们在屏幕中向下移动。玩家的任务是射杀这些外星人。玩家将所有外星人都消灭干净后,将出现一群新的外星人,他们移动的速度更快。只要有外星人撞到了玩家的飞船或到达了屏幕底部,玩家就损失一艘飞船。玩家损失三艘飞船后,游戏结束。
游戏《外星人入侵》将包含很多不同的文件,因此请在你的系统中新建一个文件夹,并将其命名为alien_invasion。请务必将这个项目的所有文件都存储到这个文件夹中,这样相关的 import 语句才能正确地工作。
1、安装pip
安装pip,请访问https://bootstrap.pypa.io/get-pip.py。如果出现对话框,请选择保存文件;如果get-pip.py的代码出现在浏览器中,请将这些代码复制并粘贴到文本编辑器中,再将文件保存为get-pip.py。将get-pip.py保存到计算机中后,你需要以管理员身份运行它,因为pip将在你的系统中安装新包。
2、确认是否安装了pip
在dos窗口输入:pip --version
1、前往python官网https://www.python.org/,点击PypI
2、在搜索框搜索pygame
3、选择要下载的pygame版本
4、点击下载文件
5、下载自己电脑对应的版本
6、把下载好的文件放入python的pip目录下
7、在dos窗口输入对文件对应的指令
8、提示安装成功
import sys import pygame def run_game(): #初始化游戏并创建一个窗口对象 pygame.init() #设置窗口大小为1200*800像素 screen = pygame.display.set_mode((1200, 700)) #设置窗口名字 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()
解释:
1、导入 sys 和 pygame模块, pygame 模块包含开发游戏所需的功能, 通过sys 模块实现退出游戏功能。
2、创建一个run_game()函数,用来提供游戏所需要的窗口界面并对玩家键盘鼠标进行监听。
3、screen是属于屏幕的一个面对象,用于显示游戏元素(飞船、外星人),游戏元素也是一个面对象,我们通过while True的死循环,实现对游戏元素在不同时间和状态在游戏界面里的显示。
import sys import pygame def run_game(): #初始化游戏并创建一个窗口对象 pygame.init() #设置窗口大小为1200*800像素 screen = pygame.display.set_mode((1200, 700)) #设置窗口名字 pygame.display.set_caption("Alien Invasion") #设置背景颜色 bg_color = (230, 230, 230) #开始游戏主循环 while True: #监听键盘和鼠标事件 for event in pygame.event.get(): #设置退出窗口 if event.type == pygame.QUIT: sys.exit() #绘制窗口颜色 screen.fill(bg_color) #绘制窗口 pygame.display.flip() run_game()
解释:
1、创建一个背景颜色存于 bg_color 中,在Pygame中,颜色是以RGB值指定的。这种颜色由红色、绿色和蓝色值组成,其中每个值的可能取值范围都为0~255。颜色值(255, 0, 0)表示红色,(0, 255, 0)表示绿色,而(0, 0, 255)表示蓝色。通过组合不同的RGB值,可创建1600万种颜色。在颜色值(230, 230, 230)中,红色、蓝色和绿色量相同,它将背景设置为一种浅灰色。
2、调用方法 screen.fill() ,用背景色填充屏幕。
每次给游戏添加新功能时,通常也将引入一些新设置。下面来编写一个名为 settings 的模块,其中包含一个名为 Settings 的类,用于将所有设置存储在一个地方,以免在代码中到处添加设置。这样,我们就能传递一个设置对象,而不是众多不同的设置。另外,这让函数调用更简单,且在项目增大时修改游戏的外观更容易:要修改游戏,只需修改settings.py中的一些值,而无需查找散布在文件中的不同设置。
settings.py:
class Settings():
"""存储《外星人入侵》的所有设置的类"""
def __init__(self):
"""初始化游戏的设置"""
# 屏幕设置
self.screen_width = 1200
self.screen_height = 600
self.bg_color = (230, 230, 230)
alien_invasion.py:
import sys import pygame from settings import Settings def run_game(): #初始化游戏并创建一个窗口对象 pygame.init() #初始化设置对象 ai_settings = Settings() #设置窗口大小为1200*800像素 screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height)) #设置窗口名字 pygame.display.set_caption("Alien Invasion") #设置背景颜色 bg_color = (230, 230, 230) #开始游戏主循环 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()
解释:在主程序文件中,我们导入 Settings 类,调用 pygame.init() ,再创建一个 Settings 实例,并
将其存储在变量 ai_settings 中。创建屏幕时,使用了 ai_settings 的属性screen_width 和 screen_height ;接下来填充屏幕时,也使用了 ai_settings 来访问背景色。
ship.py:
class Ship(): def __init__(self, screen): """初始化飞船并设置其初始位置""" self.screen = screen #加载飞船,并获取其外形矩阵 self.imge = pygame.image.load(r'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)
解释:
1、 pygame.image.load(path)方法:打开需要加载的图像,返回值是一个面对象
2、 get_rect()方法: 获取相应面对象的属性(Pygame的效率之所以如此高,一个原因是它让你能够像处理矩形( rect 对象)一样处理游戏元素,即便它们的形状并非矩形。像处理矩形一样处理游戏元素之所以高效,是因为矩形是简单的几何形状。这种做法的效果通常很好,游戏玩家几乎注意不到我们处理的不是游戏元素的实际形状。)
3、 通过处理rect 对象相对于screen_rect对象的位置来规定飞船的初始化位置位于底部中间,即:让rect 对象的centerx与screen_rect对象的centerx相等,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。