Какие библиотеки изучить, чтобы создать 2D игру?
==================================================

 В школе, рядом с моим домом, учительница по информатике ушла в декрет. Меня попросили вести информатику и кружок по программированию. Раньше разрабатывал программы на Pascal, C, PHP. Согласился помочь.  

1. Учительница к великому сожалению ничего толком детишкам не рассказывала. Ребята балавались на уроках, либо вовсе не ходили. На последнем уроке, дети заявили, что они смотрели филь по сеть. Я сначала подумал, что какой-то научный фильм. На деле оказалось, что они смотрели фильм "Социальная сеть (про Facebook)".  

2. На деле, большинство учеников оказались сообразительными. Слету схватывают основы программирования. Видимо многое зависит от того как рассказывать.  

3. Так как ребята пропустили очень много как по информатике, так и программированию, я думал как ускорить процесс обучения. При этом чтобы он был им интересен. Сначала я задал каждому по теме для создания презентации, мини реферат. В итоге, ребята почти ничего не сделали и посещаемость начала падать. В коридоре, мельком я услышал их разговор, о том, что было бы здорово сделать игрушку, которую можно было бы загрузить на аппстор и андройд магазин.  

4. На уроке, я им предложил придумать игру и что мы вместе ее разработаем. Видели бы вы их сияющие глаза... Собственно, благодаря игре я закрою сразу три темы (программирование, базы данных, создание сайта) и мимолетно еще десяток тем по информатике.  
  

Для себя я ставлю цель изучить Python и помочь ученикам разработать игрушку. Хочется чтобы игру можно было портировать под основные ОС и мобильные платформы. Так как я уще планирую вести кружок робототехники, поэтому выбрал python.  
  

Ученики будут делать 2д игру, 1 лвл, что-то вроде игры марио. Где персонаж собирает падающие сверху кубики.  

Логику мы разберем, основы python расскажу. Работу со спрайтами разберем.  
  

Остается вопрос в библиотеке, с которой работать. Чтобы меньше было заморочек с портированием в дальнейшем. Сейчас изучаю Pygame.  
  

Собственно, прошу подсказать, какие библиотеки стоит изучить. На что стоит обратить внимание. 

 Бедняга!  

Ты понимаешь на что подписался?  
  

1. Как я понимаю принцип - сначала ставим цель, потом начинаем сами учиться, потом учим детей...  

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

2. Организовать командную разработку в классе - ад кромешный. Даже если класс малокомплектный 15 учеников как положено на информатике. Детский коллектив - там свои лидеры и аутсайдеры, разный уровень знаний, разный темп усвоения материала.  
  

3. Всплывут проблемы с школьным курсом. Например вектор дети понимают весьма смутно - хоть и проходили.   
  

4. Трудно разбить разработку игры по темам урока. Неизбежно какие то важные вещи будут пропускаться (поскольку для разработки игры они не важны), а на механические придется потратить основную массу времени.  
  

ЗЫ как вы поняли - я занимался чем то похожим но на JS 

 Тоже учитель информатики по диплому, сейчас идет практика.  

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

Согласен с тем что есть проблемы со школьным курсом, в школе в основном они как роботы, им дали шаблоны они по ним привыкают работать и набивают руку, очень сложно дать детям такой настрой, что можно делать что-то свое и пробовать совершая ошибки, они очень трудно мирятся с ошибками, ОЧЕНЬ и перестраивать одним мышление одним предметом затруднительно. Не знаю как у вас, но мои 11 класс лучше вообще ничего не напишут(хотя умные есть ребята), чем будут писать и дебажить, натыкаясь на ошибки.  

Про аппстор и маркет - это вообще сложно детям дать, много информации из разных сфер, некоторые из которых слабо относятся к программированию(SDK, IDE) много времени убьете на то что им слабо пригодится в контексте школьного обучения.  

По поводу преподавания в таком стиле - это очень круто, сам стараюсь так давать материал, на конкретных примерах, когда может пригодиться, но учтите что если дальше будете вести информатику до 11 класса столкнетесь с такой дилеммой как ЕГЭ и это очень страшная штука, решать его надо уметь и оно надо для поступления, смотрите как бы боком вам не вышло, когда 15 человек из класса придут домой и скажут - Мам, я не пойду учиться дальше, я игры писать буду. Вы, конечно, обрадуетесь, да и ребенок рад будет, а вот родители не очень) Да и специфика заданий ЕГЭ накладывает свой отпечаток, там нет такого что если ученик отлично знает программирование, то он наберет много баллов, лучше игрушки на кружок, а на информатике по тематическому планированию, с объяснением от вас где это используется и как им это может пригодиться 

 Pygame вполне подходит для этой задачи. Я как раз пишу небольшую карточную игру с помощью нее. Еще я использую numpy.array для работы с координатами, но не думаю, что это хороший вариант. В принципе, больше ничего и не потребуется. [Здесь](http://habrahabr.ru/post/119831/) описано портирование под Android.  

Главное выработайте четкие дедлайны и не ставьте сразу сложных задач.  

Поддерживайте код в читаемом виде. Плохо если через месяц никто уже не будет понимать как это все работает. Возьмите на себя разработку архитектуры и основных интерфейсов. 

 Подведу как итог. Python + Pygame + Gimp. Если у ребят не иссякнет запал мотивации и мы сделаем хоть что-то работающее, тогда дальше уже будем думать о портировании, уровнях и прочем.  
  

Решил, что все таки нужно с учениками поговорить, чтобы они начали с простого. Чтобы каждый написал простую игры с числами, 21 очко, крестики и нолики и тд. Если у них все получится и желание не пропадет, тогда уже приступим к полноценной разработке игры.  
  

Для портирования, py2exe, py2app, Pygame Subset for Android. 

 Ничего дельного не скажу, просто хочу сказать как же это клёво преподавать детям, которые тебя хотят слушать. Да и вообще клево делиться своими знаниями :) 

 когда то, давным давно, вел лабы по OpenGl у студентов.  

Первой лабой мы моделировали спец-эффекты из Quake2 (все играли, всем нравилось)  

выстрел из райлгана, полет ракеты, выстрел из пистолета, взрыв, что то еще не помню уже.  
  

кода там, обычно было, на пару страниц. Важен результат сразу, и тогда будут гореть глаза :)