Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
я не разобрался еще как компилировать несколько файлов в один .exe через консоль, да и это не тема нашей статьи, может кто нибудь расскажет в комментариях
Ну, как же так? Просто перечисляете все файлы для компиляции в одной команде. Или делаете вот так, чтобы скомпилировать все файлы в текущей директории:
csc -out:%name%.exe *.cs
Первая же страница документации.
ConsoleKeyInfo key = Console.ReadKey(); написать ConsoleKeyInfo key = Console.ReadKey(true); это устранит отображение в консоли нажатой пользователем клавиши из-за чего иногда часть змея пропадает.А проблему поворота на 180 градусов двумя нажатиями — поставив «переключатель»
// Запрет разворота на 180
// Если попытка поворота на 180 градусов
if ((_direction == Directions.Right && DirectionControl == Directions.Left) ||
(_direction == Directions.Left && DirectionControl == Directions.Right) ||
(_direction == Directions.Up && DirectionControl == Directions.Down) ||
(_direction == Directions.Down && DirectionControl == Directions.Up))
{
//пропускаем изменение направления;
}
else
{
_direction = DirectionControl;
} Direction _direction = direction;
if (key == ConsoleKey.DownArrow)
direction = Direction.DOWN;
else if (key == ConsoleKey.UpArrow)
direction = Direction.UP;
else if(key == ConsoleKey.LeftArrow)
direction = Direction.LEFT;
else if (key == ConsoleKey.RightArrow)
direction = Direction.RIGHT;
Point p1 = snake.ElementAt(snake.Count - 2);
Point p2 = GetNextPoint();
if (p1.Equals(p2)) direction = _direction;Я конечно понимаю, что Вы — начинающий программист, но использование в одном месте лямбд и таких вот конструций вызывает улыбку :)
(a.x == b.x && a.y == b.y) ? true : false
Не в лямбдах дело :) А в тавтологии вышеуказанного выражения. Достаточно было написать (a.x == b.x && a.y == b.y)
Больше всего меня интересуют две вещи:
1. Ну что бы показать, что можно компилировать и без IDE, что сделать игру можно уже сейчас нечего не устанавливая

=> в данном случае не является «лямбда-оператором» — это просто синтаксический сахар для return. А «expression-bodied member» это не «определение текста выражения» (это что, гугл-транслейт?), а «тело, состоящее из одного выражения».Point p = (1, 2, 'x') можно писать var p = new Point(1, 2, 'x') — получаем более осмысленные подсказки и ошибки.step и direction, можно было бы хранить вторую переменную типа Point и складывать их, как вектора. Тогда функция GetNextPoint сократилась бы до одной строки.List в данном случае не подходит: удаление первого элемента приводит к тому, что все остальные приходится «сдвинуть» на один шаг назад. Для данного случая есть Queue, поддерживающая как раз добавление с одной стороны и удаление с другой.(a == b) ? true : false: это эквивалентно просто a == b.
Своя змейка, или пишем первый проект. Часть 0