Как сделать квадрат случайных цветов go вверх, а затем вернуться вниз таким же образом, как и вверх - оставив черный экран в pygame - PullRequest
1 голос
/ 09 мая 2020

Пока что это мой код .. Я не совсем уверен, как сделать его go один раз, а затем заставить его вернуться таким же образом только один раз и оставить пользователя с черным экраном. Я попытался сделать это с помощью кода, но в итоге он просто перевернул его и перешел от большого к маленькому. Я хочу, чтобы они были в порядке от маленького к большому, а затем снова от большого к маленькому - если это имеет смысл.

import pygame
import random

pygame.init()
red = (255,0,0)
black = (0,0,0)
screen_size = (700, 700)
screen = pygame.display.set_mode(screen_size)

for x in range(700, 0, -1):
    rand_colour = ((random.randint(0,255), random.randint(0,255), random.randint(0,255)))
    pygame.draw.rect(screen, rand_colour, (0, 0, x+1, x+1))
    pygame.draw.rect(screen, black, (0, 0, x, x))
    pygame.display.flip()
    pygame.event.get()

for x in range(700):
    pygame.draw.rect(screen,((random.randint(0,255),random.randint(0,255),random.randint(0,255))),(1*x,1*x,700,700))

for xy in range(700):
    pygame.draw.rect(screen,black,(700,700,-xy,-xy))
    pygame.display.flip()
    pygame.event.get()
    pygame.time.wait(1)    


pygame.quit()


1 Ответ

0 голосов
/ 10 мая 2020

Хорошо, поэтому вместо нескольких циклов for игра l oop - это время l oop, которое выполняется, пока пользователь не захочет выйти (обычно через X вверху справа). Вы заметите, что в вашей программе после циклов for окно закрывается, это исправление.

Начнем с настройки, это то же самое, что и ваша программа

import pygame

pygame.init()

size = (500,500)
screen = pygame.display.set_mode(size)

red = (255,0,0)
black = (0,0,0)

running = True #this is true while the game is running

Следующий шаг - l oop

while running: #loop while the game is running

    for event in pygame.event.get(): #get all events (eg. clicks, key presses, key ups, ETC)
        if event.type == pygame.QUIT: #if the user clicked the X button
            running = False #stop running the program

pygame.quit() #after the loop is finished, quit pygame

Это создает пустое окно и закрывает его, когда вы нажимаете кнопку X.

Далее нужно рисовать на экране

while running:
    screen.fill(black) #clear the screen

    pygame.draw.rect(screen,red,(100,100,100,100)) #draw a red rectangle at (100,100) that is 100x100

    pygame.display.update() #update the screen, exact same as using flip()

теперь, когда у нас есть красный прямоугольник на экране, давайте изменим его размер, мы сделаем переменные для размера, как вы делали в l oop

size = 100
dsize = -1
...
while running:
    ...
    pygame.draw.rect(screen,red,(100,100,size,size)) #draw a red rectangle at (100,100) that is 100x100

    size += dsize  #change the size
    if size < 10 or size > 100: #if size is outside safe sizes
        dsize *= -1  #reverse the direction

это может показаться немного быстро, но вы не можете go меньше 1, поэтому вы можете использовать часы из pygame, чтобы ограничить fps

clock = pygame.time.Clock()
...
while running:
    ...
    clock.tick(60) #limit the fps to 60
    print(clock.get_fps()) #this is not necessary, but if you change 60 to 0, you can see how fast it was going 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...