Какие есть еще операторы. нужно это сокартить. помогите пожалуйста....
Вот код, как видите очень много повторяется. чем лучше это все сделать чтобы не было так много повторов? получается if (p1=0 && p2=1) это тоже самое что if (p1=1 && p2=0). помогите пожалуйста. сократить этот код. у меня вообще идей нет.
void fight()
{
// 0 - камень 1- ножницы 2-бумага
int player_1;
int player_2;
string text;
if (s1 == s2)
{
text = "ничья";
}
else if (s1 == 0)
{
if (s2 == 1)
{
text = "Ножницы затупились о камень";
}
else if (s2 == 2)
{
text = "Бумага завернула камень";
}
}
else if (s1 == 1)
{
if (s2 == 0)
{
text = "Ножницы затупились о камень";
}
else if (s2 == 2)
{
text = "Ножницы разрезали бумагу";
}
}
else if (s1 == 2)
{
if (s2 == 0)
{
text = "Бумага завернула камень";
}
else if (s2 == 1)
{
text = "Ножницы разрезали бумагу";
}
}
}
получается в примере 3 на 3. а на деле у меня 13 на 26
В C# если после операторов if, else if или else идет всего одна команда, то фигурные скобки необязательны. Вот так:
if (1 == 1) {
команда;
}
в это
if (1 == 1) команда;
А если идут несколько команд, то так нельзя уже делать
text = new string[,]{
{"ничья", "ножницы затупились о камень", "бумага завернула камень"},
{"ножницы затупились о камень", "ничья", "ножницы разрезали бумагу"},
{"бумага завернула камень", "ножницы разрезали бумагу", "ничья"}
}[s1, s2];
Зачем все эти if, если у тебя всего-то матрица из 3*3 = 9 вариантов результата: индекс по вертикали - вариант первого игрока, по горизонтали - второго.
Можно сделать матрицу 3x3, заполнить ее результатами, и выводить их в соответствии со значениями. Примерно так:
string[,] answers = new string[,] {{"Ничья","Ножницы разрезали бумагу", ""},{...},{...}}
Console.WriteLine(answers[s1, s2]);
От копи-пастить можно. Так печатать быстрее.
А так лучше использовать.
int i;
switch (switch_on)
{
case true: i = 1;
break;
default:
break;
}
Оператор switch лучше использовать.