Слайд 1Создайте консольное приложение
Слайд 2Игра в орлянку
У вас и у компьютера есть (условно) по
100 очков.
Пока у вас есть очки
Вы делаете ставку на орла
(0) или решку (1)
Бросается монета, результат броска – орел или решка (0 или 1)
Если вы угадали, то получаете 10 очков, а компьютер их, соответственно, теряет.
Если вы ошиблись – то все наоборот
Слайд 3Ключевые точки алгоритма
Игра повторяется, пока у вас (или у компьютера)
не закончатся очки
Это реализуется в виде цикла с неизвестным количеством
повторений
Слайд 4Ключевые точки алгоритма
Вы выбираете 0 или 1
Ваш выбор или совпадает,
или нет с результатом броска
Если совпало, то вам +10, компьютеру
-10
Иначе – вам -10, компьютеру +10
Это – результат проверки, реализуется условным оператором
Слайд 6Циклы являются управляющими конструкциями, позволяя в зависимости от определенных условий
выполнять некоторое действие множество раз. В C# имеются следующие виды
циклов:
for
foreach
while
do...while
Слайд 7Цикл for
for (int i = 0; i < 9; i++)
{
Console.WriteLine($"Квадрат числа {i} равен {i*i}");
}
Первая часть объявления цикла -
int i = 0 - создает и инициализирует счетчик i. Счетчик необязательно должен представлять тип int. Это может быть и другой числовой тип, например, float. И перед выполнением цикла его значение будет равно 0. В данном случае это то же самое, что и объявление переменной.
Слайд 8Цикл for
Вторая часть - условие, при котором будет выполняться цикл.
Пока условное выражение возвращает true, будет выполняться цикл. В данном
случае цикл будет выполняться, пока счетчик i не достигнет 9.
И третья часть - приращение счетчика на единицу. Опять же нам необязательно увеличивать на единицу. Можно уменьшать: i--.
В итоге блок цикла сработает 9 раз, пока значение i не станет равным 9. И каждый раз это значение будет увеличиваться на 1.
Слайд 9Цикл do
В цикле do сначала выполняется код цикла, а потом
происходит проверка условия в инструкции while. И пока это условие
истинно, цикл повторяется. Например:
int i = 6;
do
{
Console.WriteLine(i);
i--;
}
while (i > 0);
Слайд 10Цикл do
Здесь код цикла сработает 6 раз, пока i не
станет равным нулю. Но важно отметить, что цикл do гарантирует
хотя бы единократное выполнение действий, даже если условие в инструкции while не будет истинно.
Слайд 11Цикл while
В отличие от цикла do цикл while сразу проверяет
истинность некоторого условия, и если условие истинно, то код цикла
выполняется:
int i = 6;
while (i > 0)
{
Console.WriteLine(i);
i--;
}
Слайд 12foreach
Оператор foreach обеспечивает простой и понятный способ итерации по элементам
массива или любой перечислимой коллекции.
Для одномерных массивов оператор foreach обрабатывает
элементы в порядке возрастания индекса, начиная с индекса 0 и заканчивая индексом Length - 1:
int[] numbers = { 4, 5, 6, 1, 2, 3, -2, -1, 0 };
foreach (int i in numbers)
{
System.Console.Write("{0} ", i);
}
// Output: 4 5 6 1 2 3 -2 -1 0
Слайд 14Оператор if
Для организации условного ветвления язык C# унаследовал от С
и С++ конструкцию if...else. Ее синтаксис должен быть интуитивно понятен
для любого, кто программировал на процедурных языках:
if (условие)
оператор (операторы)
else
оператор (операторы)
Если по каждому из условий нужно выполнить более одного оператора, эти операторы должны быть объединены в блок с помощью фигурных скобок {...}.
Слайд 161
static void Main(string[] args)
{
Console.WriteLine("Начнем же!");
PrintStatus();
Console.ReadKey();
}
Слайд 172
// деньги на игру - поля
класса
private static int Player = 100;
private static int Comp = 100;
Слайд 183
// печать статуса
static void PrintStatus()
{
Console.WriteLine("Что у нас с финансами?");
Console.WriteLine($"У вас - {Player} руб., у компьютера - {Comp} руб.");
}
private static int beth = 0;
static void InputB()
{
Console.WriteLine("Введите вашу ставку: орел - 0, все остальное - решка");
string s = Console.ReadLine();
// если строка равна 0, то ставка 0 - орел, иначе - решка
if (s=="0")
{
beth = 0;
}
else
{
beth = 1;
}
}
Слайд 21Комментарии
1 – печать статуса игры
2 – методы класса Program для
хранения денег
3 – метод для печати статуса игры
4 – поле
для текущей ставки
5 – метод для ввода ставки
Пользователь может ошибиться, поэтому ввод пользователя обязательно проверяем
Слайд 22Бросок монеты
Используем генератор случайных чисел rand
Чтобы генератор давал разные числа,
надо его сначала инициализировать.
Слайд 23Бросок монеты
// генератор случайных числел
static
Random r = new Random();
// статус
монеты (орел - решка)
private static int Coin = 0;
static void DropCoin()
{
Coin = r.Next(0, 2);
Console.WriteLine($"Монета брошена и выпало...");
Console.WriteLine($"Монета брошена и выпало...");
Console.WriteLine($"Монета брошена и выпало... {Coin}");
}
Слайд 24Самостоятельно
Изучите, как функция Pay рассчитывает выигрыш / проигрыш
Слайд 25Однократная игра
static void Main(string[] args)
{
Console.WriteLine("Начнем же!");
PrintStatus();
InputB();
DropCoin();
Pay();
PrintStatus();
Console.ReadKey();
}
Слайд 26Однократная игра
Печатаем статус
Делаем ставку
Бросаем монету
Проверяем результат, платим выигрыш или проигрыш
Слайд 27Многократная игра
Повторяем все сначала
Можно еще, например, стереть экран после
каждого раунда
Слайд 28Репозиторий
https://github.com/Alex-Samarkin/ConsoleApp5
Просмотрите сначала первую
Потом вторую и третью ветки