Полуночный инфаркт
(Увеличьте яркость)
Вот такую страшную шнягу увидел ночью, испугался конечно знатно
Фотографировал на голубя (да и ночью качество не особо в глаза бросалось)
(Увеличьте яркость)
Вот такую страшную шнягу увидел ночью, испугался конечно знатно
Фотографировал на голубя (да и ночью качество не особо в глаза бросалось)
Console.WriteLine("Hello pikabu world!!!");Первая часть: Та самая "Мини игра" в консоли да на C#
Первым же делом хочу поблагодарить всех людей, отметивших пост, оставивших комментарий, вы вывели мой первый пост в горячее(!) за что я вам очень признателен.
Особенно хочу поблагодарить за комментарии с советами и критикой, всё-всё читал)!
Собственно, перейдем к обновлениям.
Во первых, я увеличил для наглядности ширину клетки на еще 1 символ.
Во вторых, я полностью переписал этот ад из If-else, который (вы не поверите, но) получился (!!!) случайно.
Как работает эта новая преблуда:
Вывод первой строки и последней, а так же между ними по формуле "цифра, клетки, цифра" выводим все остальное.
Конечно, знающие синьоры накидали годных вариантов, но я не крутой, переписал проще (или сложнее?). Кстати о "Так получилось случайно": когда я вначале написал только 3 if-else, с проверкой на (игрок1/игрок2/пустая клетка), я добавил /цифра/цифра<10 и пошлоооо поехало, почему я не решил переписать? Банально в час ночи спать уже хотелось)
Как к слову заметно по коду, я прикрутил так же покраску текста, для наглядности.
Далее, я прикрутил возможность выбора разворота блока, с ожиданием до ввода "не разворачивать" посредством ввода любого, кроме "y", символа). Код простой, хотя я уверен что появится кореец Сеньор, который сделает это в 15 символов)
Как это выглядит:
Так же, как и подобает программисту. все проблемы я заметил на показе кода))))
Фиксим отображение нижних координат, попутно улучшая названия переменных:
Ну и на десерт, добавлю еще несколько плюх:
Выводим чей сейчас ход;
Выводим инфу о победе того или иного противника)
Напомню! Я не называю свой код идеальным, жгу как, чем, и насколько могу) Ожидаю ваших предложений, советов, критики и "Що это такое".
И да, далеко не все что я хотел по итогу прикрутить - было прикручено. Я решил не маячить один проект до состояния "Чтоб с него есть можно было!", и продолжать развиваться, а в месте с тем, писать посты! Если интересны еще решения моего еврейского мозга, можете кинуть интересную задачку в комменты, обязательно что то попробую.
Весь код: https://pastebin.com/ak7PnumN
Огромное спасибо за прочтение.
Многие наверно встречали изображения этой мини-игры.
Наш (не?)очень креативный преподаватель по Основам программирования часто кидает подобные задания на практические работы, конкретно эту мне захотелось сделать, и я был достаточно близок, однако задание не завершил, от чего пишу его сейчас дома)
Итак! У нас есть поле X на Y, состоящее из пустых клеток, наша задача - заполнить максимум пространства своими прямоугольниками, которые мы вбиваем на поле броском двух кубиков. Идея проста - реализация .. ха.ха. Для второкурсника колледжа увидевшего код впервые месяц назад - задача не из простых, но я, аки человек, стучащий по клаве не только в играх, в свое время не мало и программировавший, принял это за челлендж.
Справка: Я буду описывать свой процесс разработки этой игры. Ваша реализация может отличатся и вообще за гениальность моего кода я не ручаюсь, не кидайте помидорами хотябы от того, что это мой первый пост :)Начнем!
Первым делом описываем двумерный массив Field, как нетрудно догадаться это наше поле. Почему я задал его как цифирную переменную я объясню скрином ниже.
Я создал в одном месте все переменные, относящиеся к графической части, игрок один, игрок 2, пустое поле, вместе с этим и обрисовал вывод самого поля в консоль. На этом моменте можно и первый раз вывод нашего кода проверить.
Первый пух и первый прах, как стало ясно Visual Studio Code как то не очень выводит ASCII символы. ну а то и понятно (точнее стало очевидно сразу после попытки). Так же я забыл внести строку с переходом на новую строчку после каждых 25 символов, с кем не бывает. (да?)
Меняем символы на более приземленные, попутно продолжаем писать основу игры.
В игре есть несколько правил: Поочередность ходов, рандомность бросков костей, Ставим только возле своих полей или соответственно при первом ходу только в своем углу.
Первое правило описывается просто:
Создаем цикл, в нем простую проверку, если последний ход - 2, теперь 1, и наоборот. Далее вводим проверку на текущий ход уже отдельно для выполнения процесса игры.
Рандомность бросков штука тоже простая, ранее мной уже был описан random, с ним у нас будут выбиваться случайные числа в промежутке Next(N); (от нуля до N).
А вот правило "Ставим только рядом со своими" я пока опущу.
Далее начинаем прописывать сам бросок костей.
Попутно я усложнил вывод для отображения координат (кривого, но все-таки отображения!)
Очищаем, выводим рандомные кости, пишем координатами куда ставим блок.
Подгоняем цикл игры к новому методу
Уже выглядит неплохо! (в ширину одна клетка - теперь 2 символа) Но встает другой вопрос, когда мы игрок 2, нам нужно сначала посчитать куда вообще ставить, если у игрока 1 это вначале 0 и 0, то у второго первый ход вышел на 24 и 22, что не дело, надо сделать вычитание для игрока 2 (25 минус кость). и лучше будет сделать сначала вывод поля, а потом спрашивать куда ставить, для наглядности).
Добавляем не сложную вариацию, усложняем отображение (пожалуй оставлю за кадром, мои интерфейсы в коде инфаркт вызывают, но работают)))) )
и.... Готово!
Внешний вид
Ввод координатов установки прямоугольника (от левого верхнего угла прямоугольника у игрока 1, и правого нижнего у игрока 2)
*Несколько ходов спустя*
При желании можно еще подкрутить выход при окончании места на поле, защиту от неправильной установки блоков, ASCII движ. и норм отображение, а так же вывод победителя, но это уже как-нибудь в другой раз)
В целом, все! Спасибо за прочтение!
Весь код: https://pastebin.com/6Xa17Xef
Принимаю конструктивную критику, а еще лучше: варианты улучшения!