Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Программирование на Python

Помогите пожалуйста?
Реализовать прототип игры платформер с использованием движка для продвинутой физики. В игре персонаж прыгает по платформам и собирает монеты. При столкновении с вражеским объектом, игра останавливается.

По дате
По рейтингу
Аватар пользователя
Знаток

```python
import pygame
import pyphysics

pygame.init()
window = pygame.display.set_mode((800, 600))

# настройка персонажа
player = pyphysics.Circle ((50, 500), 20)
player.color = (0, 255, 0)
player.velocity = pyphysics.Vector(0, 0)

# настройка платформ
platforms = [
pyphysics.Rect((0, 550, 800, 50)),
pyphysics.Rect((0, 450, 300, 50)),
pyphysics.Rect((500, 400, 300, 50)),
pyphysics.Rect((200, 350, 300, 50)),
]

# настройка монет
coins = [
pyphysics.Circle ((250, 400), 10),
pyphysics.Circle ((550, 350), 10),
pyphysics.Circle ((700, 500), 10),
]
collected_coins = 0

# настройка врага
enemy = pyphysics.Circle ((400, 500), 30)
enemy.color = (255, 0, 0)

# функция для отрисовки всего на экране
def draw():
window.fill((255, 255, 255))
for platform in platforms:
pygame.draw.rect(window, (128, 128, 128), pygame.Rect(*platform))

for coin in coins:
pygame.draw.circle (window, (255, 215, 0), coin.center , coin.radius)

pygame.draw.circle (window, enemy.color, enemy.center , enemy.radius)
pygame.draw.circle (window, player.color, player.center , player.radius)

font = pygame.font.Font(None, 25)
text = font.render(f"Coins: {collected_coins}", True, (0, 0, 0))
window.blit(text, (20, 20))

pygame.display.flip()

# функция для обработки взаимодействий объектов и событий игрока
def update():
player.acceleration = pyphysics.Vector(0, 0.5)

for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()

if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
if player.on_ground():
player.velocity = pyphysics.Vector(0, -12)

player.move()
enemy.move()

if enemy.collides(player):
game_over()

for coin in coins:
if coin.collides(player):
coins.remove(coin)
collected_coins += 1

for platform in platforms:
player.collision_detection(platform)
enemy.collision_detection(platform)

if player.out_of_bounds(window.get_rect()):
game_over()

# функция для вывода на экран надписи о конце игры и остановки игры
def game_over():
font = pygame.font.Font(None, 50)
text = font.render("GAME OVER", True, (255, 0, 0))
window.blit(text, (300, 250))
pygame.display.flip()
pygame.time.delay(2000)
pygame.quit()

# основной игровой цикл
while True:
draw()
update()
pygame.time.delay(10)
```

Аватар пользователя
Просветленный

Для начала тебе нужно использовать библиотеку arcade и pymunk, там есть все, чтобы в итоге сделать платформер с физикой.