Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2019, 16:53   #1
Erba
Новичок
Джуниор
 
Регистрация: 17.11.2019
Сообщений: 2
По умолчанию Змейка на питоне

Как сделать что бы при съедании, еда появлялось в рандомном месте
Буду признателен за помощь

Код:
import pygame

from control import Control
from snake import Snake

pygame.init()
window = pygame.display.set_mode((440, 440))
pygame.display.set_caption("Snake")
control = Control()
snake = Snake()

var_speed = 0

flag_game = True

while control.flag_game:
    control.control()
    window.fill(pygame.Color("Black"))
    snake.draw_snake(window)
    pygame.draw.rect(window,pygame.Color("Red"),pygame.Rect(100, 100, 10,10))

    if var_speed % 200 == 0 and control.flag_pause:
        snake.moove(control)
        snake.check_end_window()
        snake.animation()
        snake.cheak_eat([100, 100])

    var_speed += 1
    pygame.display.flip()
Код:
import pygame
from pygame.locals import *



class Control:
    def __init__(self):
        self.flag_game = True
        self.flag_direction = "RIGHT"
        self.flag_pause = True

    def control(self):
        """Движение от флага"""

        for event in pygame.event.get():
            if event.type == QUIT:
                self.flag_game = False
            elif event.type == KEYDOWN:
                if event.key == K_RIGHT or event.key == ord('d') and self.flag_direction != "LEFT":
                    self.flag_direction = "RIGHT"
                elif event.key == K_LEFT or event.key == ord('a') and self.flag_direction != "RIGHT":
                    self.flag_direction = "LEFT"
                elif event.key == K_UP or event.key == ord('w') and self.flag_direction != "DOWN":
                    self.flag_direction = "UP"
                elif event.key == K_DOWN or event.key == ord('s') and self.flag_direction != "UP":
                    self.flag_direction = "DOWN"
                elif event.key == K_ESCAPE:
                    self.flag_game = False
                elif event.key == K_SPACE:
                    if self.flag_pause:
                        self.flag_pause = False
                    elif self.flag_pause == False:
                         self.flag_pause = True
Код:
import pygame


class Snake:

    def __init__(self):
        self.head = [45, 45]
        self.body = [[45,45],[34,45],[23,45]]
        self.eat = False

    def moove (self,control):
        """Движение змеи"""
        if control.flag_direction == "RIGHT":
            self.head[0] += 11
        elif control.flag_direction == "LEFT":
            self.head[0] -= 11
        elif control.flag_direction == "UP":
            self.head[1] -= 11
        elif control.flag_direction == "DOWN":
            self.head[1] += 11


    def cheak_eat(self,food):
        if self.head == food:
            self.eat = True



    def animation(self):
        self.body.insert(0,list(self.head))
        if not self.eat:
            self.body.pop()
        else:
            self.eat = False

    def draw_snake (self,window):
        """Отрисовка змеи на экране"""
        for segment in self.body:
            pygame.draw.rect(window,pygame.Color("Green"),pygame.Rect(segment[0],segment[1],10,10))

    def check_end_window(self):
        if self.head[0] >= 441:
            self.head[0] = 1
        elif self.head[0] <= 0:
            self.head[0] = 441
        elif self.head[1] <= 0:
            self.head[1] = 441
        elif self.head[1] >= 441:
            self.head[1] = 1

Последний раз редактировалось Erba; 17.11.2019 в 18:39.
Erba вне форума Ответить с цитированием
Старый 17.11.2019, 21:02   #2
Erba
Новичок
Джуниор
 
Регистрация: 17.11.2019
Сообщений: 2
По умолчанию

Помощь не нужна, все уже сделал
Erba вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OПП в питоне malowe Python 1 12.06.2019 15:46
Бот вк на питоне Се33иН Python 0 04.06.2019 18:54
Класс в питоне Palomnik1096 Python 7 14.10.2018 21:51
программирование на питоне nat0901 Помощь студентам 7 08.11.2010 19:49