PYTHON编程从入门到实践 第3版答案

大家好,小编来为大家解答以下问题,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,
  • 26
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值