示例#1
0
def play():
    pygame.init()  # инициализируем библиотеку pygame
    window = pygame.display.set_mode((441, 480))  # создание окна c размером
    pygame.display.set_caption("Змейка")  # задаём название окна
    control = Control()
    snake = Snake()
    bot = Bot()
    #is_basic True -- запуск обычный, False -- запуск рандомной карты из файлов
    gui = Gui(is_basic=False)
    food = Food()
    gui.init_field()
    food.get_food_position(gui, snake.body, bot.body)
    var_speed = 0  # переменная для регулировки скорости выполнения программы

    #gui.create_image()

    while control.flag_game:
        gui.check_win_lose(snake.body)
        control.control()
        window.fill(pygame.Color(
            "Black"))  # закрашивание предыдущего квадрата чёрным цветом
        if gui.game == "GAME":  # если флаг равен "GAME"
            snake.draw_snake(
                window)  # то вызываем метод отрисовки змеи на экране
            bot.draw_snake(window)  #отрисовка бота-змеи
            if (food.timer <= 0):  # проверка на жизнь еды
                food.get_food_position(gui, snake.body, bot.body)
            food.draw_food(window)  # и метод отрисовки еды
        elif gui.game == "WIN":  # если флаг равен "WIN"
            if (bot.points <=
                    snake.points):  #проверка очков, кто больше набрал
                gui.draw_win(window)
            else:
                gui.draw_lose(window)
        elif gui.game == "LOSE":  # если флаг равен "LOSE"
            gui.draw_lose(window)  # то отрисовываем избражение поражения
        gui.draw_indicator(window)
        gui.draw_level(window)
        if var_speed % 50 == 0 and control.flag_pause:  # если делится без остатка, то производим изменение координаты квадрата and реакция на паузу
            snake.moove(control.flag_direction)
            snake.check_barrier(gui)

            mv = ""  #проверка бота, все ли работает правильно (можно убрать, но так спокойнее)
            try:
                mv = bot.move(food.food_position, gui.level)
            except:
                mv = bot.move(food.food_position, gui.level)
            #print(mv)
            bot.moove(mv)
            #не трубуется, тк бот никогда к ним не подлезет bot.check_barrier(gui)
            #проверка на съедение и генерация новой еды вне тела змеи
            if snake.eat(food, gui) or bot.eat(food, gui):
                food.get_food_position(gui, snake.body, bot.body)

            bot.check_end_window()
            snake.check_end_window()
            bot.animation()
            snake.animation()
        var_speed += 1
        pygame.display.flip()  # метод отображения окна
示例#2
0
pygame.display.set_caption("Snake")
control = Control()
snake = Snake()
food = Food()
gui = Gui()
gui.init_field()
food.generate_food_position(gui)

while control.flag_game:
    gui.check_win_or_lose()
    control.control()
    window.fill(pygame.Color("Black"))
    if gui.game == "GAME":
        snake.draw_snake(window)
        food.draw_food(window)
        if not control.flag_pause:
            snake.move(control)
            snake.check_barrier(gui)
            snake.eat(food, gui)
            snake.check_end_window()
            snake.animation()
        gui.draw_progress(window)
        gui.draw_level(window)
    elif gui.game == "WIN":
        gui.draw_win(window)
    elif gui.game == "LOSE":
        gui.draw_lose(window)
    pygame.display.flip()
    time.sleep(0.1)
pygame.quit()
示例#3
0
snake = Snake()  # объект класса
gui = Gui()  # объект класса
food = Food()
gui.init_field()
food.get_food_position(gui)
speed = 0

while control.run:
    gui.check_win_lose()
    control.control()
    window.fill((255, 255, 255))
    if gui.game == "GAME":
        snake.draw(window)  # рисуем голову змеи
        food.draw_food(window)  # рисуем еду
    elif gui.game == "WIN":
        gui.draw_win(window)
    elif gui.game == "LOSE":
        gui.draw_lose(window)

    gui.draw_indicator(window)  # рисуем индикатор
    gui.draw_level(window)  # рисуем карту
    pygame.display.update()  # обновление, что бы появился персонаж
    if speed % 10 == 0 and gui.game == "GAME":
        snake.moove_snake(control)
        snake.check_barrier(gui)
        snake.eat(food, gui)
        snake.end_window()
        snake.animation()
    speed += 1
    pygame.display.flip()  # отображение окна