猫史档案馆


【Python作品分享】飞机大战【作品秀】

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


【作品展示】

center_image

 

【作品介绍】

按空格仅发射子弹,左右键移动

不用在意封面图片,实在不知道用啥了

 

【作品源代码】

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


回复

上一页1 页 / 共 0下一页