1
Förenkla en massa if-satser Visual C#
Postat av gurvar den 7 Oktober 2012, 22:48
5 kommentarer · 643 träffar
Har alltså en vidrigt lång kod med en massa If-satser som jag, om möjligt, velat förkorta.
"io" är en array uppbyggd på 1 och 0 som ska förställa banan bilen kör på.
public void right()
{
int rand3 = rand.Next(3);
int rand2 = rand.Next(2);
if (++tick > 1)
{
if (dir == Riktning.höger) //När bilen kör i åt höger
{
if (io[(centerY / 20) + 1, (centerX / 20) - 1] == 0 && //4-Vägskorsning H
io[(centerY / 20) + 1, (centerX / 20)] == 1 &&
io[(centerY / 20), (centerX / 20) + 2] == 1)
{
if (rand3 == 0)
{
dir = Riktning.ner;
tick = 0;
}
}
if (io[(centerY / 20) + 1, (centerX / 20) - 1] == 0 && //3-Vägskorsning H
io[(centerY / 20) + 1, (centerX / 20)] == 1 &&
io[(centerY / 20), (centerX / 20) + 2] == 0 &&
io[(centerY / 20) - 2, (centerX / 20)] == 1)
{
if (rand2 == 0)
{
dir = Riktning.ner;
tick = 0;
}
}
if (io[(centerY / 20), (centerX / 20) + 1] == 1 && //4-Vägskorsning V
io[(centerY / 20) + 1, (centerX / 20) + 1] == 0 &&
io[(centerY / 20) - 2, (centerX / 20) + 1] == 0 &&
io[(centerY / 20) - 2, (centerX / 20)] == 1)
{
if (rand2 == 0)
{
dir = Riktning.upp;
tick = 0;
}
}
if (io[(centerY / 20), (centerX / 20) + 1] == 0 && //3-Vägskorsning V
io[(centerY / 20) + 1, (centerX / 20)] == 1 &&
io[(centerY / 20) - 2, (centerX / 20)] == 1)
{
dir = Riktning.upp;
tick = 0;
}
if (io[(centerY / 20), (centerX / 20) + 2] == 0 && //2-Vägskorsning H
io[(centerY / 20) - 2, (centerX / 20)] == 0)
{
dir = Riktning.ner;
tick = 0;
}
if (io[(centerY / 20), (centerX / 20) + 1] == 0 && //2-Vägskorsning V
io[(centerY / 20) + 1, (centerX / 20)] == 0)
{
dir = Riktning.upp;
tick = 0;
}
}
}
}
"io" är en array uppbyggd på 1 och 0 som ska förställa banan bilen kör på.
public void right()
{
int rand3 = rand.Next(3);
int rand2 = rand.Next(2);
if (++tick > 1)
{
if (dir == Riktning.höger) //När bilen kör i åt höger
{
if (io[(centerY / 20) + 1, (centerX / 20) - 1] == 0 && //4-Vägskorsning H
io[(centerY / 20) + 1, (centerX / 20)] == 1 &&
io[(centerY / 20), (centerX / 20) + 2] == 1)
{
if (rand3 == 0)
{
dir = Riktning.ner;
tick = 0;
}
}
if (io[(centerY / 20) + 1, (centerX / 20) - 1] == 0 && //3-Vägskorsning H
io[(centerY / 20) + 1, (centerX / 20)] == 1 &&
io[(centerY / 20), (centerX / 20) + 2] == 0 &&
io[(centerY / 20) - 2, (centerX / 20)] == 1)
{
if (rand2 == 0)
{
dir = Riktning.ner;
tick = 0;
}
}
if (io[(centerY / 20), (centerX / 20) + 1] == 1 && //4-Vägskorsning V
io[(centerY / 20) + 1, (centerX / 20) + 1] == 0 &&
io[(centerY / 20) - 2, (centerX / 20) + 1] == 0 &&
io[(centerY / 20) - 2, (centerX / 20)] == 1)
{
if (rand2 == 0)
{
dir = Riktning.upp;
tick = 0;
}
}
if (io[(centerY / 20), (centerX / 20) + 1] == 0 && //3-Vägskorsning V
io[(centerY / 20) + 1, (centerX / 20)] == 1 &&
io[(centerY / 20) - 2, (centerX / 20)] == 1)
{
dir = Riktning.upp;
tick = 0;
}
if (io[(centerY / 20), (centerX / 20) + 2] == 0 && //2-Vägskorsning H
io[(centerY / 20) - 2, (centerX / 20)] == 0)
{
dir = Riktning.ner;
tick = 0;
}
if (io[(centerY / 20), (centerX / 20) + 1] == 0 && //2-Vägskorsning V
io[(centerY / 20) + 1, (centerX / 20)] == 0)
{
dir = Riktning.upp;
tick = 0;
}
}
}
}





