import pygame 2 import random 3 4 5 6 7 from os import path
img_dir1=path.join(path.dirname(_file_), 'Backgrounds')
img_dir2=path.join(path.dirname(__file__), 'PNG') WIDTH = 480 HEIGHT = 560 8
FPS = 60 9 10 pygame.init() 11 screen pygame.display.set_mode((WIDTH,
HEIGHT)) 12 13 14 15 16 17 18 19 pygame.Font.match_font('arial') font_name 20
21 22 23 24 25 26 clock pygame.time.Clock() background
pygame.image.load(path.join(img_dir1, '7.jpg')).convert() background_rect =
background.get_rect() player_img=pygame.image.load(path.join(img_dir2,
'playerShip1_green.png")).convert() mob_img-
pygame.image.load(path.join(img_dir2, 'Enemies\enemyBlack2.png")).convert()
bullet_img-pygame.image.load(path.join(img_dir2, 'Lasers\
laserGreen10.png')).convert() def draw_text(surf, text, size, x, y): font-
pygame.font.Font(font_name, size) text_surface = font.render(text, True, 'white')
text_rect = text_surface.get_rect() text_rect.midtop = (x, y)
surf.blit(text_surface, text_rect) 27 28class Player(pygame.sprite.Sprite):
def_init_(self): pygame.sprite.Sprite._init_(self) self.image
pygame.transform.scale(player_img, (60, 48)) self.image.set_colorkey('black')
self.rect = self.image.get_rect() self.radius-int(self.rect.width*0.85/2)
self.rect.centerx = WIDTH // 2 self.rect.bottom HEIGHT - 10 self.speedx = 0 def
update(self): self.speedx = 0 keystate pygame.key.get_pressed() if
keystate[pygame.K_LEFT]: self.speedx = -5 if keystate[pygame.K_RIGHT]:
self.speedx- 5 self.rect.x += self.speedx if self.rect.right> WIDTH: self.rect.right
= WIDTHif self.rect.left < 0: self.rect.left = 0 def shoot(self): bullet
Bullet(self.rect.centerx, self.rect.top) all_sprites.add(bullet) bullets.add(bullet)
class Mob(pygame、sprite.Sprite): def init (self): pygame.sprite.Sprite._init_(self)
self.image pygame.transform.scale(mob_ing, (50, 38))
self.image.set_colorkey("BLACK") self.rect = self.image.get_rect() self.radius-
int(self.rect.width*0.85/2) self.rect.x random.randirange(WIDTH - self.rect.width)
self.rect.y self.speedy random.randrange(-180, -40) random.randirange(1, 8)
self.speedx = random.randirange(-3, 3) #9898 def update(self): self.rect.y +=
self.speedy self.rect.x += self.speedx #9898 Game if self.rect.top > HEIGHT or
self.rect.left < or self.rect.right > WIDTH: self.rect.x = random.randrange(WIDTH
self.rect.width) self.rect.y random.randrange(-100, -40) self.speedy
random.randrange(1, 8) self.speedx random.randrange(-3, 3) 19898class Bullet
(pygame.sprite.Sprite): def __init__(self,x,y): pygame.sprite.Sprite._init__(self)
self.image pygame.transform.scale(bullet_img, (10,40))
self.image.set_colorkey('BLACK') self.rect self.image.get_rect() self.rect.bottom-y
self.rect.centerx=x self.speedy-10 def update(self): self.rect.y + self.speedy if
self.rect.bottom<0: self.kill() 95 96 97 98 99 100 101 102 103 104 105 106 107
108 all_sprites pygame.sprite.Group() bullets pygame.sprite.Group() mobs
pygame.sprite.Group() player Player() all_sprites.add(player) for i in range(8): m
= Mob() all_sprites.add(m) 109 mobs.add(m) 110 111 running True 112 score-0
113 while running: 114 115 > OUTLINE 116 > TIMELINE 117 for event in
pygame.event.get(): if event.type pygame.QUIT: running False elif event,type
pygame.KEYDOWN:if event.key pygame.K_SPACE: all_sprites.update() hits
pygame.sprite.spritecollide(player, mobs, False, pygame.sprite.collide_circ if hits:
main.py laserGreen 10.png main.py >... unis 115 if event.type pygame.QUIT:
running = False 116 117 elif event.type pygame. KEYDOWN: 118 esheet 119 120
se.txt 121 122 view.png 123 124 mple.png 125 125 127 128 129 130 131 132
133 134 135 136 137 138 running = False hits-pygame.sprite.groupcollide
(bullets, mobs, True, True) for hit in hits : score+-50 m = Mob()
all_sprites.add(m) mobs.add(m) screen.fill("gold") screen.blit(background,
background_rect) all_sprites.draw(screen) draw_text screen, str (score), 18,
WIDTH/2,10 pygame.display.flip() clock.tick(FPS) 139 pygame.quit() 140 esc
OUTLINE > TIMELINE