Задание: Игра "Стрельба по мишени"

Реклама Д.
  · 103

Задание: Игра "Стрельба по мишени"

Данное задание направлено на закрепление материала по теме разработка подпрограмм.

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

Перед разработкой подпрограмм необходимо их спланировать.

Подпрограммы должны создаваться максимально автономными.

Для каждой подпрограммы должны быть написаны комментарии.

Необходимо обеспечить функционирование игры близкое или лучшее, чем в образце.

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

Описание игры

Есть мишень, у которой имеется определенное количество концентрических кругов MaxScore (на рисунке 7). Круги идут с шагом Step (на рисунке равен 1).

Мишень

Попадание в центральный круг дает MaxScore очков, далее от центра каждый последующий круг на 1 меньше.

Попадание за пределы последнего круга не приносит очков - попадание в «молоко».

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

Игра продолжается пока пользователь не захочет ее остановить (ввод Y или y).

Процесс выстрел

Выстрел - это определение двух координат на плоскости - X и Y .

В программе организовать цикл (до нажатия игроком любой клавиши) в процессе которого прибавлять к некоторой переменной случайное число (результат метода Random.NextDouble() ). При этом необходимо контролировать изменение числа в границах от -MaxValue до +MaxValue . Необходимо обеспечить равномерное распределение в этом диапазоне случайных чисел, выводимых на экран.

Игрок может влиять на точность выстрела ориентируясь на выводимые, текущие значения координаты.

По умолчанию количество кругов = 10, ширина всей мишени = 15 + 15, шаг = 1, задержка = 30.

Подсказки

  1. Для организации цикла до нажатия пользователем на любую клавишу используйте цикл

while (!Console.KeyAvailable);

«Вытащить» нажатый пользователем символ из буфера без отображения его на экране можно так:

Console.ReadKey(True);

  1. Организация задержки, метод:

System.Threading.Thread.Sleep(interval);

  1. Перемещение курсора в левую позицию в строке в консоли, метод:

Console.CursorLeft = 0;

photo_2019-01-10_15-16-30.jpg
10 января 2019  · < 100
Комментировать ответ…
Вы знаете ответ на этот вопрос?
Поделитесь своим опытом и знаниями
Войти и ответить на вопрос
Читайте также

В какую настольную игру сыграть на большой вечеринке, чтобы все не заскучали?

Доктор, Бизнесмен и Dungeon Master уже 15 лет. Играю в огромное количество...

Вам скучно на большой вечеринке? Тогда мы идем к вам!

18 марта  · 29,5 K
Прочитать ещё 31 ответ

Coop_mission_storm как включить sv_cheats 1?

Это будет трудно! "Нужно написать Sv_cheats 1 и за секунду написать mp_restartgame от 1 до 60, но что бы было быстрее надо скопировать, Но вставлять надо через Ctrl+V ВМЕСТЕ" Вот и всё! Это Было проще чем вы думаете!

9 октября 2019  · 60,1 K
Прочитать ещё 4 ответа

Почему спортсмены всегда бегают по стадиону против часовой стрелки?

Таш Саркисян
Эксперт
109
телеведущий, телепродюсер, YouTube-канал «Бег вреден»  · youtube.com/channel/UCN8-IYaiBH13zZ4uIRC2HKQ
12 марта  · 239,7 K
Прочитать ещё 36 ответов

Как выиграть у игрового автомата "Тир"?

Увлекаюсь воспитанием ребенка, покатушками на авто, а еще много-много чем)

Тренируйте скорость реакции и старайтесь метко попадать в цель. Правила игры и устройство механизма Вы можете почитать в этой статье: http://nauchebe.net/2012/10/igrovoj-avtomat-tir/.

Прочитать ещё 1 ответ

Почему нет пуль со скоростью выше, чем около 1000 м/с? Что мешает сделать лёгкую пульку, но со скоростью за 3000 м/с вместо утяжеления пули с обычной скоростью?

Илья Левин
Эксперт
23,0K
программист, предприниматель

С высокоскоростными пулями как минимум две проблемы.

  1. Как пулю до такой скорости разогнать так, чтобы она покинула ствол оружия в целости и само оружие при этом не было бы сколько-нибудь серьезно повреждено? В традиционном огнестрельном оружии разгон пули осуществляется пороховым взрывом. Тогда для увеличения скорости пули требуется либо увеличивать заряд пороха, либо уменьшать массу пули. Увеличение порохового заряда проблематично, поскольку прочность конструкций не бесконечна и оружие может просто разорвать к чертям этим взрывом.

Стало быть остается только уменьшение массы пули. Это вызывает проблемы на следующих этапах.

  1. Как добиться того, чтобы пуля, вылетевшая с такой скоростью, добралась до цели в целости и попала бы именно туда (ну или хотя бы почти туда) куда мы целились? Если пуля будет лететь быстрее, то в дело весьма активно вступит сопротивление воздуха (трение), из-за которого пуля (сделанная из мягкого свинца в твердой медной оболочке) нагреется до таких температур, что просто потеряет форму и потечет еще до того, как куда-либо долетит. 

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

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

26 июля 2018  · 1,2 K
Прочитать ещё 2 ответа