Top.Mail.Ru
Ответы

Какие есть еще операторы. нужно это сокартить. помогите пожалуйста....

Вот код, как видите очень много повторяется. чем лучше это все сделать чтобы не было так много повторов? получается 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) команда;

А если идут несколько команд, то так нельзя уже делать

Аватар пользователя
Высший разум
12345
 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 лучше использовать.