Поскольку я изучаю программирование с использованием C #, я пытаюсь решить следующую проблему, для меня это выглядит немного сложно, пожалуйста, помогите:
Дано n кирпичей. Вы и компьютер делаете ходы попеременно. За ход можно взять 1, 2 или 3 кирпича.
Тот, кому нечего взять - проигрывает. Реализуйте игру с помощью компьютера.
Компьютер делает ходы случайным образом (без анализа выигрышной стратегии), однако, если у него есть ход, который выиграл последним, он делает это.
Ниже приведен код, который я написал до сих пор. Программа работает, но не показывает результат, когда использовалось определенное количество кирпичей. Не уверен, как это исправить.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BricksGame
{
class Program
{
static void Main(string[] args)
{
CH();
Console.WriteLine("To exit please press any key ...");
Console.ReadKey();
}
public static void CH()
{
Console.WriteLine("Please enter the number of bricks: \n");
int n = int.Parse(Console.ReadLine());
for (int i = n; i > 0; i--)
{
Console.WriteLine("\nHow many bricks to take (1, 2 or 3)?");
int user = int.Parse(Console.ReadLine());
n = n - user;
if (i < 1)
{
Console.WriteLine("\nComputer lost!");
}
else
{
Random rn = new Random();
int comp = rn.Next(1, 4);
Console.WriteLine("\nComputer took:" + comp);
if (i < 1)
{
Console.WriteLine("\nYou lost!");
}
}
}
}
}
}
Здесь выкладываю переработанный код
do
{
Console.WriteLine("\nHow many bricks to take (1, 2 or 3)?");
int user = int.Parse(Console.ReadLine());
n = n - user;
Console.WriteLine("The remaining number of bricks is: {0}", n);
if (n < 1)
{
Console.WriteLine("\nComputer lost!");
}
else
{
Random rn = new Random();
int comp;
if (n <= 3)
{
comp = n; //For computer to take the remaining bricks
}
else
{
comp = rn.Next(1, 4);
}
n = n - comp;
Console.WriteLine("The remaining number of bricks is: {0}", n);
Console.WriteLine("\nComputer took:" + comp);
if (n < 1)
{
Console.WriteLine("\nYou lost!");
}
}
} while (n > 0);
}
}
}