拼接反应时的虫子

发布于 2025-01-21 21:12:13 字数 3754 浏览 4 评论 0原文

我不能碰撞矩形矩形,我应该放弃还是尝试使用X和Y位置? 我没有任何错误,但是它在运行后立即关闭。 你能建议我该怎么办。

    import pygame,sys,time,random
    
    pygame.init()
    
    x = 425
    y = 750
    player_x = x/2-25
    player_y = 600
    player_speed = 0
    timer = 0
    score = 0
    
    screen = pygame.display.set_mode((x,y))
    clock = pygame.time.Clock()
    enemy_x = random.randint(0,425)
    enemy_y = -(random.randint(0,500))
    enemy2_x = random.randint(0,425)
    enemy2_y = -(random.randint(0,500))
    police_x = random.randint(0,425)
    police_y = random.randint(750,1400)
    police2_x = random.randint(0,425)
    police2_y = random.randint(750,1400)
    enemy_speed = 16
    police_speed = 3
    font = pygame.font.SysFont("comicsansms",50)
    player = pygame.image.load("macchina.png").convert_alpha()
    pygame.display.set_caption("NapoliSimulator (schiva le buche e non farti prendere dalla pula)")
    
    def player_a():
        global player_x,player_y,player_speed
        player_x+=player_speed
        player = pygame.image.load("macchina.png").convert_alpha()
        screen.blit(player,(player_x,player_y))
    def enemy_a():
        global enemy_x,enemy_y,enemy_speed,enemy2_x,enemy2_y,enemy3_x,enemy3_y,enemy4_x,enemy4_y,enemy5_x,enemy5_y
        enemy_y += enemy_speed
        enemy2_y += enemy_speed
        enemy = pygame.image.load("crepa.png").convert_alpha()
        enemy_2 = pygame.image.load("crepa.png").convert_alpha()
        screen.blit(enemy,(enemy_x,enemy_y))
        screen.blit(enemy,(enemy2_x,enemy2_y))
    def enemy_b():
        global police_x,police_y,police_speed,police2_x,police2_y
        police_y -= police_speed
        police = pygame.image.load("polizia.png").convert_alpha()
        screen.blit(police,(police_x,police_y))
    
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
    
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_a:
                    player_speed -= 5
                if event.key == pygame.K_d:
                    player_speed += 5
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_a:
                    player_speed += 5
                if event.key == pygame.K_d:
                    player_speed -= 5
    
        screen.fill((200,200,200))
    
        player_a()
    
        if enemy_y >= 700:
            enemy_y = -(random.randint(500,1200))
            enemy_x = random.randint(0,425)
            score += 1
        if enemy2_y >= 700:
            enemy2_y = -(random.randint(0,750))
            enemy2_x = random.randint(0,425)
            score += 1
        if police_y <= 40:
            police_y = random.randint(750,1900)
            police_x = random.randint(0,425)
            score += 1
    
        enemy_a()
    
        if score >= 7:
            enemy_b()
    
        if score >= 15:
            police_speed += 0.0001
    
        enemy = pygame.image.load("crepa.png").convert_alpha()
        enemy_2 = pygame.image.load("crepa.png").convert_alpha()
        police = pygame.image.load("polizia.png").convert_alpha()
    
        playerr = player.get_rect()
        enemyr = enemy.get_rect()
        policer = police.get_rect()
        enemyr2 = enemy_2.get_rect()
    
        if enemyr.colliderect(playerr):
            pygame.quit()
            sys.exit()
        if enemyr2.colliderect(playerr):
            pygame.quit()
            sys.exit()
        if crepar.colliderect(policer):
            enemy_b()
        if player.colliderect(policer):
            pygame.quit()
            ys.exit()
    
        pygame.display.flip()
    
        clock.tick(60)

