首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >血小板卡在墙上

血小板卡在墙上
EN

Stack Overflow用户
提问于 2022-03-24 03:27:50
回答 2查看 56关注 0票数 0

我好像和我在皮格特建的那个平台有矛盾。当我从左边接近他们的时候,我可以把它们弄到墙上去。当接近墙壁时,我把x速度设为零,但我仍然可以进去。有人能帮我一下吗?

我正在尝试做一个游戏,玩家必须跑动到赛道的尽头。这个平台将是一个2d,非滚动的游戏,当它完成。

代码语言:javascript
复制
import pygame as pg


pg.init()
screen = pg.display.set_mode((640, 480))
BG_COLOR = pg.Color(173, 216, 230)

def main():
    clock = pg.time.Clock()
    image = pg.Surface((50, 50))
    image.fill(pg.Color('red'))
    player_rect = image.get_rect(topleft=(200, 200))
    image_ground = pg.Surface((1000, 50))
    image_ground.fill(pg.Color('black'))
    ground_rect = image_ground.get_rect(topleft=(0, 430))
    image_ground2 = pg.Surface((300, 50))
    image_ground2.fill(pg.Color('black'))
    ground_rect2 = image_ground2.get_rect(topleft=(0, 330))
    image_ground3 = pg.Surface((50, 50))
    image_ground3.fill(pg.Color('black'))
    ground_rect3 = image_ground3.get_rect(topleft=(400, 230))
    screen_rect = screen.get_rect()
    image_ground3.fill(pg.Color('black'))
    ground_rect3 = image_ground3.get_rect(topleft=(400, 230))
    screen_rect = screen.get_rect()
    xv = 0
    yv = 0
    level = 1

    while True:
        for event in pg.event.get():
            if event.type == pg.QUIT:
                return
        pressed = pg.key.get_pressed()
        if pressed[pg.K_RIGHT]:
            xv = xv + 0.85
        if pressed[pg.K_LEFT]:
            xv = xv - 0.85
        xv = xv * 0.9
        player_rect.x += xv
        if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
          player_rect.y -= 1
          if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
            player_rect.y -= 1
            if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
              player_rect.y -= 1
              if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
                player_rect.y -= 1
                if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
                  player_rect.y -= 1
                  if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
                    player_rect.y += 5
                    player_rect.x -= xv
                    if pressed[pg.K_UP]:
                      if xv > 0:
                        xv = -8
                      else:
                        xv = 8
                      yv = 13
                    else:
                      xv = 0
        yv = yv - 1
        player_rect.y -= yv
        if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
          player_rect.y += yv
          yv = 0
        player_rect.y += 1
        if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
          if pressed[pg.K_UP]:
            yv = 13
        player_rect.y -= 1
        player_rect.clamp_ip(screen_rect)

        screen.fill(BG_COLOR)
        screen.blit(image, player_rect)
        screen.blit(image_ground, ground_rect)
        screen.blit(image_ground2, ground_rect2)
        screen.blit(image_ground3, ground_rect3)

        pg.display.flip()
        clock.tick(60)


if __name__ == '__main__':
    main()
    pg.quit()
EN

回答 2

Stack Overflow用户

发布于 2022-03-25 05:11:38

我想出了我自己问题的答案。游戏因为四舍五入而变得很糟糕,游戏被移动0.000000000000001弄糊涂了,还把我塞进了墙上。在移动播放器之前,我用十五号四舍五入来修正它。

票数 1
EN

Stack Overflow用户

发布于 2022-03-25 06:24:43

当方向键被按下,你移动到墙上时,你会弹出(墙跳)。但如果你放开钥匙碰墙,你就被卡住了。我不知道如何解决这个问题,但是相关的帖子可能会对你有帮助。:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71596709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档