Ejemplo n.º 1
0
    def update(self):
        """
        update main game loop
        """
        camera.rotation_y += mouse.velocity[0] * 40
        camera.rotation_x -= mouse.velocity[1] * 40
        camera.rotation_x = clamp(camera.rotation_x, -90, 90)

        # snake eats snack
        if distance(self.snake.head.position, self.snack.position) < 0.1:
            # make_sound(1)
            self.score[-1] += 1
            msg = 'Your score is {0}'.format(self.score[-1])
            print_on_screen(msg, position=(-0.85, 0.45), scale=2, duration=1)
            self.snake.add_block()
            while True:
                self.snack.random_position()
                snack_pos = self.snack.position
                if not (snack_pos in list(
                        map(lambda x: x.position, self.snake.body))):
                    break

        # snake eats its tail
        if self.snake.self_eat():
            # make_sound(3)
            self.score.append(len(self.snake.body))
            msg = 'You lost!\nYour score is {0}\n[record is {1}]'.format(
                self.score[-1], max(self.score))
            print_on_screen(msg, position=(-0.7, 0.15), scale=5, duration=2)
            self.snake.isPause = True

            invoke(self.start_new_game, delay=3)
Ejemplo n.º 2
0
    def late_init(self):
        self.center_on_screen()
        if not application.development_mode:
            self.fullscreen = True

        self.color = color.dark_gray
        self.render_modes = ('default', 'wireframe', 'colliders', 'normals')
        self.render_mode = 'default'
        self.editor_ui = None

        from ursina import invoke
        invoke(base.accept, 'aspectRatioChanged', self.update_aspect_ratio, delay=1/60)
Ejemplo n.º 3
0
 def check_win(self):
     check = ''.join(
         [p[1] for p in list(sorted(self.phoneme_store.test_positions))])
     test = ''.join(self.phoneme_store.original_phonemes)
     if check == test and not self.parent_game.correct:
         self.parent_game.help_text.text = 'CORRECT!'
         PhonemeEngine.sounds.get('win').play()
         self.parent_game.correct = True
         self.parent_game.score += len(self.phoneme_store.original_phonemes
                                       ) + self.parent_game.difficulty
         invoke(self.phoneme_store.full_audio_dict[
             self.phoneme_store.word].play,
                delay=1)
         invoke(self.parent_game.build, delay=4)
     elif not self.parent_game.correct and check != test:
         logger.debug(check + ' ' + test)
         print(check + ' ' + test)
         PhonemeEngine.sounds.get('lose').play()
Ejemplo n.º 4
0
    def input(self, key):
        if self.hovered:
            if key == 'left mouse down':
                if not self.parent_game.started:
                    self.parent_game.started = True
                if len(self.phoneme_store.phonemes):
                    if self.position[2] == ARENA_DEPTH:
                        if not self.text:
                            phoneme = self.phoneme_store.phonemes.pop(-1)
                            voxel = Voxel(
                                self.phoneme_store,
                                self.parent_game,
                                position=self.position + mouse.normal,
                                texture=self.phoneme_store.textures.get(
                                    phoneme, 'white_cube'),
                                text=phoneme,
                                highlight_color=color.white)
                            self.parent_game.voxels.append(voxel)
                            self.parent_game.score -= 1
                            self.phoneme_store.test_positions.append(
                                (self.position[0], phoneme))
                            self.play_sound(phoneme)
                            logger.debug(phoneme)
                            if not len(self.phoneme_store.phonemes):
                                invoke(self.check_win, delay=.5)
                        else:
                            self.play_sound(self.text)

                else:
                    self.play_sound(self.text)

            if key == 'right mouse down':
                if self.text:
                    if not self.parent_game.correct:
                        self.phoneme_store.phonemes.append(self.text)
                        self.parent_game.voxels.remove(self)
                        if (self.position[0], self.text
                            ) in self.phoneme_store.test_positions:
                            self.phoneme_store.test_positions.remove(
                                (self.position[0], self.text))
                        destroy(self)
                    else:
                        self.play_sound(self.text)
Ejemplo n.º 5
0
 def build(self):
     self.started = True
     word = self.phoneme_store.get_new_word()
     self.update_counter = 0
     if self.give_up_button.enabled:
         self.give_up_button.disable()
     if self.reset_text.enabled:
         self.reset_text.disable()
     if word is not None:
         if self.phoneme_store.pron() is not None:
             self.help_text.text = f'The word is: "{self.phoneme_store.word}"\nLeft click in the green area to lay a phoneme,\nright click to pick one up.'
             self.help_text.enable()
             self.score_text.text = f'Score: {self.score}'
             self.score_text.enable()
             if self.voxels:
                 self.destroy_all()
                 self.help_text.text = self.phoneme_store.word
                 self.correct = False
             for z in range(ARENA_DEPTH + 1):
                 voxel_side_wall = Voxel(self.phoneme_store, self, position=(-1, 1, z))
                 voxel_other_side_wall = Voxel(self.phoneme_store, self, position=(len(self.phoneme_store.phonemes), 1, z))
                 self.voxels.append(voxel_side_wall)
                 self.voxels.append(voxel_other_side_wall)
                 for x in range(len(self.phoneme_store.phonemes)):
                     voxel = Voxel(self.phoneme_store, self, position=(x, 0, z))
                     voxel_wall = Voxel(self.phoneme_store, self, position=(x, 1, -1))
                     self.voxels.append(voxel)
                     self.voxels.append(voxel_wall)
                     if voxel.position[2] == ARENA_DEPTH:
                         voxel.color = color.lime
                         voxel.texture = 'white_cube'
             invoke(self.create_clouds, delay=0.1)
             if self.player:
                 self.player.y = 0
                 self.player.x = len(self.phoneme_store.phonemes) // 2
                 self.player.z = 1
             else:
                 self.generate_player()
         else:
             return self.build()
     else:
         self.end_game()
Ejemplo n.º 6
0
def quit():
    from ursina import invoke
    invoke(sys.exit, delay=.01)