I can't collide rect whit rectangles, should I give up or try using x and y positions?
I don't get any errors from it but it closes right after i run it.
can you please suggest me what to do.

    import pygame,sys,time,random
    
    pygame.init()
    
    x = 425
    y = 750
    player_x = x/2-25
    player_y = 600
    player_speed = 0
    timer = 0
    score = 0
    
    screen = pygame.display.set_mode((x,y))
    clock = pygame.time.Clock()
    enemy_x = random.randint(0,425)
    enemy_y = -(random.randint(0,500))
    enemy2_x = random.randint(0,425)
    enemy2_y = -(random.randint(0,500))
    police_x = random.randint(0,425)
    police_y = random.randint(750,1400)
    police2_x = random.randint(0,425)
    police2_y = random.randint(750,1400)
    enemy_speed = 16
    police_speed = 3
    font = pygame.font.SysFont("comicsansms",50)
    player = pygame.image.load("macchina.png").convert_alpha()
    pygame.display.set_caption("NapoliSimulator (schiva le buche e non farti prendere dalla pula)")
    
    def player_a():
        global player_x,player_y,player_speed
        player_x+=player_speed
        player = pygame.image.load("macchina.png").convert_alpha()
        screen.blit(player,(player_x,player_y))
    def enemy_a():
        global enemy_x,enemy_y,enemy_speed,enemy2_x,enemy2_y,enemy3_x,enemy3_y,enemy4_x,enemy4_y,enemy5_x,enemy5_y
        enemy_y += enemy_speed
        enemy2_y += enemy_speed
        enemy = pygame.image.load("crepa.png").convert_alpha()
        enemy_2 = pygame.image.load("crepa.png").convert_alpha()
        screen.blit(enemy,(enemy_x,enemy_y))
        screen.blit(enemy,(enemy2_x,enemy2_y))
    def enemy_b():
        global police_x,police_y,police_speed,police2_x,police2_y
        police_y -= police_speed
        police = pygame.image.load("polizia.png").convert_alpha()
        screen.blit(police,(police_x,police_y))
    
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
    
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_a:
                    player_speed -= 5
                if event.key == pygame.K_d:
                    player_speed += 5
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_a:
                    player_speed += 5
                if event.key == pygame.K_d:
                    player_speed -= 5
    
        screen.fill((200,200,200))
    
        player_a()
    
        if enemy_y >= 700:
            enemy_y = -(random.randint(500,1200))
            enemy_x = random.randint(0,425)
            score += 1
        if enemy2_y >= 700:
            enemy2_y = -(random.randint(0,750))
            enemy2_x = random.randint(0,425)
            score += 1
        if police_y <= 40:
            police_y = random.randint(750,1900)
            police_x = random.randint(0,425)
            score += 1
    
        enemy_a()
    
        if score >= 7:
            enemy_b()
    
        if score >= 15:
            police_speed += 0.0001
    
        enemy = pygame.image.load("crepa.png").convert_alpha()
        enemy_2 = pygame.image.load("crepa.png").convert_alpha()
        police = pygame.image.load("polizia.png").convert_alpha()
    
        playerr = player.get_rect()
        enemyr = enemy.get_rect()
        policer = police.get_rect()
        enemyr2 = enemy_2.get_rect()
    
        if enemyr.colliderect(playerr):
            pygame.quit()
            sys.exit()
        if enemyr2.colliderect(playerr):
            pygame.quit()
            sys.exit()
        if crepar.colliderect(policer):
            enemy_b()
        if player.colliderect(policer):
            pygame.quit()
            ys.exit()
    
        pygame.display.flip()
    
        clock.tick(60)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

柏林苍穹下 2025-01-28 21:12:13

pygame.surface.get_rect.get_rect.get.get_rect.get_rect()返回一个带有 surface 对象大小的矩形,该矩形总是从(0,0)开始,因为a surface 对象没有位置。 A surface 闪电在屏幕上的位置。矩形的位置可以通过关键字参数指定。例如,可以使用关键字参数topleft来指定矩形的左上角:

playerr = player.get_rect(topleft = (player_x, player_y))
enemyr = enemy.get_rect(topleft = (enemy_x, enemy_y))
policer = police.get_rect(topleft = (police_x, police_y))
enemyr2 = enemy_2.get_rect(topleft = (enemy2_x, enemy2_y))

if enemyr.colliderect(playerr):
    pygame.quit()
    sys.exit()
if enemyr2.colliderect(playerr):
    pygame.quit()
    sys.exit()
if player.colliderect(policer):
    pygame.quit()
    sys.exit()

pygame.Surface.get_rect.get_rect() returns a rectangle with the size of the Surface object, that always starts at (0, 0) since a Surface object has no position. A Surface is blit at a position on the screen. The position of the rectangle can be specified by a keyword argument. For example, the top left of the rectangle can be specified with the keyword argument topleft:

playerr = player.get_rect(topleft = (player_x, player_y))
enemyr = enemy.get_rect(topleft = (enemy_x, enemy_y))
policer = police.get_rect(topleft = (police_x, police_y))
enemyr2 = enemy_2.get_rect(topleft = (enemy2_x, enemy2_y))

if enemyr.colliderect(playerr):
    pygame.quit()
    sys.exit()
if enemyr2.colliderect(playerr):
    pygame.quit()
    sys.exit()
if player.colliderect(policer):
    pygame.quit()
    sys.exit()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文