【Python编程:从入门到实践】第十三章:外星人

13-1 星星 :找一幅星星图像,并在屏幕上显示一系列整齐排列的星星。 

start.py

import pygame
from pygame.sprite import Sprite
class Start(Sprite):
	"""docstring for Start"""
	def __init__(self, screen):
		super(Start, self).__init__()
		self.screen = screen
		self.image = pygame.image.load('images/start.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)
		
screen.py

import pygame
import sys
from start import Start
from pygame.sprite import Group
def screen():
	pygame.init()
	screen = pygame.display.set_mode((1200,800))
	bg_color = (255,255,255)
	pygame.display.set_caption("all start")
	start = Group()
	while True:
		for event in pygame.event.get():
			if event.type == pygame.QUIT:
				sys.exit()
		create_start(start,screen)
		screen.fill(bg_color)
		start.draw(screen)
		pygame.display.flip()
def create_start(start,screen):
	start1 = Start(screen)
	start_width = start1.rect.width
	avaliable_x = 1200 - 2*start_width
	number_x = int(avaliable_x / (2 * start_width))
	start_height = start1.rect.height
	avaliable_y = 800 - 2* start_height
	number_y = int (avaliable_y / (2 * start_height))
	for n_y in range(number_y):
		for n_x in range(number_x):
			st = Start(screen)
			st.x = start_width + 2 * start_width * n_x
			st.y = start_height + 2 * start_height * n_y
			st.rect.x = st.x
			st.rect.y = st.y
			start.add(st)
screen()
结果:



13-2 更逼真的星星 :为让星星的分布更逼真,可随机地放置星星。本书前面说过,可像下面这样来生成随机数:

from random import randint 

random_number = randint(-10,10)

start.py

同上

screen.py

import pygame
import sys
from start import Start
from pygame.sprite import Group
from random import randint
def screen():
	pygame.init()
	screen = pygame.display.set_mode((1200,800))
	bg_color = (255,255,255)
	pygame.display.set_caption("all start")
	start = Group()
	while True:
		for event in pygame.event.get():
			if event.type == pygame.QUIT:
				sys.exit()
		create_start(start,screen)
		screen.fill(bg_color)
		start.draw(screen)
		pygame.display.flip()
def create_start(start,screen):
	start1 = Start(scr
  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值