Задать вопрос
@Span4ev

Как использовать в pygame вещественные числа меньше 1?

я не буду приводить весь код, только суть. Небольшой код легче воспринимать.
Если что, все импорты работают. Объект двигается, когда я передаю ему целое число или вещественное, больше 1 (и он, конечно, движется со скоростью 1 при 1.9).
И конечно же он не движется при вещественном значении меньше 1, например 0.9

Я знаю, что rect не может хранить в себе вещественное число, но не понимаю, как это работает, чтобы передавать ему вещественные числа

class Settings:
	# класс со всеми настройками, который я передаю в другой класс

	def __init__(self):

		# Если здесь  будет целочисленное значение, то объект двигается.
		# self.speed = 1  # Всё ОК!
		# self.speed = 1.9  # Всё ОК!

		# Объект не двигается с вещественными числами меньше 1
		self.speed = 0.3

class NOMATTER:
	# класс, описывающий поведение объектов...

	# вызываемый метод
	def move(self):
		if self.rect.y > 0:
			self.rect.y += float(self.settings.speed)


Где и как указывать float(), чтобы я мог с ними работать? Не совсем понимаю сам принцип. Вроде я должен присвоить float тому свойству, с которым я буду работать, например,
self.nevazhno_kakoe_nazvanie = float(self.rect.centerx) # Чтобы работать с перемещением по оси "икс"
# и затем:
self.nevazhno_kakoe_nazvanie += self.settings.speed
# и затем использовать:
self.rect.centerx = self.nevazhno_kakoe_nazvanie


Тогда, как я понимаю, это будет работать.
Но получается, что нужно всё "переводить" во float, с чем буду работать:
x, y, и т.д.
Мне кажется это громоздким и неудобным, и что я не понимаю концепцию. Может есть способ попроще, чтобы я сразу мог передать вещественное число 0.3 и работать с ним?
  • Вопрос задан
  • 136 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Kole565
Very beginner python programmer.
Координаты rect хранятся в виде целочисленного значения. Для того чтобы реализовать движение меньше чем на пиксель надо сохранять значение координат в отдельных вещественных переменных и подставлять их (отбрасывая дробную часть) в текущие координаты объекта. Увеличить также стоит свои вещественные числа, а не текущие координаты напрямую.

p.s. Мой первый ответ. Не судите строго.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы