大家好,小编来为大家解答以下问题,PYTHON编程从入门到实践 第3版答案,PYTHON编程从入门到实践百度网盘,现在让我们一起来看看吧!
项目一、外星人入侵:使用Python开发游戏
一、武装飞船
1、规划项目
开发大型项目时,制定好规划后再动手编写代码很重要。规划可确保你不偏离轨道,从而提高项目成功的可能性python用turtle画三角形。
《外星人入侵》游戏的描述:
在游戏《外星人入侵》中,玩家控制一艘最初出现在屏幕底部中央的飞船。玩家可以使用箭头键左右移动飞船,还可使用空格键射击。游戏开始时,一群外星人出现在天空中,并向屏幕下方移动。玩家的任务是射杀这些外星人。玩家将所有外星人都消灭干净后,将出现一群新的外星人,其移动速度更快。只要有外星人撞到玩家的飞船或到达屏幕底部,玩家就损失一艘飞船。玩家损失三艘飞船后,游戏结束。
开发的第一个阶段就是船舰一艘飞船,它可左右移动,并且能在用户按空格键时开火。
2、开始游戏项目(已经安装了Pygame)
- 创建Pygame窗口及响应用户输入。
import sys
import pygame
class AlienInvasion:
def __init__(self):
"""管理游戏资源和行为的类"""
pygame.init()
#创建游戏窗口,指定窗口尺寸为1200X800像素,并将显示窗口赋给属性self.screen
self.screen = pygame.display.set_mode((1200,800))
pygame.display.set_caption("Alien Invasion")
def run_game(self):
"""开始游戏的主循环"""
while True:
#监视键盘和鼠标事件
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
#让最近绘制的屏幕可见
pygame.display.flip()
if __name__=='__main__':
#创建游戏实例并运行游戏
ai = AlienInvasion()
ai.run_game()
首先导入模块sys和pygame。模块pygame包含开发游戏所需的功能,玩家退出时,使用工具sys来退出游戏。
赋给属性self.screen的对象是一个surface。在Pygame中,surface是屏幕的一部分,用于显示游戏元素。在这个游戏中每个元素(如外星人或飞船)都是一个surface。pygame.display.set_mode()返回的surface表示整个游戏的窗口。激活游戏动画循环后,每经过一次循环都将自动重绘这个surface,将用户触发的所有变化都反映出来。
这个游戏由方法run_game()控制。该方法包含一个不断运行的while循环,而这个循环包含一个事件循环以及管理屏幕更新的代码。事件是用户玩游戏时执行的操作,如按键或移动鼠标。为程序响应事件,可编写一个事件循环,以侦听事件并根据发生的事件类型执行合适的任务。
函数pygame.event.get()用于访问Pygame检测到的事件,这个函数返回一个列表,其中包含它在上一次被调用后发生的所有之间。所有键盘或鼠标事件都将导致这个for循环运行。
函数pygame.display.flip(),命令Pygame让最近绘制的屏幕可见。它在每次执行while循环时都绘制一个空屏幕,并擦去就屏幕,使得只有新屏幕可见。
- 设置背景色。在alien_invasion.py中设置背景色。
- 创建设置类。setting类用于将所有设置都存储在一个地方,以免在代码中到处添加设置。这样,每当需要访问设置时,只需使用一个设置对象。另外,在项目增大时,这使得修改优秀的外观和行为更容易:要修改游戏,只需要修改settings.py中的一些值。
class Settings:
"""存储游戏《外星人入侵》中所有设置的类"""
def __init__(self):
"""初始化游戏的设置"""
#屏幕设置
self.screen_width = 1200
self.screen_height = 800
self.bg_color = (230,230,230)
修改alien_invasion.py:
import sys
import pygame
from settings import Settings
class AlienInvasion:
def __init__(self):
"""管理游戏资源和行为的类"""
pygame.init()
self.settings=Settings()
self.screen = pygame.display.set_mode(
(self.settings.screen_width,