Контрольная работа Pygame

Напишите следующую игру:

Есть поле 4х4, в котором записаны числа от 1 до 8, но мы пока не знаем, где что написано. Можно нажать внутрь любого квадрата, чтобы узнать цифру "внутри" этого квадрата. После чего можно нажать внутрь любого другого квадрата. Если цифры будут одинаковыми, то обе цифры останутся на экране, иначе обе цифры пропадут. Цель: сделать так, чтобы во всех клетках были записаны цифры.

Что нужно сделать:
1. Поле.
2. Какое-то месте, где считается количество ходов.
3. Сама игра:
3а. Генерация (желательно случайных, можно начать с заранее заготовленного расположения) чисел
3б. Ход игры - при нажатии внутрь какого-то квадрата показать цифру (если мы не ищем никому пару),
при нажатии внутрь какого-то другого квадрата также показать цифру (если ищем пару предыдущему квадрату), после чего если цифры одинаковые перекрасить квадраты (оставив там цифры), иначе при любом нажатии на экран спрятать цифры обратно и вернуться к состоянию "не ищем никому пару".
4. Окончание игры: если игрок открыл все клетки, поздравить его с этим. Если игрок за 30 ходов так и не справился, то он проиграл.