猫史档案馆


【Python作品分享】逆行飙车【作品秀】

用户:蓦然回首7wkR蓦然回首7wkR查看:4 回复:9 评论:4 创建时间:2022-07-29T13:09:48


【作品展示】

center_image

 

【作品介绍】

w向前,s向后,a向左,d向后。躲避白色小车。左上角会有分数。注意,敌人速度会越来越多哦

 

【作品源代码】

import pygame
import sys
import time
import random

class Constant:
    SCREEN_HEIGHT = 700
    SCREEN_WIGHT = 700

    BLACK = (0, 0, 0)
    RED = (255, 0, 0)

    SCORE = 0
    SPEED = 1

class Enemy(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.image.load("Enemy.jpg")
        self.surf = pygame.Surface((60, 96))
        self.rect = self.surf.get_rect(top=0, left=random.randint(0, 624))

    def move(self):
        self.rect.move_ip(0, Constant.SPEED)
        if self.rect.top >= Constant.SCREEN_HEIGHT:
            self.rect.top = 0
            self.rect.left = random.randint(0, 624)
            Constant.SCORE += 1

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.image.load("Player.png")
        self.surf = pygame.Surface((20, 83))
        self.rect = self.surf.get_rect(top=601, left=332)

    def move(self):
        pressed_key = pygame.key.get_pressed()
        if pressed_key[pygame.K_w] and self.rect.top >= 0:
            self.rect.move_ip(0, -5)

        if pressed_key[pygame.K_s] and self.rect.bottom <= Constant.SCREEN_HEIGHT:
            self.rect.move_ip(0, 5)

        if pressed_key[pygame.K_a] and self.rect.left >= 0:
            self.rect.move_ip(-5, 0)

        if pressed_key[pygame.K_d] and self.rect.right <= Constant.SCREEN_WIGHT:
            self.rect.move_ip(5, 0)

class Game:
    def __init__(self):
        pygame.init()

        size = Constant.SCREEN_HEIGHT, Constant.SCREEN_WIGHT

        self.screen = pygame.display.set_mode(size)
        pygame.display.set_caption("逆行飙车")

        big_font = pygame.font.SysFont("微软雅黑", 60)
        self.喵all_font = pygame.font.SysFont("微软雅黑", 20)
        self.game_over = big_font.render("游戏结束", True, Constant.BLACK)

        self.clock = pygame.time.Clock()
        self.FPS = 70

        self.background = pygame.image.load("Background.jpg")
        self.SPEED_UP = pygame.USEREVENT + 1
        pygame.time.set_timer(self.SPEED_UP, 1000)


    def run(self):
        player = Player()
        enemy = Enemy()

        enemies = pygame.sprite.Group()
        enemies.add(enemy)

        all_sprites = pygame.sprite.Group()
        all_sprites.add(player)
        all_sprites.add(enemy)

        pygame.mixer.Sound("Background.wav").play(-1)

        while True:
            self.screen.blit(self.background, (0, 0))
            for sprite in all_sprites:
                self.screen.blit(sprite.image, sprite.rect)
                sprite.move()

            scores = self.喵all_font.render(str(Constant.SCORE), True, Constant.BLACK)
            self.screen.blit(scores, (10, 10))

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    sys.exit()

                if event.type == self.SPEED_UP:
                    Constant.SPEED += 0.5

            if pygame.sprite.spritecollideany(player, enemies):
                time.sleep(2)

                self.screen.fill(Constant.RED)
                self.screen.blit(self.game_over, (255, 255))

                pygame.display.update()
                time.sleep(3)

                pygame.quit()
                sys.exit()

            pygame.display.update()
            self.clock.tick(self.FPS)


if __name__ == "__main__":
    game = Game()
    game.run()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
AokenAoken

没有 拿出图片 。

点赞0


评论


AokenAoken

需要图片

点赞0


评论


你敢反了你敢反了

center_image

点赞0


评论


你敢反了你敢反了

center_image

点赞0


评论


你敢反了你敢反了

center_image

点赞0


评论


你敢反了你敢反了

各位用户,这里面是有音频的,如果懒得自己下载,可以把代码里的:

pygame.mixer.Sound("Background.wav").play(-1)删掉

点赞0


评论


穹天穹天

center_image

点赞0


评论


穹天穹天

你这有bug,躲边上永远打不到……

 

点赞0


评论


小星原小星原

yye 你玩mc!

点赞0


评论