Змійка
У цьому проекті головний герой - змійка, рухається за допомогою кнопок-стрілочок і збирає яблука, розміщені на ігровому полі.
Скористаємось шаблоном гри:
У цьому проекті використаємо зображення змійки та яблука з файлів 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)
Підраховуйте кількість зібраних яблук.
Швидкість руху змійки нехай залежить від кількості зібраних яблук.