Как сделать скорость создания препятствий пропорциональной скорости их движения?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать скорость создания препятствий пропорциональной скорости их движения?

Сообщение Anonymous »

Я делаю игру, похожую на Subway Surfers, где есть 3 полосы движения и препятствия, встречающие игрока. Препятствия движутся быстрее, а счет увеличивается каждый 16-й раз, когда игровой цикл повторяется. Все это работает нормально, но я не могу понять, как сделать так, чтобы скорость создания препятствий оставалась пропорциональной скорости препятствий. Я делаю это с черепашьей графикой.
main.py:

Код: Выделить всё

import time
from turtle import Screen
from obstacles import ObstacleManager
from scoreboard import Scoreboard
from player import Player

# Create screen
screen = Screen()
screen.setup(600, 600)
screen.tracer(0)

# Create objects
player = Player()
obstacle_manager = ObstacleManager()
scoreboard = Scoreboard()

# Detect keypress
screen.listen()
screen.onkeypress(player.move_left, "a")
screen.onkeypress(player.move_right, "d")

game_is_on = True
loops = 0
max_loops = 16

# Game loop
while game_is_on:
time.sleep(0.1)
screen.update()
loops += 1

# Create an obstacle and score + 1 every 16th game loop
if loops == max_loops:
obstacle_manager.create_obstacle()
obstacle_manager.score_up()
scoreboard.score_up()
loops = 0
obstacle_manager.move_obstacles()

# Detect collision with obstacle
for obstacle in obstacle_manager.all_obstacles:
if obstacle.distance(player) < 10:
game_is_on = False
scoreboard.game_over()

screen.exitonclick()
ObstacleManager()

Код: Выделить всё

class ObstacleManager:

def __init__(self):
self.all_obstacles = []
self.obstacle_speed = STARTING_MOVE_DISTANCE

def create_obstacle(self):
new_obstacle = Turtle("square")
new_obstacle.penup()
new_obstacle.color(random.choice(COLORS))
new_obstacle.setheading(270)
random_lane_pos = random.choice(OBS_LANE_POSITIONS)
new_obstacle.goto(random_lane_pos)
self.all_obstacles.append(new_obstacle)

def move_obstacles(self):
for obstacle in self.all_obstacles:
obstacle.forward(self.obstacle_speed)

def score_up(self):
self.obstacle_speed += MOVE_INCREMENT
Я пытался изменить скорость создания препятствия, разделив 16 на скорость движения, но очень быстро это стало экспоненциально быстро. Я много чего перепробовал, но так и не понял.

Подробнее здесь: https://stackoverflow.com/questions/793 ... o-the-move
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как сделать скорость создания препятствий пропорциональной скорости их движения?
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Сделайте ширину пропорциональной высоте в CSS
    Anonymous » » в форуме CSS
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Как сделать объезд препятствий в 2.5d игре Unity?
    Anonymous » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Как сделать объезд препятствий в 2.5d игре Unity?
    Anonymous » » в форуме C#
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Обнаружение физического движения мыши с помощью Python и Windows 10 без движения курсора
    Гость » » в форуме Python
    0 Ответы
    87 Просмотры
    Последнее сообщение Гость

Вернуться в «Python»