как это правильно сделать

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

import pygame
import sys
import math

pygame.init()

W, H = 500, 500
screen = pygame.display.set_mode((W, H))
clock = pygame.time.Clock()
YELLOW = (225, 225, 0)
y = 0

g = -10
dt = 0.1
x = 0

t = 0

V = 10
a = 10
vx = V * 
vy = 0


while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
        sys.exit()


dv = g * dt
dy = vy * dt
vy = vy + dv
y = y + dy

dx = vx *dt
x = x +dx

t = t + dt

print(t,x,y)
Y = -50 * y + 500
X = 50 * x + 0



pygame.draw.circle(screen, YELLOW, (X, Y), 5)
pygame.display.flip()
clock.tick(60)
if y < 0 and vy < 0:
    break

pygame.time.delay(20000)


Ответы (1 шт):

Автор решения: GxdTxnz
import pygame
import sys
import math

pygame.init()

W, H = 500, 500
screen = pygame.display.set_mode((W, H))
clock = pygame.time.Clock()
YELLOW = (225, 225, 0)
g = -10
dt = 0.1
V = 10

t = 0
angle = 1  # начальный угол в градусах

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    # Преобразование угла в радианы
    radians = math.radians(angle)
    vx = V * math.cos(radians)
    vy = V * math.sin(radians)

    dv = g * dt
    dy = vy * dt
    vy = vy + dv
    y = y + dy

    dx = vx * dt
    x = x + dx

    t = t + dt

    print(t, x, y)
    Y = -50 * y + 500
    X = 50 * x + 0

    screen.fill((0, 0, 0))  # Очистка экрана
    pygame.draw.circle(screen, YELLOW, (int(X), int(Y)), 5)
    pygame.display.flip()
    clock.tick(60)

    if y < 0 and vy < 0:
        break

    angle += 1  # Увеличение угла на 1 градус

pygame.time.delay(20000)

Скорости vx и vy вычисляются с использованием тригонометрических функций math.cos и math.sin. screen.fill((0, 0, 0)), чтобы очистить экран перед каждым новым кадром.

В конце каждого цикла угол увеличивается на один градус: angle += 1.

→ Ссылка