Как я могу отслеживать, сколько раз это значение превышает число, кратное 175, даже если оно не кратно ему в точности?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу отслеживать, сколько раз это значение превышает число, кратное 175, даже если оно не кратно ему в точности?

Сообщение Anonymous »

Я пытаюсь создать систему анимации, и мне нужно отслеживать, сколько времени прошло, чтобы можно было вовремя изменить кадр анимации. Однако у меня возникли проблемы с отслеживанием того, когда «t», общее время в миллисекундах, достигает заданного целого числа, 175, потому что частота кадров 60 вызывает необычные числа.
Я попробовал просто используя оператор модуля, чтобы заставить его работать, но это не работает. Я сам не могу в этом разобраться, любая помощь приветствуется.
import pygame, sys
from pygame.math import Vector2

WIDTH, HEIGHT = 600, 400
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()
fps = 60
dt = 0 #Delta time
t = 0 #Time in milliseconds

class AnimationController:
def __init__(self, animations, animation, frame, frameGap=175):
#Load all animations
self.animations = []
for anim in animations:
list = []
for img in anim:
list.append(pygame.image.load(f'{img}').convert_alpha())
self.animations.append(list)
self.animation = animation
self.frame = frame
self.frameGap = frameGap

def UpdateFrame(self, time):
#self.animations[animation number][frame number]
pass

objects = []
class Object:
def __init__(self, pos, size, velo=Vector2(), texture=(255,0,0)):
self.pos = pos
self.size = size
self.velo = velo
if isinstance(texture, str):
self.texture = pygame.image.load(texture).convert_alpha()
else:
self.texture = texture
objects.append(self)

def rect(self):
return pygame.Rect(self.pos.x, self.pos.y, self.size.x, self.size.y)

def Draw(self):
if isinstance(self.texture, tuple):
pygame.draw.rect(screen, self.texture, self.rect())
if isinstance(self.texture, pygame.Surface):
screen.blit(self.texture, self.pos)
#Add and implement an Animator() class

def Update(self, friction, dt):
self.velo.x *= 1/(1+(friction*dt))
self.pos.x += self.velo.x*dt
for object in objects:
if object != self and object.rect().colliderect(self.rect()):
if self.velo.x > 0:
self.pos.x = object.pos.x - self.size.x
if self.velo.x < 0:
self.pos.x = object.pos.x + object.size.x

self.velo.y *= 1/(1+(friction*dt))
self.pos.y += self.velo.y*dt
for object in objects:
if object != self and object.rect().colliderect(self.rect()):
if self.velo.y > 0:
self.pos.y = object.pos.y - self.size.y
if self.velo.y < 0:
self.pos.y = object.pos.y + object.size.y

player = Object(Vector2(290,190),Vector2(20,20))
wall = Object(Vector2(100,100),Vector2(50,50))

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

keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
player.velo.y = -5
if keys[pygame.K_DOWN]:
player.velo.y = 5
if keys[pygame.K_LEFT]:
player.velo.x = -5
if keys[pygame.K_RIGHT]:
player.velo.x = 5

screen.fill((255,255,255))
for object in objects:
object.Draw()
player.Update(0.1, dt)

pygame.display.update()
dt = clock.tick(fps)/10
t += dt*10
if t % 175 == 0:
print(t)


Подробнее здесь: https://stackoverflow.com/questions/785 ... f-175-even
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Число кратно другое в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Генерировать случайное число между x и y, кратное 5.
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Генерировать случайное число между x и y, кратное 5.
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Генерировать случайное число между x и y, кратное 5.
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Почему (целое число) 1 == (целое число) 1 возвращает true, но (целое число) 200 == (целое число) 200 возвращает false? [
    Anonymous » » в форуме JAVA
    0 Ответы
    104 Просмотры
    Последнее сообщение Anonymous

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