Python pygame球移动

时间:2016-01-18 20:24:31

标签: python pygame mouse draw geometry

我正在写一个简单的“游戏”,我有三个问题要问你:

  1. 如何让所有球独立移动?
  2. 当我用鼠标拖动球并点击屏幕时,我怎样才能让球留在那里。我想在按下鼠标键的特定坐标上绘制它。它必须一直待在那里。
  3. 如果一个小球碰到那个大球,它会变成一个大球并在10秒后消失。
  4. 我不知道该怎么做。你能帮我么。

    我的代码:

    import pygame
    import sys
    from pygame.locals import *
    import random
    
    pygame.init()
    
    width = 800
    height = 600
    
    fps = 25
    clock = pygame.time.Clock()
    
    black = (0, 0, 0)
    white = (255, 255, 255)
    
    display_window = pygame.display.set_mode((width, height))
    pygame.display.set_caption('Bouncy')
    game_over = False
    
    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    
    x_cor = random.randint(15, width - 15)
    y_cor = random.randint(15, height - 15)
    
    x_change = random.randint(3, 7)
    y_change = random.randint(3, 7)
    
    coordinates = []
    
    for i in range(10):
        x = random.randint(0, width)
        y = random.randint(0, height)
        coordinates.append([x, y])
    
    while not game_over:
    
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    
        if event.type == KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                pygame.quit()
                sys.exit()
    
        if event.type == pygame.mouse.get_pressed():
            pass
    
    x_cor += x_change
    y_cor += y_change
    
    display_window.fill(white)
    
    mouse_x, mouse_y = pygame.mouse.get_pos()
    
    for coordinate in coordinates:
        pygame.draw.circle(display_window, (r, g, b), (coordinate[0],    coordinate[1]), 15, 0)
    
    pygame.draw.circle(display_window, black, (mouse_x, mouse_y), 25, 0)
    
    pygame.draw.circle(display_window, (r, g, b), (x_cor, y_cor), 15, 0)
    
    if x_cor > (width - 15) or x_cor < 15:
        x_change = x_change * -1
    if y_cor > (height - 15)or y_cor < 15:
        y_change = y_change * -1
    
    clock.tick(fps)
    pygame.display.update()
    

1 个答案:

答案 0 :(得分:2)

首先,在您发布此处之前需要进行研究(请参阅介绍之旅中的帮助文档)。互联网上有许多教程,许多人在SO(StackOverflow)中回答了处理移动对象的问题。为了让您开始一般:

  1. 通过为每个球保持一组单独的坐标来独立移动球。在游戏时钟的每次迭代中,你必须重复每个球的新坐标。

  2. 要让球停留在一个地方,只需不要更改其坐标。

  3. 要更改球的大小,请用更大的半径绘制球。这意味着你还必须记住每个球的半径。为了给它一个10秒的寿命,为每个球保持“寿命”;在游戏时钟的每个刻度上递减它。

  4. 基本上,你需要一个 Ball 对象(制作一个Ball类);为你需要的每个球实例化一个新对象。写出改变每个球的位置,大小和寿命的方法。