Форум программистов, компьютерный форум, киберфорум
Python: PyGame
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 29.04.2020
Сообщений: 9

Как удлинять змейку после поедания "яблока"?

16.04.2021, 22:03. Показов 5445. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, я не знаю как удлинять змейку после поедания "яблока". Я в программировании новичек, поэтому, если можете объясните все на "доступном" языке. Заранее спасибо)

P.s вот мой код
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import pygame as pg,random,time
import pygame
 
def close_game():
    for i in pygame.event.get():
        if i.type == pygame.QUIT:
            quit()
 
def apple():
    global apple_x, apple_y
    while apple_x % 25 != 0 or apple_y % 25 != 0:
        apple_x = random.randint(25, 575)
        apple_y = random.randint(25, 575)
    pygame.draw.rect(display, (255, 0, 0), (apple_x, apple_y, 25, 25))
 
def move():
    global user_x, user_y, mx, my
    key = pygame.key.get_pressed()
    if key[pygame.K_RIGHT]:
        mx, my = 1, 0
    if key[pygame.K_LEFT]:
        mx, my = -1, 0
    if key[pygame.K_UP]:
        mx, my = 0, -1
    if key[pygame.K_DOWN]:
        mx, my = 0, 1
    user_x += mx * 25
    user_y += my * 25
 
def eat():
    global user_x, user_y, apple_x, apple_y
    if (user_x == apple_x) and (user_y == apple_y):
        apple_y = 1
        apple_x = 1
 
resolution_w, resolution_h = 600, 600 #разрешение на оси х и оси у
display = pygame.display.set_mode((resolution_w,resolution_h))
user_w, user_h, user_x, user_y = 25, 25, resolution_w -500, resolution_h / 2 #параметры пользователя
mx, my = 0, 0
clock = pg.time.Clock()
FPS = 30
apple_x = random.randint(0,600)
apple_y = random.randint(0,600)
snake = []
pygame.display.set_caption(("Пажилой питон"))
 
while True:
    display.fill((0, 0, 0))
    clock.tick(FPS)
    apple()
    move()
    eat()
    pygame.draw.rect(display, (0,255,0), (user_x, user_y, user_w, user_h))
    if user_x > 600 or user_x < -25 or user_y > 600 or user_y < -25:
        break
    pygame.display.flip()
    clock.tick(FPS)
    close_game()
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.04.2021, 22:03
Ответы с готовыми решениями:

Классическая змейка. Почему-то после поедания яблока не меняется его цвет
Ребят, всем привет, пишу тему впервые, не судите за внешний вид..В общем, тут суть такая. Обыкновенная змейка, двигается по нажатиям...

Ускорение скорости змейки после съедания яблока
Пишу змейку на C с использованием ncurses. Вопрос: как сделать, чтобы после съедания яблока скорость передвижения (читай, отрисовки)...

Можно ли удлинять кабель вэб камеры-перепайкой?
Понадобилось дочири-по учебе вэб камера.Сказал-сходи купи,да и проблем нет.Принесла- A4Tech...

2
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
19.04.2021, 07:24
LEGELON, в твоем случае ни как, т.к.:

1) Ты скопипастил сырой код и абсолютно не знаешь как он работает.
2) Ты не знаешь как он работает, т.к. ты не знаешь основ.
3) Даже если я напишу как это сделать, ты не сможешь это сделать

У тебя есть список snake, в нем должны храниться координаты частей тела, при поедании яблока, логично что ты должен добавлять в этот список еще 1 элемент (или несколько в зависимости от условий игры).
0
2 / 1 / 1
Регистрация: 12.04.2021
Сообщений: 13
19.04.2021, 17:54
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import pygame
from random import randrange
 
RES = 800
SIZE = 50
 
x, y = randrange(0, RES, SIZE), randrange(0, RES, SIZE)
apple = randrange(0, RES, SIZE), randrange(0, RES, SIZE)
dirs = {'W': True, 'S': True, 'A': True, 'D': True}
length = 1
score = 0
snake = [(x, y)]
dx, dy = 0, 0
fps = 5
 
pygame.init()
sc = pygame.display.set_mode([RES, RES])
clock = pygame.time.Clock()
font_score = pygame.font.SysFont('Arial', 26, bold=True)
font_end = pygame.font.SysFont('Arial', 66, bold=True)
 
 
while True:
    sc.fill(pygame.Color('black'))
    # рисуем змейку, ЯБЛОКО
    [(pygame.draw.rect(sc, pygame.Color('green'), (i, j, SIZE - 2, SIZE - 2))) for i, j in snake]
    pygame.draw.rect(sc, pygame.Color('red'), (*apple, SIZE, SIZE))
    #показать очки
    render_score = font_score.render(f'SCORE:{score}', 1, pygame.Color('orange'))
    sc.blit(render_score, (5, 5))
    # движение змейки
    x += dx * SIZE
    y += dy * SIZE
    snake.append((x, y))
    snake = snake[-length:]
    # поедания яблока
    if snake[-1] == apple:
        apple = randrange(0, RES, SIZE), randrange(0, RES, SIZE)
        length += 1
        fps += 1
        score += 1
    # выход за границу
    if x < 0 or x > RES - SIZE or y < 0 or y > RES - SIZE or len(snake) != len(set(snake)):
        while True:
            render_end = font_end.render('GAME OVER', 1, pygame.Color('orange'))
            sc.blit(render_end, (RES // 2 - 200, RES // 3))
            pygame.display.flip()
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    exit()
 
 
    pygame.display.flip()
    clock.tick(fps)
 
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
 
    key = pygame.key.get_pressed()
    if key[pygame.K_w] and dirs['W']:
        dx, dy = 0, -1
        dirs = {'W': True, 'S': False, 'A': True, 'D': True}
    if key[pygame.K_s] and dirs['S']:
        dx, dy = 0, 1
        dirs = {'W': False, 'S': True, 'A': True, 'D': True}
    if key[pygame.K_a] and dirs['A']:
        dx, dy = -1, 0
        dirs = {'W': True, 'S': True, 'A': True, 'D': False}
    if key[pygame.K_d] and dirs['D']:
        dx, dy = 1, 0
        dirs = {'W': True, 'S': True, 'A': False, 'D': True}
чутка проще, для новичков.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2021, 17:54
Помогаю со студенческими работами здесь

Как увеличить хвост змейки при съедании яблока?
как сделать что бы при съедании яблока, змейка увеличивалась #pragma endregion int i; bool apple; int appleX, appleY; ...

Как сделать змейку на c++ ?
Помогите .Как можно реализовать хвост для змейки ? Я его воде бы сделал, но он не правильно работает. Сори за мой код, он ,наверно,...

Как сделать движущуюся змейку?
Змейка должна состоять из линий и передвигаться с помощью того,что последняя линия гаснет и в то же время появляется новая впереди. ...

Как сделать такую змейку
Как сделать такую змейку?

Как создать программу змейку
Цель задачи соключаеться в том что вам нужно написать в двохизмерный масив з цифрами в первом файле мы вводим количество рядов и столбцов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой
Programma_Boinc 10.04.2026
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой Если на Windows стоит дискретная NVIDIA или AMD — можно отдать её вычислительную мощность реальным исследованиям. . . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru