21/11/2024

Лучший алгоритм решения задач по программированию на Python

 

Содержание статьи

Лучший алгоритм решения задач по программированию на Python

Лучший алгоритм решения задач по программированию на Python

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

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

Формулировка задачи

Задача: написать функцию, принимающую одно целочисленное значение и возвращающую сумму целых чисел от 0 до этого значения включительно. При использовании нецелочисленного значения функция должна возвращать 0.

Итак, при передаче функции числа 5 она вернет сумму целых чисел от 0 до 5 или (0+1+2+3+4+5), которая равняется 15. Если передаваемое значение относится к другому типу, отличному от целого числа, такому как строка или число с плавающей точкой и т. д., функция вернет 0.

Разработка плана

На первом этапе необходимо решить задачу, используя псевдокод. Он позволит спланировать действия без оглядки на синтаксис.

Попробуем что-нибудь в таком роде:

Мы определили функцию add , принимающую значение num . Внутри нее в виде комментариев схематично прописываются шаги. Если передаваемое функции значение является целым числом, то мы складываем числа от 0 до этого значения включительно и затем возвращаем сумму. Если же оно не принадлежит к типу целых чисел — просто возвращаем 0. После этого прописываем несколько примеров конкретных входных данных для получения желаемого вывода.

Распишем подробнее следующий шаг псевдокода:

Это можно сделать несколькими способами. Как будет выглядеть псевдокод, если мы попробуем выполнить этот шаг с помощью цикла for ?

Теперь постараемся справиться с задачей на основе разработанного плана!

Цикл for

С помощью цикла for задача решается следующим образом:

Проанализируем этот код.

Сначала с помощью функции type проверяем, является ли передаваемое значение num целым числом.

Если тип — целое число, создаем переменную sum и присваиваем ей значение 0.

Затем с помощью цикла for и функции range перебираем целые числа от 0 до входного значения. Обратите внимание, что функция range создает одноименный итерируемый объект, который начинается с 0 (если не указано конкретное начальное значение) и переходит к числу, меньшему, чем завершающее цикл значение (поскольку оно единственно возможное). Следовательно, к этому значению нужно прибавить 1 (num+1), так как требуется сложить все целые числа от 0 до num включительно.

Функция range создает итерируемый объект range , что позволяет перебирать в нем элементы в цикле for , прибавляя каждое число или x к переменной sum .

По завершению итераций функция возвращает sum .

И наконец, если передаваемое функции значение не является целым числом, возвращаем 0.

Вариант кода без комментариев.

Протестировав функцию add , получаем правильные результаты.

Избранный способ отлично справляется с данной задачей по программированию. Код выполняет свое назначение, легко читаем и работает должным образом. Но, предприняв попытку найти другие варианты достижения поставленной цели, мы извлечем для себя больше пользы, поскольку освежим знания Python и прокачаем навыки решения проблемных ситуаций. Эти приемы могут быть более или менее пайтонические, но в любом случае это интересный и полезный опыт поиска разных подходов к одной и той же задаче.

Итак, приступаем к новому способу решения.

Функция reduce

Функция reduce принимает итерируемый объект и приводит его к единичному суммарному значению. У нее может быть 3 аргумента, два из которых являются обязательными: функция с 2 аргументами и итерируемый объект.

Вместо цикла for воспользуемся reduce для нахождения суммы итерируемого объекта и решения поставленной задачи.

Лямбда-функция служит в качестве аргумента, а объект range используется как итерируемый объект. Reduce() приводит range к единичному суммарному значению sum , которое мы возвращаем.

Тернарные операторы

С помощью тернарных операторов можно еще больше сократить код, оформив инструкцию if/else в одну строку следующим образом:

С — это условие, которое проверяется в первую очередь. Если оно True, то вычисляется x, иначе — y, после чего возвращаются соответствующие значения.

В коде это можно реализовать так:

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

Далее разберем еще один способ.

Функция sum()

Он состоит в применении встроенной функции Python — sum() . Она принимает итерируемый объект и возвращает сумму его элементов. Возможен вариант с передачей начального значения, если его первично требуется добавить к элементам.

Опробуем эту функцию в деле:

Вероятно, это самый лучший способ справиться с задачей, поскольку код одновременно и максимально компактный, и легко читаемый. Кроме того, можно не сомневаться в его отличной производительности.

Заключение

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

100 Задач по программированию на Python

