Это дополнительный вопрос к комментариям в моем последнем вопросе. Мне сказали, что экран командной строки мигает, потому что я не ограничивал количество кадров в секунду. Я провел некоторое исследование о том, как ограничить количество кадров в секунду, и обнаружил следующее:
def limit_frames(FPS):
return 1/ FPS
while True: # The main game loop
# rest of the code
time.sleep(limit_frames())
Limit_frames
- это обратная функция, которая возвращает меньшее значение, если FPS больше, и это возвращаемое значение используется. в основном l oop в качестве аргумента time.sleep
, так что больший вход FPS для функции limit_frames
уменьшает время ожидания, а значит, и больше кадров. Однако, это все еще не работает для меня, и окно все еще мерцает. Любая помощь будет оценена. Спасибо
Редактировать:
Это класс карты:
class Map:
def __init__(self):
self.map = [[" " for i in range(50)]for i in range(40)]
self.n = 0 # counter used for boundry
def update(self, thing, x, y):
self.map[y][x] = thing
def draw(self):
for layer in self.map:
for item in layer:
print(item, end= " ")
print('')
def boundry(self):
for i in range(50): # TOP
self.update("_", self.n, 0)
self.n += 1
if self.n >= 49:
self.n = 0
for i in range(40): # LEFT
self.update("|", 0, self.n)
self.n += 1
if self.n >= 39:
self.n = 0
for i in range(40): # RIGHT
self.update("|", 49, self.n)
self.n += 1
if self.n >= 39:
self.n = 0
for i in range(50): # BOTTOM
self.update("_", self.n, 39)
self.n += 1
if self.n >= 49:
self.n = 0
Я использую функцию обновления для обновления карты. Я назвал его в разных классах, таких как игрок, чтобы добавить их на карту. Пример таков:
def draw(self):
game_map.update(self.player, self.x, self.y)
Ниже приводится описание всей игры l oop:
start = time.time()
FPS = 10000
while True:
end = time.time()
difference = end - start
game_map.draw()
game_map.boundry()
os.system("cls")
player.draw()
player.move()
player.boundries()
player.print_score()
game.generate_bullet()
game.shoot()
game.bullet_boundries()
game.generate_enemies(difference)
game.draw_enemies()
game.move_enemies()
game.enemy_boundries()
game.hit()
time.sleep(1/FPS)