100 Задач по программированию
Я принял вызов!
А ты сможешь? [ссылка]
Суть вызова:
Подтянуть свои навыки в программировании, разработав порядка 100 программ на своем собственном языке программирования. Важно относится к данному вызову не как к разовому, а как к долгосрочному вызову (т.е. на это может уйти даже от полгода, до года), по этому если не готовы - не беритесь.
Задания:
Всего в вызове 100 заданий, которые нужно выполнить. Все они разложены по этапам.
ВАЖНО: Перед тем как браться за задачи, освойте следующее:
- Выберите свой язык программирования, на котором вы будете писать.
- Выберите программу на которой будете заниматься разработками.
- Изучите основы своего языка (можно во время выполнения задач).
- Изучите что такое ООП (на 2 этапе), научитесь пользоваться классами.
- Изучите создание библиотек классов (dll) перед 5 этапом.
Правила:
Чтобы всё правильно сделать и не ошибиться, стоит следовать простым и незаурядным правилам:
- Не спешите! Даже если вы в себе уверены, перед каждой задачей настраивайтесь!
- Не халтурьте. Старайтесь делать всё красиво, так, как будто вы делаете это для кого-то важного.
- Не зазнавайтесь. Если вы не уверены, что сможете такое разработать, упрощайте для себя задачу.
- Не тупите. Если вы застряли на каком-то этапе, выполняйте задачу заного, значительно упрощая её.
- Не тужтесь. Если вам не нравится задача, не заставляйте себя. Придумайте аналогичную и выполните её.
Этапы выполнения заданий:
Этап 1. Я консольщик.
На этом этапе из 10 задач, вашей, будет являться изучение работы с консолью и все десять приложений обязательно должны быть исполнены в консоли. Если вы новичок, не спешите, отводите на каждую задачу минимум день (чтобы освоиться и закрепить всё в своей голове). Если вы профи - можете сделать всё за раз в одной программе (только в том случае, если уверены в себе).
(10/100)
Этап 2. Мастер оконной разработки.
Второй этап посвящен изучение оконной разработки. В зависимости от того, какое IDE вы выбрали, какой путь оконной разработки вы выбрали, определите для себя свою ключевую задачу - освоить основные элементы разработки оконных приложений. На этом этапе ознакомьтесь с особенностями оконной разработки.
(20/100)
Этап 3. Различные задачки.
Собраны из интернета различные задачи, в количестве 20 штук.Ваша же задача решить эти задачи в виде алгоритма, предоставив пользователю определенную оконную программу, с которой он сможет взаимодействовать. Старайтесь не строить перед собой нерешаемых задач и к каждой относится с ответственностью, стараясь подбирать дизайн.
(40/100)
Между-этап. Гексагон.
Вы знаете о гексагонах? Почитайте в интернете. Интерфейс таких программ весьма сложен, но очень красив и своеобразен. Сумеете ли вы освоить разработку на уровне гексагонов? Постарайтесь выработать свой алгоритм разработки гексагонов.
(41/100)
Этап 4. Игры для компаний.
Дано 9 различных задач для приложения, которое может пригодиться практически в любой заскучавшей компании (как повод развеется), вам нужно решить данные задачи через программирование, разработав 9 соответствующих программ. Постарайтесь адаптировать программы так, чтобы их действительно было интересно использовать в компании (чем сможете как раз похвастаться перед друзьями).
(50/100)
Этап 5. Разработчик игр.
В этом этапе собрано аж 30 задач разного характера по разработке различных игр со своей собственной внутри игровой логикой. На этом этапе придется попотеть и он считается первым самым сложным этапом. На этом этапе вам придется разрабатывать ООП, логику программы и всё тщательно продумывать.
(80/100)
Этап 6. Разработчик софта.
На этом этапе перед вами встанет задача разработать различные программы, которые могут пригождаться как и для самого себя, так и для различных организаций. Переходной этап между двумя сложными, чтобы немного отдохнуть и расслабиться.
(90/100)
Этап 7. Трехмерная графика.
Самый последний и самый сложный этап, на котором вы столкнетесь с трехмерной графикой и начнете разрабатывать настоящие трехмерные приложения, или игры, в которых будет ваш собственный интерфейс взаимодействия персонажа с окружающим миром, в котором будет собственная физика.
(100/100)
В конце:
Если ты честно выполнил все задания, можешь пошуршать по этим сайтам и найти себе подходящий для своего развития. Но я не рекомендую даже заглядывать по этой ссылке, пока не пройдешь хотя бы 100 заданий из этого списка (смекаете, да?). По этому бери задачу, решай и так до конца.
-
Консольная свободная задача #1
Постановка свободной задачи: поставьте перед собой определенную конкретную задачу, расписав алгоритм (как эта задача будет действовать) и попробуйте решить её. Постарайтесь сделать так, чтобы задача не была сложной (чтобы вы знали, что нужно сделать чтобы решить её), но, в то же время не стандартной.
-
Консольная свободная задача #2
Постановка свободной задачи: как и в свободной задаче #1-4
-
Консольная рекурсия
Постановка задачи: Создать консольную программу выполняющую рекурсию (хорошо подойдет цикл do while), иначе говоря которая закончится только при определенном действии (к примеру "выход").
-
Консольная шпаргалка
Постановка задачи: красиво вывести информацию о типах данных (целочисленные, строки) и их переменных (int, string) и других существующих в вашем языке типе данных. Оформить всё аккуратно и красиво.
-
Консольный перехват ошибки
Постановка задачи: написать программу, в которой может случиться 5 случаев, в случае которых может возникнуть ошибка. Научиться эту ошибку перехватывать и не давать программе выключаться (оповещать об ошибке, но не давать выключаться программе, продолжая её работу).
-
Консольный калькулятор
Постановка задачи: написать программу, которая умеет выполнять следующие действия: сложение, вычитание, умножение, деление и возведение в степень. Количество чисел выбирайте произвольное (простая задача - два числа, сложная задача - количество чисел вводит пользователь).
-
Консольный массив
Постановка задачи: Разработать программу которая умеет выводить массив M x N.
Усложнение задачи: Сделать так, чтобы можно было производить какие-либо операции над массивами. (К примеру чисел в массиве, нахождение общего знаменателя и так далее - подобные задачи можно найти в интернете). Для того чтобы зачесть себе
в кармуусложнение задачи, решите как минимум 5 задач с матрицами. -
Консольные наскальные рисунки
Постановка задачи: Создать консольную программу, которая выводит в консоли определенный рисунок. Пользуйтесь возможностью консоли изменять цвет текста и цвет подложки под текст - за счет этого можно изображать своеобразные "рисунки". Можете воспользоваться рисунками в виде текстовых символов (в интернете полно примеров).
-
Консольная свободная задача #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
Постановка задачи: Разработать игру, аналогичную игре 2048.
-
Пазл
Постановка задачи: Разработать игру в которой есть матрица, к примеру 3х3 (9 клеток), в которой отсутствует одна картинка. Сделать так, чтобы пользователь мог перемещая картинки собрать картину (и вставить последнюю деталь).
-
Пазлы
Постановка задачи: Разработать игру, аналогичную сборке пазлов.
-
Передвинь блок
Постановка задачи: У вас есть определенные блоки, вам нужно задвинуть блок в определенное место. Игра должна иметь как и внутреннюю логику (для программы), так и внешнюю (чтобы пользователь поломал голову).
-
Загони шарик
Постановка задачи: Разработать игру, в которой нужно крутить квадрат таким образом, чтобы загнать шарик в лунку.
-
Произвольная простая игра
Постановка задачи: Вы разработали много игр, теперь ваша задача состоит в том, чтобы придумать свою игру, красивую, но в тоже время простую и незамысловатую (особо не напрягайтесь, старайтесь не делать из этой игры долгосрочный сложный проект).
-
Свой платформер
Постановка задачи: есть такой жанр игр как "платформеры". Попробуйте разработать свой платформер (движок) в котором будет своя физика, своё взаимодействие с миром и непосредственно сам мир. Задача не простая.
.
Что требуется для платформера:
- Свой простой мир состоящий из уровней.
- Свой персонаж (или персонажи) взаимодействующие с миром.
- Своя физика мира (от которой отталкиваются персонажи)
- Враги (можно и без них), которые влияют отрицательно на персонажа.
- Препятствия (можно и без них) с которыми взаимодействует персонаж.
.
Обязательные условия:
- Перед созданием игры начертите схему на бумаге, продумав все детали.
- Библиотеки классов dll. Т.е. обязательное использование ООП.
-
Нарисован план на листочке
-
Разработана схема ООП
-
Приступили к разработке
-
Завершили проект
-
Своя рпг
Постановка задачи: есть такой жанр игр как "ролевые игры", или "рпг", в которых у вас есть персонаж (или несколько), которые проходят по сюжету и развивают его. Не нужно грамоздкой графики, достаточно воспользоваться псевдо-3D (вид сверху) и сделать простенькую игру.
.
Что требуется для рпг:
- Свой мир со своей атмосферой и развивающимся сюжетом.
- Свой персонаж (или персонажи) взаимодействующий с миром.
- Враги, которые наполняют и мешают персонажу во время сюжета.
- Дополнительный контент.
.
Обязательные условия:
- Перед созданием игры начертите схему на бумаге, продумав все детали.
- Библиотеки классов dll. Т.е. обязательное использование ООП.
-
Нарисован план на листочке
-
Разработана схема ООП
-
Приступили к разработке
-
Завершили проект
-
Свои гоночки
Постановка задачи: есть жанр игры "гонки", в которых есть какой-либо вид транспорта соревнующийся между собой. Как делать программу - решайте сами, главное, чтобы она вписывалась в жанр. Можете платформенные гоночки, можете псевдо-3D. Как хотите.
.
Обязательные условия:
- Перед созданием игры начертите схему на бумаге, продумав все детали.
- Библиотеки классов dll. Т.е. обязательное использование ООП.
-
Нарисован план на листочке
-
Разработана схема ООП
-
Приступили к разработке
-
Завершили проект
-
Своя стратегия
Постановка задачи: есть такой жанр игр как "стратегия", где вы должны продумывать определенные действия, что-либо развивать и возможно воевать (или конкурировать). Разработайте свою, простую стратегию. Задание самое сложное, так как стратегии обычно требуют хорошей логики.
.
Что требуется для стратегии:
- Свой мир со своими типами существ (или их характеров).
- Взаимодействия развития ресурсов (империи, или города, или еще чего-либо) игрока.
- Взаимодействие с конкурентами, или врагами.
.
Обязательные условия:
- Перед созданием игры начертите схему на бумаге, продумав все детали.
- Библиотеки классов dll. Т.е. обязательное использование ООП.
-
Нарисован план на листочке
-
Разработана схема ООП
-
Приступили к разработке
-
Завершили проект
-
Произвольная сложная игра
Постановка задачи: На этот раз (если вы добрались до этого пункта) всё ложится на ваши плечи! Сами выбирайте жанр, сами выбирайте направление и развивайте свою какую-либо игру. Возможно она станет разовым проектом (после испытания того, что вы создавали). Возможно постоянным.
.
Обязательные условия:
- Перед созданием игры начертите схему на бумаге, продумав все детали.
- Библиотеки классов dll. Т.е. обязательное использование ООП.
-
Нарисован план на листочке
-
Разработана схема ООП
-
Приступили к разработке
-
Завершили проект
-
Программа по тестированию
Постановка задачи: Разработать программу в которой есть своя база данных с вопросами к тестированию. Которая способна оценивать результат студента / ученика, еще кого-либо и выдавать соответствующий результат в виде какого-либо показателя.
-
Календарь
Постановка задачи: Разработать программу - календарь. С возможностью просматривать даты и время.
-
Калькулятор
Постановка задачи: Разработать программу калькулятор. Усложнять ли, решайте сами.
-
Проигрыватель музыки
Постановка задачи: Разработать свой простой проигрыватель музыки.
-
Интерфейсы
Постановка задачи: Существуют всякие виджеты, гаджеты, попробуйте разработать чтонибудь своё, что может взаимодействовать с интерфейсом Windows (или той ОС, которую вы используете). Так же добавьте возможность менять обои рабочего стола (по возможности).
-
Генератор паролей
Постановка задачи: Разработайте свой уникальный генератор паролей, который умеет хранить и собирать данные, может их шифровать и выдавать только при определенном запросе (или вызове подсказки). Расширьте его функционал по возможности.
-
Органайзе
Постановка задачи: Разработайте программу в которой будет храниться различная информация связанная с вами, в которой вы сможете создавать себе напоминания, делать записи, хранить какую-либо важную информацию. Разработайте меню и свою структуру данных. Добавьте возможность свораивать программу в трей.
-
Сетевой информатор
Постановка задачи: Разработайте программу, которая при подключении к интернету, будет получать нужную для вас информацию (новости, погоду, еще что-либо). Желательно разработать интерфейс для пользователя.
-
Чат
Постановка задачи: Разработать программу сервер, которая будет принимать и передавать запросы. И разработать программу клиент, которая будет получать и отсылать ответы. Т.е. будет происходить общение через сервер между двумя пользователями.
-
Сетевая игра
Постановка задачи: На основании ваших знаний разработайте игру, в которой можно будет подключаться между пользователями и взаимодействовать друг с другом непосредственно в самой игре.
-
Графики
Постановка задачи: Разработать программу принимающую определенную информацию и строящую на её основании графики, диаграммы и схемы. Примеры показаны на рисунках.
-
3D фигуры (моделирование)
Постановка задачи: Научиться создавать и встраивать различные фигуры графического 3D интерфейса. По возможности создать какое-либо взаимодействие с ними (крутить к примеру).
-
Столкновение фигур
Постановка задачи: Научиться сталкивать между собой различные фигуры, образовывать простую физику.
-
3D сложные объекты
Постановка задачи: Научиться встраивать сложные объекты в свою программу (у которых есть своя физика взаимодействия с окружающим миром). Настроить модель взаимодействия вашей фигуры и окружающего мира.
-
Создать простую 3D реальность с существующей физикой.
Постановка задачи: Разработать приложение в котором существует свой небольшой мир и своя определенная физика. Внедрить в этот мир несколько объектов, отладив взаимодействие самих объектов с миром.
-
Разработать простую аркаду
Постановка задачи: Разработать свою игру в жанре "аркада", с использованием трехмерной графики и наличием физики взаимодействия. Это может быть как простая воксельная игра, так и сложная аркада с продуманной логикой.
-
Нарисован план на листочке
-
Разработана схема ООП
-
Приступили к работе
-
Выполнили задачу
-
-
Разработать простой симулятор
Постановка задачи: Разработать игру с трехмерной графикой, "Симулятор", это может быть уход за питомцем, за растениями, за чем угодно. Или симулятор какой-либо части реальности. Всё на ваш выбор.
-
Нарисован план на листочке
-
Разработана схема ООП
-
Приступили к работе
-
Выполнили задачу
-
-
Симулятор транспортного средства
Постановка задачи: Как и в прошлой задачи вам нужно разработать симулятор, но теперь что-либо должно взаимодействовать с транспортным средством со своей физикой и взаимодействием с внешним миром. Это может быть автомобиль, это может быть поезд, это может быть самолет или катер, всё на ваше усмотрение.
-
Нарисован план на листочке
-
Разработана схема ООП
-
Приступили к работе
-
Выполнили задачу
-
-
Боевая система
Постановка задачи: Разработайте игру, в которой существует своя боевая система. Это может быть взаимодействие между двумя объектами, у которых есть свой набор параметров, которые могут быть "повреждены". На ваше усмотрение.
-
Нарисован план на листоке
-
Разработана схема ООП
-
Приступили к работе
-
Выполнили задачу
-
-
Своя игра
Постановка задачи: Не обязательно игра, вы можете взяться за разработку какого-либо приложения, ну, или игры. Одно важное условие - проект должен быть серьезным, так как это последняя и финальная задача, поставьте перед собой то, чего вы можете достигнуть, но в тоже время чтобы ваш проект выглядел солидно и был востребован.
-
Нарисован план на листочке
-
Разработана схема ООП
-
Приступили к работе
-
Выполнили задачу
-
- 4334
- 17 June 2017, 09:12
Team
Conclusion
Goal diary
Капелька халтуры
(больше не буду, честно).
Я немного сжульничаю и выполню сразу два задания. Одно на WebBrowser было очень простым и рассказывать его алгоритм не так интересно. Есть такой элемент в WPF как WebBrowser и настройка его происходит очень легко. Единственное я не стал разбирать элементы управления, так как там "то еще болото" и в ближайших перспективах я не вижу смысла создавать браузеры в своих приложениях, если уж придется, то придется садиться и шевелить головой.
Что касается приложения со своим интерфейсом, то я просто сошлюсь на справочник: https://smartprogress.do/goal/265861/ - который я еще делаю но в котором уже есть своё меню, интерфейс и особенности (поиск).
Просто хочу идти дальше, а то застреваю немного.
Трэш кликер игра
(На самом деле я выполнил программу "дизайнерское решение")
Коротко и по порядку. На скриншоте рабочего стола вы сможете лицезреть само приложение с использованием транспарента - т.е. я создал свою перемещаемую форму, которую легко контролировать и впринципе не сложно взаимодействовать. Суть такова - появляется питомец, вы кликаете буст и выращиваете его. Скачайте, возможно вам понравится этот трэш что сотворил: [скачать], но супер ничего я не делал, всего 1 питомец с быстрой фазой роста.
Интерфейс:
- Статус прогресса - то, сколько вам осталось прокликать чтобы питомец эволюционировал (не останавливайтесь).
- Кнопка буста - она собственно и позволяет выращивать питомца, кликать её надо не останавливаясь.
- Кнопка рождения - она возвращает на титульный, или создает яйцо которое можно вырастить.
- Выход.
Коротко об алгоритме:
- Таймер - я установил таймер для анимации (переключение картинок) и форм перерождения, чтобы он отслеживал состояния нажатых раз вами кнопки и по достижению нужного количества переключал фазу роста.
- Стадия - Каждая стадия питомца сопровождается своей серией алгоритмов, по этому для каждой стадии роста питомца была создана int переменная которая меняла своё значение от 0 до N (стадий).
- Image - всё было сделано через картинки, только эти элементы форм были использованы.
- IF ELSE - основная форма конструкции. Ничего сложного, но кода много.
Если нужны исходники - пишите.
Мои важные программы
Вот такая вот незамысловатая программа у меня вышла, алгоритм крайне простой и сделать её смог всего-то за два часа. Сперва по скриншотам объясню, потом по алгоритму:
- Интерфейс программы крайне прост, не стал делать супер-крутым, добавил всего лишь 5 кнопок (стрелочки) и 1 кнопочку для загрузки приложений. По нажатию на кнопку "поменять программы" мы можем назначить на любую из 5 кнопок программу.
- Смена программ - при нажатии на "поменять программы" меняется название "сохранить", для этого нам нужно сделать выбор интересующей нас программы.
- Выбор программы - ограничил выбор .exe файлами, чтобы можно было выбирать "запускаемый" процесс ну и соответственно для примера решил выбрать текстовый документ.
- Запуск приложения - сохранил, нажал на красную стрелочку и соответственно открылся блокнот - задача выполнена.
- Ошибка - для большего профита добавил ошибку, на тот случай, если не будет выбрана программа, а пользователь решит сломать нашу программу нажав сразу на кнопку выбора. По этому без выбора программы будет ошибочка, а не вылет.
Алгоритм:
- Переключатель - нужный для режима 1 и 0, на режиме 1 мы выбираем программу (нажимая на стрелочку), которая сохраняется в path, а в режиме 0, нажимая "сохранить" мы нажимая на стрелочку можем открыть нашу программу, или получить ошибку.
- OpenFileDialog fd = new OpenFileDialog(); - открытие диалога с выбором интересующего нас фала, нужно обязательно сделать fd.Filter = "EXE (*.exe)|*.exe"; чтобы фильтровать файлы. Затем просто сохраняем данные в path = fd.FileName;
- Открытие в режиме 0 осуществляем открытие по следующему алгоритму:
//создаем новый процесс
Process proc = new Process();
//Запускаем Блокнот
proc.StartInfo.FileName = path;
proc.StartInfo.Arguments = "";
proc.Start();
Вот и всё.
Легкое тестирование
Вчера локти грыз от этой задачи, так как не мог нормально разместить блоки элементов в графическом меню XAML, этот WPF до судорог меня доводит (иронизирование). Впрочем, сделать - сделал, и, сейчас расскажу как.
1. Самое страшное это было графическое размещение. НО, я понял что это один сплошной HTML+CSS поданный в виде аля крабов (XAML) с особым острым соусом (Атрибутами XAML) которые переваривать нужно оченьоченьоченьочень долго (и то, не факт что переварятся). В прочем скриншот прикрепляю.
2. Разобравшись с позиционированием элементов дошел до программирования где понимание структуры алгоритма - мой дар (в отличии от дизигна), собственно всё просто. Несколько кнопок переключателей, пару элементов и использование ELEMENT.Visibility = Visibility.(Visible/Hidden) - т.е. это как Z-Index (позиция элементов один за другим) - чтобы не использовать кучу форм.
3. Сам алгоритм прост. Создаем первый шаг, меняем значение RadioButton и Label, после нажатия на кнопку "Далее" идет запись +0, +1, +2 в зависимости от ответа. Конструкция вяжется на одной кнопке с count, т.е. if (count == 0) { //... count++; } else if (count == 1) {} и таким образом мы шагаем по алгоритму. Если кому нужен детальный алгоритм - пишите, я подробнее в комментариях распишу.
Текстовый редактор
Ахаха, не прочитал верно задание, там написано было "простой текстовый редактор", а я немного усложнил себе задачу. В общем почти полдня просидел ломая голову над многими функциями и понял вот что: "WPF это громозкий конструктор кода, в котором чтобы разобраться, нужно потратить уйму времени". Но я рад что у меня получается.
.
В общем что я сделал:
- Функцию открытия нового файла (тут всё просто, самый примитив - очистка RichTextBox.
- Функция сохранения файла - здесь немного пришлось попотеть, так как открытие диалогового окна - это целая история.
- Функция загрузки файла - невероятно, я обрыл почти весь интернет потратив 20 минут на то, чтобы понять как открывать диалоговое окно, через которое можно загрузить rtf файл (а мой редактор работает именно с этим форматом). Оказывается нужно подключать библиотеку Microsoft и только потом можно работать с кодом (и то, это еще не всё).
- Big - жирный текст. Вот тут тоже ушло много времени, т.к. не до конца понимал как можно взаимодействуя с RichTextBox в WPF менять какие-либо его свойства, но тем не менее это изучил.
- Italiac - курсив.
- R - Подчеркнутый (это кстати кнопочки рядом с вкладкой "файл". Над подчеркиванием тоже много возился.
- Опускание шрифта и
- Поднятие шрифта - тут я собаку съел, так как около часа искал решение, как подымать текст и то, сделал это еле как. Функция работает криво, но дорабатывать её никакого желания нету.
- Цвет - возможность менять цвет...
Собственно это всё, полдня потрачено и считаю что не в пустую, чалендж выполнен на 100% (даже немного перевыполнен).
Конвертер величин
(завершен)
Наконец то я понял как реализовать функцию реагирования на изменения ComboBox (выпадающий список). ОХ, в WPF всё идет через Ж (простите). Пришлось организовывать таймер, создавать множество переменных и в итоге у меня получилось организовать алгоритм срабатывания и подсчитывания.
В целом можно сказать что задание хоть как-то, но выполнено. Конвертер работает. Ставлю себе 3 из 5. 3 потому что заполнил только конвертирование времени, и то, не полностью, хотя хотел весь яндекс перелопатить, но понимаю что выйдет около 3000 строк кода, что мне впринципе не нужно.
Склоняюсь к тому, что нужно подучить WPF, к примеру тот же MVVM из-за которого я не смог решить задачу. Ничего не понимаю в этом, по этому сделал неведомый велосипед.
1 Этап окончен
Честно сказать схалтурил на 10 задании, так как нету желания его выполнять (а то застряну), НО, в целом считаю что все остальные задания выполнил качественно.
Если интересно скачать можно тут: https://yadi.sk/d/63adLU2N3KUoBs
Осталось чуть-чуть
Еще немного (день, или пару дней) и я закончу первые 10 этапов связанных с консолями. Практически все задачи поставленные были выполнены, осталось только сделать последний штрих. Выбранную мною задачу: консольная мини-рпг. Есть примеры на просторах интернета, и, я так же сделаю что-нибудь простенькое.
Тот момент, когда ты делал консольный калькулятор, но что-то пошло не так...
You can publish
your goal here
We can help you achieve it!
309 000
like-minded
tools
for an exciting achievement