Подтянуть свои навыки в программировании, разработав порядка 100 программ на своем собственном языке программирования. Важно относится к данному вызову не как к разовому, а как к долгосрочному вызову (т.е. на это может уйти даже от полгода, до года), по этому если не готовы — не беритесь.

Задания:

Всего в вызове 100 заданий, которые нужно выполнить. Все они разложены по этапам.

ВАЖНО: Перед тем как браться за задачи, освойте следующее:

  • Выберите свой язык программирования, на котором вы будете писать.
  • Выберите программу на которой будете заниматься разработками.
  • Изучите основы своего языка (можно во время выполнения задач).
  • Изучите что такое ООП (на 2 этапе), научитесь пользоваться классами.
  • Изучите создание библиотек классов (dll) перед 5 этапом.

Правила:

Чтобы всё правильно сделать и не ошибиться, стоит следовать простым и незаурядным правилам:

  1. Не спешите! Даже если вы в себе уверены, перед каждой задачей настраивайтесь!
  2. Не халтурьте. Старайтесь делать всё красиво, так, как будто вы делаете это для кого-то важного.
  3. Не зазнавайтесь. Если вы не уверены, что сможете такое разработать, упрощайте для себя задачу.
  4. Не тупите. Если вы застряли на каком-то этапе, выполняйте задачу заного, значительно упрощая её.
  5. Не тужтесь. Если вам не нравится задача, не заставляйте себя. Придумайте аналогичную и выполните её.

Этапы выполнения заданий:

Этап 1. Я консольщик.

На этом этапе из 10 задач, вашей, будет являться изучение работы с консолью и все десять приложений обязательно должны быть исполнены в консоли. Если вы новичок, не спешите, отводите на каждую задачу минимум день (чтобы освоиться и закрепить всё в своей голове). Если вы профи — можете сделать всё за раз в одной программе (только в том случае, если уверены в себе).

Этап 2. Мастер оконной разработки.

Второй этап посвящен изучение оконной разработки. В зависимости от того, какое IDE вы выбрали, какой путь оконной разработки вы выбрали, определите для себя свою ключевую задачу — освоить основные элементы разработки оконных приложений. На этом этапе ознакомьтесь с особенностями оконной разработки.

Этап 3. Различные задачки.

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

Между-этап. Гексагон.

Вы знаете о гексагонах? Почитайте в интернете. Интерфейс таких программ весьма сложен, но очень красив и своеобразен. Сумеете ли вы освоить разработку на уровне гексагонов? Постарайтесь выработать свой алгоритм разработки гексагонов.

Этап 4. Игры для компаний.

Дано 9 различных задач для приложения, которое может пригодиться практически в любой заскучавшей компании (как повод развеется), вам нужно решить данные задачи через программирование, разработав 9 соответствующих программ. Постарайтесь адаптировать программы так, чтобы их действительно было интересно использовать в компании (чем сможете как раз похвастаться перед друзьями).

Этап 5. Разработчик игр.

В этом этапе собрано аж 30 задач разного характера по разработке различных игр со своей собственной внутри игровой логикой. На этом этапе придется попотеть и он считается первым самым сложным этапом. На этом этапе вам придется разрабатывать ООП, логику программы и всё тщательно продумывать.

Этап 6. Разработчик софта.

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

Этап 7. Трехмерная графика.

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

Консольная шпаргалка

Постановка задачи: красиво вывести информацию о типах данных (целочисленные, строки) и их переменных (int, string) и других существующих в вашем языке типе данных. Оформить всё аккуратно и красиво.

Консольный перехват ошибки

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

Консольный калькулятор

Постановка задачи: написать программу, которая умеет выполнять следующие действия: сложение, вычитание, умножение, деление и возведение в степень. Количество чисел выбирайте произвольное (простая задача — два числа, сложная задача — количество чисел вводит пользователь).

Консольный массив

Постановка задачи: Разработать программу которая умеет выводить массив M x N.

Усложнение задачи: Сделать так, чтобы можно было производить какие-либо операции над массивами. (К примеру чисел в массиве, нахождение общего знаменателя и так далее — подобные задачи можно найти в интернете). Для того чтобы зачесть себе в карму усложнение задачи, решите как минимум 5 задач с матрицами.

Консольная рекурсия

Постановка задачи: Создать консольную программу выполняющую рекурсию (хорошо подойдет цикл do while), иначе говоря которая закончится только при определенном действии (к примеру «выход»).

