Python

Помогите решить самостоятельную работу?

В созданном в задаче 1 файле с помощью модуля pygame осуществить анимацию (движение) любого графического примитива (круг, квадрат, прямоугольник) по вертикали.

3*

В созданном в задаче 1 файле с помощью модуля pygame осуществить анимацию (движение) любого графического примитива (круг, квадрат, прямоугольник) по вертикали и диагонали. При достижении края окна фигура должна изменить цвет и размер.
Для создания анимации движения графического примитива по вертикали и диагонали с помощью модуля pygame, вы можете использовать цикл while для обновления координат примитива и отрисовки его на экране. При достижении края окна, вы можете изменить цвет и размер фигуры, изменив соответствующие параметры перед отрисовкой.

Вот пример кода, который демонстрирует движение квадрата по диагонали:
 import pygame 
pygame.init()

# Set up the display
window = pygame.display.set_mode((500, 500))

# Set up the square
square = pygame.Rect(0, 0, 50, 50)
color = (255, 0, 0)
velocity = [1, 1]

# Run the game loop
while True:
# Handle events
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()

# Move the square
square.x += velocity[0]
square.y += velocity[1]

# Check for collision with the window edges
if square.right > 500 or square.left < 0:
velocity[0] = -velocity[0]
color = (0, 255, 0)
square.inflate_ip(10, 10)
if square.bottom > 500 or square.top < 0:
velocity[1] = -velocity[1]
color = (0, 0, 255)
square.inflate_ip(-10, -10)

# Draw everything
window.fill((255, 255, 255))
pygame.draw.rect(window, color, square)
pygame.display.update()
Этот код создает квадрат и двигает его по диагонали с помощью изменения координат x и y. При столкновении с краями окна скорость по соответствующей оси меняется на противоположную, а цвет и размер квадрата меняются.
Makc
Makc
25 860
Лучший ответ
для реализации данной задачи необходимо выполнить следующие шаги:

1. Импортировать модуль pygame и инициализировать его:


import pygame

pygame.init()


2. Создать окно с помощью функции pygame.display.set_mode():


screen_width = 800
screen_height = 600

screen = pygame.display.set_mode((screen_width, screen_height))


3. Создать объект графического примитива (например, круг) с помощью функции pygame.draw.circle ():


circle_color = (255, 0, 0)
circle_radius = 50
circle_pos = (screen_width // 2, screen_height // 2)

pygame.draw.circle (screen, circle_color, circle_pos, circle_radius)


4. Организовать бесконечный цикл для отрисовки анимации и обработки событий:


while True:
# Обработка событий
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()

# Очистка экрана
screen.fill((255, 255, 255))

# Изменение позиции графического примитива
circle_pos = (circle_pos[0], circle_pos[1] + 5)

# Отрисовка графического примитива
pygame.draw.circle (screen, circle_color, circle_pos, circle_radius)

# Обновление экрана
pygame.display.update()


5. В данном примере позиция круга изменяется по вертикали на 5 пикселей за итерацию цикла. Это можно изменить, изменив значение второго элемента кортежа circle_pos.

6. Чтобы закрыть окно, необходимо обработать событие pygame.QUIT и вызвать функцию pygame.quit().

Полный код программы:


import pygame

pygame.init()

screen_width = 800
screen_height = 600

screen = pygame.display.set_mode((screen_width, screen_height))

circle_color = (255, 0, 0)
circle_radius = 50
circle_pos = (screen_width // 2, screen_height // 2)

while True:
# Обработка событий
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()

# Очистка экрана
screen.fill((255, 255, 255))

# Изменение позиции графического примитива
circle_pos = (circle_pos[0], circle_pos[1] + 5)

# Отрисовка графического примитива
pygame.draw.circle (screen, circle_color, circle_pos, circle_radius)

# Обновление экрана
pygame.display.update()
Сергей Тубольцев Для решения данной задачи необходимо внести некоторые изменения в код из задачи 1:

1. Добавить переменные для цветов и размеров фигуры при достижении края окна:


circle_color2 = (0, 255, 0)
circle_radius2 = 25


2. Изменить условие изменения позиции фигуры таким образом, чтобы она двигалась по вертикали и диагонали:


if circle_pos[1] + circle_radius >= screen_height:
circle_pos = (circle_pos[0] + 5, circle_pos[1] - 5)
circle_color = circle_color2
circle_radius = circle_radius2
elif circle_pos[0] + circle_radius >= screen_width:
circle_pos = (circle_pos[0], circle_pos[1] + 5)
circle_color = circle_color2
circle_radius = circle_radius2
else:
circle_pos = (circle_pos[0], circle_pos[1] + 5)
Сергей Тубольцев # Изменение позиции графического примитива



if circle_pos[1] + circle_radius >= screen_height:




circle_pos = (circle_pos[0] + 5, circle_pos[1] - 5)







circle_color = circle_color2







circle_radius = circle_radius2







elif circle_pos[0] + circle_radius >= screen_width:


circle_pos = (circle_pos[0], circle_pos[1] + 5)

circle_color = circle_color2



circle_radius = circle_radius2



else:


circle_pos = (circle_pos[0], circle_pos[1] + 5)


# Отрисовка графического примитива

pygame.draw.circle(screen, circle_color, circle_pos, circle_radius)

# Обновление экрана

pygame.display.update()
она самостоятельная сам(а) и решай ))))))))))))))))