У цьому проекті головний герой - змійка, рухається за допомогою кнопок-стрілочок і збирає яблука, розміщені на ігровому полі.


Скористаємось шаблоном гри:

У цьому проекті використаємо зображення змійки та яблука з файлів snake apple (файли потрібно розмістити у каталозі Python34 диску С)

Завантажимо у проект файли із зображенням змійки та створимо прямокутну область snakerect, у якій він буде відображатись.

snake=pygame.image.load("snake.png")

snakerect = snake.get_rect()

Аналогічно завантажуємо файл з яблуком.


Задаємо початкове положення змійки:

snakex=350

snakey=250


Створюємо список координат, у яких будуть розміщені фрагменти змійки game. На початку гри їх три, і кожна знаходиться на відстані 25 пікселів від попередньої.

game=[]

pos=(snakex,snakey)

game.append(pos)

pos=(snakex+25,snakey)

game.append(pos)

pos=(snakex+25,snakey)

game.append(pos)


Змінна direction вказує напрямок руху змійки. Початково - вправо:

direction=(25,0)


Події клавіатури

Змійка буде рухатись за клавішами стрілок праворуч-ліворуч-вгору-вниз:

    if event.type == pygame.KEYDOWN:

        if event.key == pygame.K_LEFT:

            direction=(-25,0)

        if event.key == pygame.K_RIGHT:

            direction=(25,0)

        if event.key == pygame.K_UP:

            direction=(0,-25)

        if event.key == pygame.K_DOWN:

            direction=(0,25)

    snakex+=direction[0]

    snakey+=direction[1]


Рух змійки означає, що на нову позицію(snakex,snakey) переміщується початок(голова) змійки, а остання її ланка - видаляється. Інакше це можна сформулювати так: на початку змійки додається позиція (snakex,snakey), визначена внаслідок натискання клавіш-стрілок.

    game.insert(0,(snakex,snakey))

    game.pop()


Всі елементи змійки виводяться на екран:

    for element in game:            

        screen.blit(snake, element)


Важливо обмежити рух - лише в межах ігрового поля, інакше - кінець гри.

    if snakex>700 or snakex<0 or snakey>500 or snakey<0:

        done = True 


Створимо яблуко у випадковій позиції (на початку гри):

import random

koshyk=[]

posx=random.choice(range(0,700,25))

posy=random.choice(range(0,500,25))

koshyk.append((posx,posy))

i=0


В ігровому циклі після screen.fill(WHITE) розмістимо команду виведення яблука на екран:

screen.blit(apple, koshyk[i])


У циклі виведення змійки for element in game: розмістимо команду перевірки зіткнення голови змійки з яблуком:

        if abs(element[0]-koshyk[i][0])<20 and abs(element[1]-koshyk[i][1])<20:

            game.append(koshyk[i])

            posx=random.choice(range(0,700,25))

            posy=random.choice(range(0,500,25))

            koshyk.append((posx,posy))

            i+=1


Доповнення

Додайте розмітку у вигляді сітки квадратиків. Розгляньте команду

pygame.draw.line(screen, (188,188,188), [0, 0], [700,500], 1)


Підраховуйте кількість зібраних яблук.


Швидкість руху змійки нехай залежить від кількості зібраних яблук.

Last modified: Sunday, 18 February 2018, 1:42 PM