Консольные наскальные рисунки

Постановка задачи: Создать консольную программу, которая выводит в консоли определенный рисунок. Пользуйтесь возможностью консоли изменять цвет текста и цвет подложки под текст — за счет этого можно изображать своеобразные «рисунки». Можете воспользоваться рисунками в виде текстовых символов (в интернете полно примеров).

Консольная свободная задача #1

Постановка свободной задачи: поставьте перед собой определенную конкретную задачу, расписав алгоритм (как эта задача будет действовать) и попробуйте решить её. Постарайтесь сделать так, чтобы задача не была сложной (чтобы вы знали, что нужно сделать чтобы решить её), но, в то же время не стандартной.

Консольная свободная задача #2

Постановка свободной задачи: как и в свободной задаче #1-4

Консольная свободная задача #3

Постановка свободной задачи: как и в свободной задаче #1-4

Консольная свободная задача #4

Постановка свободной задачи: как и в свободной задаче #1-4

Конвертер величин

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

Записки

Постановка задачи: разработать программу которая может сохранять ваши записки (и загружать их). Записки должны быть в .txt формате. Программа должна напоминать простой текстовый редактор.

Легкое тестирование

Постановка задачи: не нужно громоздить крутую программу для тестирования, разработайте простую программу тестирования на основе какого-либо алгоритма (теста), или своего собственного. Сделайте так, чтобы программа выдавала результаты на основании полученных данных.

Мои важные программы

Постановка задачи: Вы пользуетесь какими-то определенными программами уже на протяжении долгого времени? Разработайте программу, которую вы запустите единожды и через неё сможете запустить одно из нужных вам приложений. Хотите усложнить? Добавьте возможность сворачивать вашу программу в трей (чтобы к ней было легко обратиться).

Дизайнерское решение

Постановка задачи: Используя особый элемент — картинку(/картинки) (или как вам удобней), сделайте простую программу, к примеру калькулятор (простой), таким образом, чтобы все элементы были исключительно элементами вашего дизайна (а не предложенного, т.е. к примеру стандартные кнопки).

Мини-веб-браузер

Постановка задачи: Разработайте программу, которая будет с легкостью читать .html файлы и будет перемещаться между ними (т.е. при нажатии на ссылку открывать следующий файл, который был задан через html код). Если вы не разбираетесь в html, сделайте так, чтобы ваша программа могла читать интернет-сайты.

Код доступа "V3N3P4"

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

У меня есть свой функционал

Постановка задачи: Разработайте программу в которой есть элемент «меню«, аккуратно и красиво оформленное, благодаря которому можно попадать в отдельную категорию. К примеру сделайте программу, выглядящую следующим образом: у вас есть кнопка, текстовое окно (которое загружает определенный текст) и меню. На меню вы выбираете одну из созданных вами программ, на кнопке появляется «запуск!», а в текстовом окне информация о программе.

Секундомер и таймер

Постановка задачи: Разработайте программу, которая умеет засекать время по кругам и выдавать информацию. А так же отдельную часть программы посвященную для таймера (обратного отсчета). Обязательные условия: должно быть одно окно (не должно быть переходов по окнам), а так же секундомер и таймер не должны пересекаться (два отдельных информационных поля). Одно окно, включен (к примеру) секундомер. Нажимаем на отдельную кнопку, секундомер исчезает, на его месте появляется таймер.

Произвольная задача

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

Черное или белое?

Постановка задачи: Разработать программу, благодаря которой можно потренировать свою интуицию, выбирая между «черным» и «белым», программа же должна рандомно выдавать определенный цвет (по желанию можно усложнить программу).

Числовой диапазон

Постановка задачи: Разработать программу, которая будет определять сколько цифр X (вводится с клавиатуры) содержится в диапазоне чисел от a1 до a2 (то есть программа должна будет перебирать цифры и искать в них совпадение с цифрой X). Результат выдавать на экран (желательно больше статистики).

Буквоцифры

Постановка задачи: В русском языке 33 буквы, ваша задача сделать программу которая сможет производить операции со словами (переводить каждый символ в цифру, складывать её с остальными цифрами и в результате получать число) — в последствии производить операции над этим числом.

Пример:
Саша + Маша = 89

