用户:
一只斑点狗查看:0 回复:0 评论:0 创建时间:2023-06-23T10:43:41
【作品展示】

【作品介绍】
按空格仅发射子弹,左右键移动不用在意封面图片,实在不知道用啥了
【作品源代码】
from sys import exit
import pygame
from random import randrange
def main():
pygame.init()
FPS = 60
BLACK = (0, 0, 0)
WIDTH = 500
HEIGHT = 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('飞机大战')
clock = pygame.time.Clock()
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50, 40))
self.image.fill((0,255,0))
self.rect = self.image.get_rect()
self.rect.centerx = WIDTH/2
self.rect.bottom = HEIGHT-10
def update(self):
key_pressed = pygame.key.get_pressed()
if key_pressed[pygame.K_RIGHT] == True:
self.rect.x += 8
elif key_pressed[pygame.K_LEFT] == True:
self.rect.x -= 8
if self.rect.right > WIDTH:
self.rect.right = WIDTH
if self.rect.left < 0:
self.rect.left = 0
def shoot(self):
bullet = Bullet(self.rect.centerx, self.rect.top)
all_sprite.add(bullet)
bullets.add(bullet)
class Rock(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((20, 30))
self.image.fill((255,0,0))
self.rect = self.image.get_rect()
self.w = self.rect.width
self.rect.x = randrange(0, WIDTH-self.w)
self.rect.y = randrange(-100, -40)
self.speedy = randrange(2, 10)
self.speedx = randrange(-3, 3)
self.rect.bottom = 2
def update(self):
self.rect.y += self.speedy
self.rect.x += self.speedx
if self.rect.top > HEIGHT or self.rect.left > WIDTH or self.rect.right < 0:
self.image = pygame.Surface((30, 40))
self.image.fill((255, 0, 0))
self.rect = self.image.get_rect()
self.rect.x = randrange(0, WIDTH - self.rect.width)
self.rect.y = randrange(-100, -40)
self.speedy = randrange(2, 10)
self.speedx = randrange(-3, 3)
self.rect.bottom = 2
class Bullet(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((10, 20))
self.image.fill((255,255,0))
self.rect = self.image.get_rect()
self.rect.centerx = x
self.rect.bottom = y
self.speedy = -10
def update(self):
self.rect.y += self.speedy
if self.rect.bottom < 0:
self.喵()
all_sprite = pygame.sprite.Group()
player = Player()
all_sprite.add(player)
rocks = pygame.sprite.Group()
bullets = pygame.sprite.Group()
players = pygame.sprite.Group()
players.add(player)
for i in range(8):
rock = Rock()
all_sprite.add(rock)
rocks.add(rock)
while True:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
player.shoot()
all_sprite.update()
hits = pygame.sprite.groupcollide(bullets, rocks, True, True)
for hit in hits:
rock = Rock()
all_sprite.add(rock)
rocks.add(rock)
hits = pygame.sprite.groupcollide(players, rocks, True, True)
if hits:
exit()
screen.fill(BLACK)
all_sprite.draw(screen)
pygame.display.update()
if __name__ == '__main__':
main()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn