weixin_68400310 2023-06-04 18:17 采纳率: 100%
浏览 62
已结题

Scratch~汽车小游戏

img


如何让车角色转向时,地图会朝着车的相反的方向移动
地图只可以移动,不能面向

  • 写回答

4条回答 默认 最新

  • Jackyin0720 2023-06-04 19:05
    关注

    设计思路:使用 Pygame 库来创建窗口、加载图片、处理事件和处理图形。游戏循环中,监听按键事件并根据事件类型调整汽车转向角度。然后,根据汽车位置和转向角度更新汽车位置和角度,并根据地图位置和转向角度更新地图位置和角度。参考代码:

    import pygame  
      
    # 初始化 Pygame  
    pygame.init()  
      
    # 设置窗口尺寸  
    WINDOW_SIZE = (800, 600)  
      
    # 创建窗口  
    screen = pygame.display.set_mode(WINDOW_SIZE)  
    pygame.display.set_caption("Scratch Car Game")  
      
    # 加载汽车图片  
    car_image = pygame.image.load("car.png").convert_alpha()  
    car_rect = car_image.get_rect()  
    car_rect.center = (WINDOW_SIZE[0] // 2, WINDOW_SIZE[1] // 2)  
      
    # 加载地图图片  
    map_image = pygame.image.load("map.png").convert_alpha()  
    map_rect = map_image.get_rect()  
    map_rect.center = (WINDOW_SIZE[0] // 2, WINDOW_SIZE[1] - 50)  
      
    # 设置地图和汽车初始位置  
    car_x, car_y = car_rect.center  
    map_x, map_y = map_rect.center[0], map_rect.center[1] - map_rect.height  
      
    # 设置汽车转向角度  
    car_angle = 0  
      
    # 游戏循环  
    while True:  
        for event in pygame.event.get():  
            if event.type == pygame.QUIT:  
                pygame.quit()  
                quit()  
            elif event.type == pygame.KEYDOWN:  
                if event.key == pygame.K_LEFT:  
                    car_angle += 5  
                elif event.key == pygame.K_RIGHT:  
                    car_angle -= 5  
      
        # 更新汽车位置和角度  
        car_x += pygame.math.sin(pygame.math.radians(car_angle)) * 5  
        car_y -= pygame.math.cos(pygame.math.radians(car_angle)) * 5  
        car_rect.center = (car_x, car_y)  
      
        # 更新地图位置和角度  
        map_x += -pygame.math.sin(pygame.math.radians(car_angle)) * 5 / 10  
        map_y += -pygame.math.cos(pygame.math.radians(car_angle)) * 5 / 10  
        map_rect.center = (map_x, map_y)  
      
        # 重绘窗口  
        screen.fill((255, 255, 255))  
        screen.blit(car_image, car_rect)  
        screen.blit(map_image, map_rect)  
        pygame.display.update()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • chuifengde 2023-06-04 23:10
    关注

    可以在运动类别里即时获得当前车子的方向,然后根据方向计算出反方向,再用反方向计算地图移动的x和y分量,再移动地图,移动的时候,要注意地图移出舞台时的循环衔接。

    评论
  • 还有头发的程序员- 2023-06-05 10:34
    关注

    用scratch做赛车小游戏
    可以借鉴下
    http://www.peixun360.com/2499/news/424995/

    评论
  • 会跑的小鹿 2023-06-10 17:25
    关注

    先获取车角色的中心位置坐标,然后以车的坐标为地图中心,进行实时缩放定位即可。

    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月18日
  • 已采纳回答 6月10日
  • 创建了问题 6月4日

悬赏问题

  • ¥60 PCDN如何使用宽带的电视业务通道拨号叠加带宽?
  • ¥15 遇到这种校园宽带网络应该怎么样解决?
  • ¥30 AXI VIP验证多余打印问题
  • ¥15 利用加权最小二乘法求某品牌手机价格指标,已按照总销量计算出权重,各类型号手机价格已知,如何求得价格指标?
  • ¥15 如何自制一个硬件钱包,有兴趣的朋友一起交流
  • ¥15 (关键词-聊天软件)
  • ¥15 求大家看看这个编程的编法没有思路啊
  • ¥20 WSL打开图形化程序子窗口无法点击
  • ¥15 Jupyter Notebook 数学公式不渲染
  • ¥20 ERR_CACHE_MISS 确认重新提交表单