(19 + 1 + 26 + 1) + (14 + 1 + 26 + 1) = 47 + 42

  • С — 19
  • А — 1
  • Ш — 26
  • М — 14

Микробы

Постановка задачи: Составить программу решающую следующую задачу:

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

Песочные часы

Постановка задачи: Разработать программу — песочные часы. Время должно устанавливаться с клавиатуры.

Игральные кости

Постановка задачи: Разработать программу по аналогу игральной кости. Разработать возможность выдачи из разных игральных костей (додекаэдр и прочие). Так же разработать возможность использования нескольких костей одновременно.

Постановка задачи: Разработать программу — весы, которая будет взвешивать определенные объекты. Объекты должны быть заранее установлены в программу.

Яблочный завод

Постановка задачи: Создать программу, которая будет работать как завод, выпускать яблоки. При этом должны попадаться плохие яблоки с периодичностью в 5%. Сделать возможность паковать яблоки, при этом добавить возможность делить яблоко пополам.

Купюрообменник

Постановка задачи: У вас есть определенное количество монет (разного номинала), от копеек до рублей. Разработайте возможность перевода этих денег в купюры различного номинала, с возможностью выдавать остаток. Алгоритм задачи — на собственное усмотрение.

Отель 5 звезд

Постановка задачи: Разработать программу, в которой есть M гостиничных номеров (каждый номер должен добавляться отдельно. Для презентации номеров отеля с указанием цены и что находится в комнате. Оформить всё стильно, как будто вы и вправду презентуете пятизвездочный отель.

В какой баноке находится шарик?

Постановка задачи: Разработать программу (с анимацией), которая тосует баночки от 1 до (самостоятельно выбрать, в зависимости от сложности задачи). В одной из них хранится шарик и пользователь должен будет определять, в какой-же он есть. Задача должна быть зрительно решаема.

Дом для кошек

Постановка задачи: есть десять домов для кошек. По очереди в каждый из домиков (случайным образом) заселяется кошка. Предоставить пользователю задачу, в которой он должен будет определить, в какой последовательности заселялись в дома кошки. Оформить всё красиво.

Постановка задачи: Составить программу могущую решать следующую задачу:

Задачка: Два поезда, находящиеся на расстоянии A км, движутся навстречу друг другу со скоростью B1 и B2 км/ч каждый. Муха берёт старт с одного из поездов и летит по направлению к другому со скоростью X км/ч. Долетев до другого поезда, муха разворачивается и летит назад к первому. Так она летает туда и обратно, пока два поезда не сталкиваются, и насекомое погибает. Какое расстояние успела пролететь муха?

Разработать алгоритм растосовки карт

Постановка задачи: В интернете много алгоритмов тосовки карт, если не справитесь, можете подглядеть. Карты должны тосоваться таким образом, чтобы избегать максимальное количество повторов, выдавая оптимальную тосовку карт. Обязательно использовать массив.

Познавательные приключения в машине

Постановка задачи: разработать программу, благодаря которой вы можете определить в какую сторону движется тот, или иной предмет. Для примера можете взять три предмета: «маятник», «пузырь в банке с водой» и «шарик с гелием». При этом разработайте анимацию и кнопки, на которых вы запускаете машину и заставляете её тормозить.

.
Подсказка:

Если машина начнет двигаться вперед, то:

  • Маятник отклонится назад.
  • Шарик с гелием отклонится вперед.
  • Пузырь в банке с водой отклонится вперед.

Соответственно при торможении — наоборот.

Если так и не поняли, посмотрите познавательное видео:

План эвакуации

Постановка задачи: в штатах, где часто встречаются смерчи есть маленький городок, который может перемещаться. Разработать программу в которой вы сможете на массиве исследовать, куда лучше передвинуться. Смерчей может быть N, городок обязательно один (не усложняйте задачу). Смерчи передвигаются случайным образом на 1 клетку (в двумерном массиве), дом вы можете перемещать сами (выбирая нужную вам ячейку в двумерном массиве.

Простое решение задачи: Дать смерчам двигаться по массиву, а дом передвигать вручную, пользуясь текстовым полем.

Сложное решение задачи: Использовать графичческий интерфейс, где можно отследить перемещение дома.

Задача со спичками

Постановка задачи: Разработать программу Drag&Drops со спичками, чтобы пользователь мог перетаскивать определенные спички и получать нужный результат. Задачи со спичками можно достать в интернете.

Лягушки в болоте

Постановка задачи: Поменяйте местами лягушек (можно использовать другие фигуры, или абстракцию). Три лягушки слева должны переместиться на 3 камня справа, а три лягушки справа – на 3 камня слева. Каждая лягушка может прыгать только вперёд на соседний камень, если он пустует, или на пустующий камень позади соседней лягушки.

Лабиринты

Постановка задачи: Разработать программу, в которой генерируются лабиринты (простой вариант: вручную, сложный вариант: рандомно). Ваша задача найти правильный путь и угадать куда он приведет. Вы должны разработать программу таким образом, чтобы пользователь видел изначальную точку и варианты, куда может привести лабиринт. Дать возможность пользователю производить выбор и выдавать результат (ошибся ли пользователь, или показал правильный путь).

Магический шар

Постановка задачи: Разработать программу, которая будет как «магически» шар выдавать случайный результат. К примеру, вы ей задаете вопрос: «. . .. . .. ?», а она выдает вам результат из предложенного:

  • Да
  • Нет
  • Скорее всего да
  • Скорее всего нет
  • Возможно
  • Имеются перспективы
  • Вопрос задан неверно

По желанию дополнить ответами.

Гексагон

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

Ассоциации

Постановка задачи: Компьютер должен предлагать интересное слово, которое должен в виде ассоцииации передать один игрок, другому игроку (и так до последнего). Суть в интересе сравнить изначальное слово (о котором знает тот, кто сидит у компьютера) с конечным. Программа очень простая.

Загадки

Постановка задачи: Разработать программу, которая будет задавать вам загадки, а вы должны будете угадать правильный ответ. Скачайте какую-либо текстовую базу загадок и настройте программу так, чтобы она распознавала загадки и ответ и пользователь мог с ней спокойно взаимодействовать. Выводите какой-либо результат.

Крутилка для твистера

Постановка задачи: Есть игра, называемая «твистер» — для неё есть специальный спинер, который не всегда удобно крутить играючи. Разработайте программу благодаря которой один из игроков, который ближе всего к мышке сможет крутить спинер.

Фанты

Постановка задачи: Разработайте программу, выдающую определенный «фант», который игрок обязан будет выполнить. Фанты должны выгружаться из текстового файла, в котором построчно были введены определенные задания. Фанты можно редактировать, добавлять, или удалять через программу.

Правда или желание

Постановка задачи: Разработать игру, которая спрашивает: «Правда, или желание?», в случае выбора игрока, игрок должен будет рассказать какую-либо правду, спрошенную компьютером, или выполнить желание, которое компьютер выдаст. Ответы должны быть заранее заготовлены. Игрок выбирается произвольно, рандомом, но не учитывая N предыдущих (т.е. задается с компьютера, сколько раз не спрашивать того человека, который отвечал).

Бутылочка

Постановка задачи: Разработать программу спинер, которая будет раскручивать определенный предмет, выадавая действия заранее установленным участникам. Программу красиво оформить. Предоставить возможность добавлять, удалять и редактировать установленные действия.

Крокодил

Постановка задачи: разработать программу, которая будет выдавать изображение и название данного изображения (к примеру: «Радуга прыгает через забор») и человек, удививший это изображение должен будет как-либо изобразить перед компанией данное изображение, не используя слов и не показывая на похожие предметы. Изобразить собой.

Я никогда не .

Постановка задачи: Разработать программу, в которой будет заложено какие-либо действия, которые мог совершать человек. Разработать колличество баллов (или возможности играть без них), по которым видно, сколько разных действий совершал человек, предложенных компьютером.

Произвольная задача игры для компании

Постановка задачи: Разработайте компьютерную программу, которая вам будет интересна и может быть применима в компании. Можете воспользоваться интернетом, можете воспользоваться собственным умом.

Сапер

Постановка задачи: Разработать программу, как аналог саперу. Можно и желательно со своим интерфейсом. Со своими упрощенными, или усложненными задачами (в зависимости от того, как справитесь с поставленной перед собой задачей).

Найди число

Постановка задачи: Арифметическая задача, внутри которой вам нужно найти число заданное системой. Как реализовывать данный алгоритм решайте сами.

Пинболл

Постановка задачи: Задача сложная. Разработать программу, которая будет работать как пинбол, с анимированным шариком ударяющимся о препятствия, которому пользователь должен не дать попасть в определенное отверстие.

Дурак

Постановка задачи: Очередная сложная задача, только на этот раз вам нужно разработать карточную игру.

Косынка

Постановка задачи: Еще одна сложная задача, в которой вам нужно разработать еще одну карточную игру.

Шашки

Постановка задачи: На этот раз вам предстоит разработать более сложную игру с матрицей и моделью игры «шашки».

Морской бой

Постановка задачи: На этот раз действительно сложная задача, состоящая из 2 матриц, одна из которых поле врага, другая — ваша. При этом тут должны использоваться не только матрицы, но и элементы Drag and Drop для перемещения кораблей. Элементы взаимодействия для нападения на противника, и, нападения противника на вас.

Крестики нолики

Постановка задачи: Разработать программу (простую) для игры в крестики нолики.

Судоку

Постановка задачи: На этот раз очень сложная задача, в которой вам предстоит изучить алгоритм работы и принципа «судоку», после чего вам предстоит разработать игру, которая будет предоставлять пользователю возможность играть в судоку. Для упрощения задачи пользуйтесь алгоритмами из интернета.

Трубопровод

Постановка задачи: Разработать игру, в которой нужно крутить трубопровод таким образом, чтобы пользователь мог перелить воду из одного отделения в другое. Разработать свою игру.

Точки

Постановка задаи: Разработать игру на подобии этой игры: [ссылка], только со своими возможными условиями.

Змейка

Постановка задачи: Разработать игру на подобии игры «змейка».

Бык и корова

Постановка задачи: Разработать программу некогда существовавшей популярной игры, в которой нужно получить правильный ответ. В этой игре должны участвовать двое человек (или человек и ИИ). Описание игры смотрите в интернете. Пример реализации игры можно посмотреть тут

Алхимия

Постановка задачи: Разработать игру, аналогичную игре «алхимия».

100 дверей

Постановка задачи: Разработать игру, аналогичную игре «100 дверей».

Открой замок

Постановка задачи: Разработать игру, в которой вы взломщик и должны взломать замок.

Рисовалка

Постановка задачи: Разработать приложение в котором вы сможете рисовать. К примеру разукрашивать картины.

Лазерный луч

Постановка задачи: разработать игру, в которой нужно будет подстраивать лазерный луч (или луч чего-либо, к примеру света) в определенном направлении, чтобы он отражался от определенных поверхностей и попадал в нужное место.

Красная кнопка

Постановка задачи: Разработать программу, которая будет выполнять забавный функционал «красной кнопки». К примеру как игра 100 методов нажать красную кнопку (и уничтожить мир — пример в видео). Думайте сами.

Постановка задачи: Разработать игру, аналогичную игре 2048.

Постановка задачи: Разработать игру в которой есть матрица, к примеру 3х3 (9 клеток), в которой отсутствует одна картинка. Сделать так, чтобы пользователь мог перемещая картинки собрать картину (и вставить последнюю деталь).

Пазлы

Постановка задачи: Разработать игру, аналогичную сборке пазлов.

Передвинь блок

Постановка задачи: У вас есть определенные блоки, вам нужно задвинуть блок в определенное место. Игра должна иметь как и внутреннюю логику (для программы), так и внешнюю (чтобы пользователь поломал голову).

Загони шарик

Постановка задачи: Разработать игру, в которой нужно крутить квадрат таким образом, чтобы загнать шарик в лунку.

Произвольная простая игра

Постановка задачи: Вы разработали много игр, теперь ваша задача состоит в том, чтобы придумать свою игру, красивую, но в тоже время простую и незамысловатую (особо не напрягайтесь, старайтесь не делать из этой игры долгосрочный сложный проект).

Свой платформер

Постановка задачи: есть такой жанр игр как «платформеры». Попробуйте разработать свой платформер (движок) в котором будет своя физика, своё взаимодействие с миром и непосредственно сам мир. Задача не простая.

Что требуется для платформера:

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

Обязательные условия:

  • Перед созданием игры начертите схему на бумаге, продумав все детали.
  • Библиотеки классов dll. Т.е. обязательное использование ООП.

Нарисован план на листочке

Разработана схема ООП

Приступили к разработке

Своя рпг

Постановка задачи: есть такой жанр игр как «ролевые игры», или «рпг», в которых у вас есть персонаж (или несколько), которые проходят по сюжету и развивают его. Не нужно грамоздкой графики, достаточно воспользоваться псевдо-3D (вид сверху) и сделать простенькую игру.

Что требуется для рпг:

  • Свой мир со своей атмосферой и развивающимся сюжетом.
  • Свой персонаж (или персонажи) взаимодействующий с миром.
  • Враги, которые наполняют и мешают персонажу во время сюжета.
  • Дополнительный контент.

Обязательные условия:

  • Перед созданием игры начертите схему на бумаге, продумав все детали.
  • Библиотеки классов dll. Т.е. обязательное использование ООП.

Нарисован план на листочке

Разработана схема ООП

Приступили к разработке

Свои гоночки

Постановка задачи: есть жанр игры «гонки», в которых есть какой-либо вид транспорта соревнующийся между собой. Как делать программу — решайте сами, главное, чтобы она вписывалась в жанр. Можете платформенные гоночки, можете псевдо-3D. Как хотите.

Обязательные условия:

  • Перед созданием игры начертите схему на бумаге, продумав все детали.
  • Библиотеки классов dll. Т.е. обязательное использование ООП.

Нарисован план на листочке

Разработана схема ООП

Приступили к разработке

Своя стратегия

Постановка задачи: есть такой жанр игр как «стратегия», где вы должны продумывать определенные действия, что-либо развивать и возможно воевать (или конкурировать). Разработайте свою, простую стратегию. Задание самое сложное, так как стратегии обычно требуют хорошей логики.

Что требуется для стратегии:

  • Свой мир со своими типами существ (или их характеров).
  • Взаимодействия развития ресурсов (империи, или города, или еще чего-либо) игрока.
  • Взаимодействие с конкурентами, или врагами.

Обязательные условия:

  • Перед созданием игры начертите схему на бумаге, продумав все детали.
  • Библиотеки классов dll. Т.е. обязательное использование ООП.

Нарисован план на листочке

Разработана схема ООП

Приступили к разработке

Произвольная сложная игра

Постановка задачи: На этот раз (если вы добрались до этого пункта) всё ложится на ваши плечи! Сами выбирайте жанр, сами выбирайте направление и развивайте свою какую-либо игру. Возможно она станет разовым проектом (после испытания того, что вы создавали). Возможно постоянным.

Обязательные условия:

  • Перед созданием игры начертите схему на бумаге, продумав все детали.
  • Библиотеки классов dll. Т.е. обязательное использование ООП.

Нарисован план на листочке

Разработана схема ООП

Приступили к разработке

Программа по тестированию

Постановка задачи: Разработать программу в которой есть своя база данных с вопросами к тестированию. Которая способна оценивать результат студента / ученика, еще кого-либо и выдавать соответствующий результат в виде какого-либо показателя.

Календарь

Постановка задачи: Разработать программу — календарь. С возможностью просматривать даты и время.

Калькулятор

Постановка задачи: Разработать программу калькулятор. Усложнять ли, решайте сами.

Проигрыватель музыки

Постановка задачи: Разработать свой простой проигрыватель музыки.

Интерфейсы

Постановка задачи: Существуют всякие виджеты, гаджеты, попробуйте разработать чтонибудь своё, что может взаимодействовать с интерфейсом Windows (или той ОС, которую вы используете). Так же добавьте возможность менять обои рабочего стола (по возможности).

Генератор паролей

Постановка задачи: Разработайте свой уникальный генератор паролей, который умеет хранить и собирать данные, может их шифровать и выдавать только при определенном запросе (или вызове подсказки). Расширьте его функционал по возможности.

Органайзе

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

Сетевой информатор

Постановка задачи: Разработайте программу, которая при подключении к интернету, будет получать нужную для вас информацию (новости, погоду, еще что-либо). Желательно разработать интерфейс для пользователя.

Постановка задачи: Разработать программу сервер, которая будет принимать и передавать запросы. И разработать программу клиент, которая будет получать и отсылать ответы. Т.е. будет происходить общение через сервер между двумя пользователями.

Сетевая игра

Постановка задачи: На основании ваших знаний разработайте игру, в которой можно будет подключаться между пользователями и взаимодействовать друг с другом непосредственно в самой игре.

Графики

Постановка задачи: Разработать программу принимающую определенную информацию и строящую на её основании графики, диаграммы и схемы. Примеры показаны на рисунках.

Источник https://nuancesprog.ru/p/11527/

Источник https://smartprogress.do/goal/392507/

Источник

Источник