Засветы при тексте
При окончании игры должен выдаваться текст но выдается это:
вот код:
from ursina import *
from game_objects import *
class Game(Ursina):
def __init__(self):
super().__init__()
window.color = color.black
window.fullscreen_size = 1920, 1080
window.fullscreen = True
Light(type='ambient' , color=(0.5, 0.5, 0.5, 1))
Light(type='directional', color=(0.5, 0.5, 0.5, 1), direction=(1, 1, 1))
self.MAP_SIZE = 20
self.new_game()
camera.position = (self.MAP_SIZE // 2, -20.5, -20)
camera.rotation_x = -57
def create_map(self, MAP_SIZE):
Entity(model='quad', scale=MAP_SIZE, position=(MAP_SIZE // 2, MAP_SIZE // 2, 0), color=color.dark_gray)
Entity(model=Grid(MAP_SIZE, MAP_SIZE), scale=MAP_SIZE,
position=(MAP_SIZE // 2, MAP_SIZE // 2, -0.01), color=color.white)
def new_game(self):
scene.clear()
self.create_map(self.MAP_SIZE)
self.apple = Apple(self.MAP_SIZE, model='sphere', color=color.red)
self.snake = Snake(self.MAP_SIZE)
def input(self, key):
if key == 'e':
camera.rotation_x = 0
camera.position = (self.MAP_SIZE // 2, self.MAP_SIZE // 2, -50)
elif key == 'r':
camera.position = (self.MAP_SIZE // 2, -20.5, -20)
camera.rotation_x = -57
elif key == 't':
exit()
super().input(key)
def check_apple_eaten(self):
if self.snake.segment_positions[-1] == self.apple.position:
self.snake.add_segment()
self.apple.new_position()
def check_game_over(self):
snake = self.snake.segment_positions
if 0 < snake[-1][0] < self.MAP_SIZE and 0 < snake[-1][1] < self.MAP_SIZE and len(snake) == len(set(snake)):
return
print_on_screen('GAME OVER', position=(-0.7, 0.1), scale=10, duration=1)
self.snake.direction = Vec3(0, 0, 0)
self.snake.permissions = dict.fromkeys(self.snake.permissions, 0)
invoke(self.new_game, delay=1)
def update(self):
print_on_screen(f'Score: {self.snake.score}', position=(-0.85, 0.45), scale=3, duration=1 / 20)
self.check_apple_eaten()
self.check_game_over()
self.snake.run()
if __name__ =='__main__':
game = Game()
update = game.update
game.run()
второй файл:
from ursina import *
from random import randrange
class Apple(Entity):
def __init__(self, MAP_SIZE, **kwargs):
super().__init__(**kwargs)
self.MAP_SIZE = MAP_SIZE
self.new_position()
def new_position(self):
self.position = (randrange(self.MAP_SIZE) + 0.5, randrange(self.MAP_SIZE) + 0.5, -0.5)
class Snake:
def __init__(self, MAP_SIZE):
self.MAP_SIZE = MAP_SIZE
self.segment_lenght = 1
self.position_lenght = self.segment_lenght + 1
self.segment_positions = [Vec3(randrange(MAP_SIZE) + 0.5, randrange(MAP_SIZE) + 0.5, - 0.5)]
self.segment_entities = []
self.create_segment(self.segment_positions[0])
self.directions = {'a': Vec3(-1, 0, 0), 'd': Vec3(1, 0, 0), 'w': Vec3(0, 1, 0), 's': Vec3(0, -1, 0)}
self.direction = Vec3(0, 0, 0)
self.permissions = {'a': 1, 'd': 1, 'w': 1, 's': 1}
self.taboo_movement = {'a': 'd', 'd': 'a', 'w': 's', 's': 'w'}
self.speed, self.score = 12, 0
self.frame_counter = 0
def add_segment(self):
self.segment_lenght += 1
self.position_lenght += 1
self.score += 1
self.speed = max(self.speed -1, 5)
self.create_segment(self.segment_positions[0])
def create_segment(self, position):
entity = Entity(position=position)
Entity(model='sphere', color=color.green, position=position).add_script(
SmoothFollow(speed=12, target=entity, offset=(0, 0, 0)))
self.segment_entities.insert(0, entity)
def run(self):
self.frame_counter += 1
if not self.frame_counter % self.speed:
self.control()
self.segment_positions.append(self.segment_positions[-1] + self.direction)
self.segment_positions = self.segment_positions[-self.segment_lenght:]
for segment, segment_position in zip(self.segment_entities, self.segment_positions):
segment.position = segment_position
def control(self):
for key in 'wasd':
if held_keys[key] and self.permissions[key]:
self.direction = self.directions[key]
self.permissions = dict.fromkeys(self.permissions, 1)
self.permissions[self.taboo_movement[key]] = 0
break
в чем проблема? вот что должно высветиться (а также не появляеться надпись score):

