import pygame
pygame.init()
red = (200,0,0)
white = (255,255,255)
gameDisplay=pygame.display.set_mode((800,600))
FPS=30
clock=pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
quit()
cur = pygame.mouse.get_pos() #taking click events every time
click=pygame.mouse.get_pressed() ##again, every time
if click[0] == 1: #if left-clicked
pygame.draw.rect(gameDisplay,red, (100,200,100,200)) #draw a red rectangle
pygame.display.update() #and update the display
clock.tick(FPS)
Проблема в том, что вы использовали pygame.display.update () в неправильном месте. Я поправил и теперь работает.
На самом деле при каждом щелчке левой кнопкой мыши при этом рисуется прямоугольник, но вы можете видеть только один прямоугольник, потому что они находятся в одних и тех же координатах.
Если вы хотите быть уверены в этом, попробуйте:
import pygame,random
pygame.init()
red = (200,0,0)
white = (255,255,255)
black = (0,0,0)
gameDisplay=pygame.display.set_mode((800,600))
FPS=30
clock=pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
quit()
cur = pygame.mouse.get_pos()
click=pygame.mouse.get_pressed()
if click[0] == 1:
x=random.randint(1,700) #random coords of x
y=random.randint(50,500) #random coords of y
wx=random.randint(10,100) #random size of x
hy=random.randint(60,200) #random size of y
pygame.draw.rect(gameDisplay,red, (x,y,wx,hy)) #drawing with random variables
pygame.display.update()
clock.tick(FPS)
Это показывает, что наш метод работает. Также убедитесь, что если вы продолжаете нажимать левую кнопку мыши, она продолжит рисовать прямоугольники. Он рисовал прямоугольники и раньше, но мы не могли их увидеть, потому что они находились в тех же координатах, поэтому кажется, что в этой позиции есть только один прямоугольник.
Если вы хотите удалить этот прямоугольник, например, щелчком правой кнопкой мыши:
if click[2] == 1:
pygame.draw.rect(gameDisplay,black, (100,200,100,200))
pygame.display.update()
Добавьте нижнюю часть первого оператора if click. В основном он будет рисовать другой прямоугольник на первом прямоугольнике, сохраняя те же координаты, но того же цвета с фоном. Итак, ваш первый прямоугольник кажется стертым :-).
person
Community
schedule
03.01.2015