练习
1.
创建一个背景为蓝色的窗口:
bule.py
import sys
import pygame
def blue_draw():
#初始化,并创建一个屏幕窗口对象
pygame.init()
screen = pygame.display.set_mode((400,400))
pygame.display.set_caption("bule air")
bg_color = (0, 0, 240)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit(0)
screen.fill(bg_color)
#让屏幕可见
pygame.display.flip()
blue_draw()
2.
实现飞船的上下左右移动并且限制飞船移出界面之外。
import sys
import pygame
class Ship():
def __init__(self,screen):
self.screen = screen
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect() #获得image的surface
self.screen_rect = screen.get_rect() #获取的屏幕的surface
#将屏幕的中央获得到
#self.rect.centerx = self.screen_rect.centerx
self.rect.center = self.screen_rect.center
# self.rect.left = self.screen_rect.left
self.rect.y = self.screen_rect.y
self.rect.x = self.screen_rect.x
self.rect.y = 600/2
self.rect.x = 600/2
def blitme(self):
self.screen.blit(self.image,self.rect)
#检查按键的响应,并把飞船的实例传递进去
def check_event(ship):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit(0)
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
if ship.rect.right < ship.screen_rect.right:
ship.rect.x += 10
print(ship.rect.x)
elif event.key == pygame.K_LEFT:
if ship.rect.left > 0:
ship.rect.x -= 10
print(ship.rect.x)
#print("why?")
elif event.key == pygame.K_UP:
if ship.rect.top > 0:
ship.rect.y -= 10
print(ship.rect.y)
elif event.key == pygame.K_DOWN:
if ship.rect.bottom < ship.screen_rect.bottom:
ship.rect.y += 10
print(ship.rect.y)
def update_screen(screen,ship):
bg_color = (0, 0, 240)
screen.fill(bg_color)
ship.blitme()
#让屏幕可见
pygame.display.flip()
def run_game():
pygame.init()
screen = pygame.display.set_mode((600,600))
pygame.display.set_caption("bule air")
#创建飞船的实例,并把屏幕传递进去
ship = Ship(screen)
while True:
check_event(ship)
update_screen(screen,ship)
run_game()
3.
怎么把飞船的底部变为在画面的左边,然后向左发射子弹,然后删除消失的子弹。