Задание на каникулы: PyGame и игра ?Жизнь?
PyGame как простая библиотека работы с графикой
- Событийное программирование. Mainloop. (Общее описание работы)
Простейшая программа на PyGame: экран и Surface
Виды событий PyGame и способы их получения (клавиатура, мышь, закрытие окна)
- Рисование простейших графических объектов
- Копирование прямоугольных областей. Реализация ?резиновой линии?
Домашнее задание
Почитать статьи по PyGame:
- Попробовать примеры из статей выше
- Приделать к генератору лабиринта его графическое изображение
Сделать также визуализатор прохождения лабиринта
Можно посмотреть курс 2009-2010 гг.
Можно попытаться почитать код программ с http://pygame.org (предупреждение: 80% всего на свете ? ерунда)
- Если надоело программировать:
Прочитать про клеточные автоматы и игру ?Жизнь?:
На http://beluch.ru/life/conway.htm (ссылка в конце предыдущего ресурса)
Установить Golly и побаловаться (входит в ALTLinux P5/P6)
Если захотелось разобраться самому, можно попробовать почитать код неплохой программы на PyGame, Life as a bit Deluxe
Требует Python 2.7; для запуска под Python 2.6 нужно заменить конструкции вида {(?),(?),?} на ((?),(?),?) или set(((?),(?),?)) в двух местах:
1 diff -ur life-DLX/lif_converter.py life-DLX.new/lif_converter.py 2 --- life-DLX/lif_converter.py 2011-11-18 14:15:24.000000000 +0400 3 +++ life-DLX.new/lif_converter.py 2011-12-25 15:51:55.000000000 +0400 4 @@ -74,7 +74,7 @@ 5 6 ### 7 if __name__ == "__main__": 8 - secta = {(1,0),(2,0),(3,0),(0,1),(1,1),(1,2)} 9 + secta = ((1,0),(2,0),(3,0),(0,1),(1,1),(1,2)) 10 (mirror_H(secta)) 11 12 13 Binary files life-DLX/lif_converter.pyc and life-DLX.new/lif_converter.pyc differ 14 diff -ur life-DLX/life-DLX-100.pyw life-DLX.new/life-DLX-100.pyw 15 --- life-DLX/life-DLX-100.pyw 2011-11-18 16:14:00.000000000 +0400 16 +++ life-DLX.new/life-DLX-100.pyw 2011-12-25 15:51:23.000000000 +0400 17 @@ -19,9 +19,9 @@ 18 infowin = pygame.image.load("info.png").convert() 19 arial = pygame.font.SysFont("arial", 11, bold=True, italic=False) 20 21 -ADJACENTS = {(-1, 1),(0, 1),(1,1 ), 22 +ADJACENTS = ((-1, 1),(0, 1),(1,1 ), 23 (-1, 0),(1, 0), 24 - (-1,-1),(0,-1),(1,-1)} 25 + (-1,-1),(0,-1),(1,-1)) 26 27 #just a convenience 28 BaseOffset = ((0,0),(200,150),(320,240),(360,270))
Условные обозначения
? тема по Linux
?? необязательная тема
? теоретическое задание
? тема для самостоятельного изучения