从入门到实践13-1习题

star.py
import pygame
from pygame.sprite import Sprite

class Star(Sprite):
	'''表示单个星星的类'''
	def __init__(self, ai_settings, screen):
		super(Star,self).__init__()
		self.screen = screen
		self.ai_settings = ai_settings
		
		#加载星星图像,并设置其rect属性
		self.image = pygame.image.load('images/star.bmp')
		self.rect = self.image.get_rect()
	
		#每个星星都在屏幕左上角附近
		self.rect.x = self.rect.width
		self.rect.y = self.rect.height
		
		#存储星星的准确位置
		self.x =  float(self.rect.x)
		
	def blitme(self):
		'''在指定位置绘制星星'''
		self.screen.blit(self.image, self.rect)
function.py
import sys
import pygame
from star import Star


def check_keys():
	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			sys.exit()
			
def get_number_stars_x(ai_settings, star_width):
	'''计算每行可容纳多少星星'''
	available_space_x = ai_settings.screen_width - 2 * star_width
	number_star_x = int(available_space_x / (2 * star_width))
	return number_star_x


def get_number_rows(ai_settings, star_height):
	'''计算屏幕可容纳多少行星星'''
	available_space_y = (ai_settings.screen_height - 
						(3 * star_height))
	number_rows = int(available_space_y / (2 * star_height))
	return number_rows
	
	
def create_star(ai_settings, screen, stars, star_number, row_number):
	"""创建一个星星并将其放在当前行"""
	star = Star(ai_settings, screen)
	star_width = star.rect.width
	star.x = star_width + 2 * star_width * star_number
	star.rect.x = star.x
	star.rect.y = star.rect.height + 2 * star.rect.height * row_number
	stars.add(star)
	
def create_fleet(ai_settings, screen, stars):
	"""创建星星群"""
	#创建一个星星,并计算一行可容纳多少个星星
	star = Star(ai_settings, screen)
	number_stars_x = get_number_stars_x(ai_settings, star.rect.width)
	number_rows = get_number_rows(ai_settings, star.rect.height)
	#创建星星群
	for row_number in range(number_rows):
		for star_number in range(number_stars_x):
			create_star(ai_settings, screen, stars, star_number, row_number)		

def update_screen(ai_settings, screen, stars):
		'''更新屏幕上的图像,并切换到新屏幕'''	
		#每次徐循环时都重绘屏幕
		screen.fill(ai_settings.bg_color)
		stars.draw(screen)
				
		#让最近绘制的屏幕可见
		pygame.display.flip()
setting.py
class Settings():
		def __init__(self):
			#初始化游戏的设置
			#屏幕设置
			self.screen_width = 1200
			self.screen_height = 800
			self.bg_color = (0,0,0)
#13-1
import pygame
from pygame.sprite import Group
from setting import Settings
importfunction as gf

def run_game():
	#初始化游戏并创建一个屏幕对象
	pygame.init()
	ai_settings = Settings()
	screen = pygame.display.set_mode(
		(ai_settings.screen_width, ai_settings.screen_height))	
	pygame.display.set_caption("Star")
	
	stars = Group()
	gf.create_fleet(ai_settings, screen, stars)
	
	#开始游戏的循环
	while True:
		gf.check_keys()
		gf.update_screen(ai_settings, screen, stars)
	
run_game()

遗忘了如下代码导致运行出现错误


def check_keys():
	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			sys.exit()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值