Kralici
Takhle kod nemá vypadat
c-sharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Kralici2
{
class Program
{
static void Main(string[] args)
{
// samecek 1,samicka 2,dve samicky 3,samec a samicka 4,dva samci 5,samecPO 6,samecPO 7,
int pocet_samecku, pocet_samicek;
int rozeni = 0, smrt = 0,kecal = 0;//pocitadla
int[,] pole;
int velikost;
bool pokracovat = true;//hlavni cyklus
int pozice_samecekX;//naplneni
int pozice_samecekY;//naplneni
int pozice_samickaX;//naplneni
int pozice_samickaY;//naplneni
Random r_samecek = new Random();
Random r_samicka = new Random();
Random r_smer=new Random();
bool narozen = true;//rozeni mladat
Console.WriteLine("Ahoj,vitej na kralici zahradce. Divej se jak si kralici zijou, odmackavej pomoci klavesy ENTER");
Console.WriteLine("1->samec,2->samicka,3->dve samicky,4->samec a samicka");
Console.Write("Zadej velikost uzemi: ");
velikost = Convert.ToInt32(Console.ReadLine());
Console.Write("Zadej pocet samecku: ");
pocet_samecku = Convert.ToInt32(Console.ReadLine());
Console.Write("Zadej pocet samicek: ");
pocet_samicek=Convert.ToInt32(Console.ReadLine());
pole = new int[velikost, velikost];
for (int i = 0; i < pocet_samecku; )//naplneni samecku
{
pozice_samecekX = r_samecek.Next(0, velikost);
pozice_samecekY = r_samecek.Next(0, velikost);
if (pole[pozice_samecekX, pozice_samecekY] == 1)
{ i--; }
else
pole[pozice_samecekX, pozice_samecekY] = 1; i++;
}
for (int i = 0; i < pocet_samicek; )//naplneni samicek
{
pozice_samickaX = r_samicka.Next(0, velikost);
pozice_samickaY = r_samicka.Next(0, velikost);
if (pole[pozice_samickaX, pozice_samickaY] == 1 || pole[pozice_samickaX, pozice_samickaY] == 2)
{ i--; }
else
pole[pozice_samickaX, pozice_samickaY] = 2; i++;
}
Console.Clear();//vymazani predcohzich vstupnich udaju
while (pokracovat)//hlavni cyklus,zde se prohazuji
{
Console.Write(" ♥:{0},†:{1},@:{2} ", rozeni, smrt,kecal);
Console.WriteLine();
Console.WriteLine();
for (int i = 0; i < velikost; i++)//vykresleni
{
Console.Write(" ");
for (int j = 0; j < velikost; j++)
{
Console.Write("{0} ", pole[i, j]);
}
Console.WriteLine();
}
for (int x = 0; x < velikost; x++)//procházení
{
for (int y = 0; y < velikost; y++)
{
int smerSamec = r_smer.Next(1, 101);//1 dolu,2 nahoru,3 doleva,0 doprava
int smerSamicka = r_smer.Next(1, 101);
//if (x > 0) { if (pole[x - 1, y] == mina) minyOkolo++; } nahoru
//if ((velikostPole - y != 1)) { if (pole[x, y + 1] == mina) minyOkolo++; } vpravo
//if ((velikostPole - x != 1)) { if (pole[x + 1, y] == mina) minyOkolo++; } dolu
//if (y > 0) { if (pole[x, y - 1] == mina) minyOkolo++; } vlevo
if (pole[x, y] == 1)//samecek
{
if (smerSamec % 4 == 1)//dolu (hotovo)
{
if ((velikost - x != 1))//podmínka aby mohl dolu
{
pole[x, y] = 0;
if (pole[x + 1, y] == 0)//volno
{ pole[x + 1, y] = 6; }
if (pole[x + 1, y] == 1)//dalsi samec
{ pole[x + 1, y] = 5; }
if (pole[x + 1, y] == 2)//setkani se samici
{ pole[x + 1, y] = 4; }
}
}
if (smerSamec % 4 == 2)//nahoru (hotovo)
{
if (x > 0)//podmínka aby mohl nahoru
{
pole[x, y] = 0;
if (pole[x - 1, y] == 1)//setkání s dalším samcem
{ pole[x - 1, y] = 1; smrt++; }
if (pole[x - 1, y] == 2)//setkání se samičkou
{
rozeni++;
int mladeX = r_smer.Next(0, velikost);//mladeX
int mladeY = r_smer.Next(0, velikost);//mladeY
do
{
if (pole[mladeX, mladeY] == 0)
{ pole[mladeX, mladeY] = 1; narozen = false; }
} while (narozen);
//for (int i = 0; i < 1; i++)//rozeni mladete
//{
// if (pole[mladeX, mladeY] != 0)
// { i--; }
// else
// pole[mladeX, mladeY] = 1;
//}
pole[x-1, y] = 2;//na miste zustane samicka,samec pujde nekam dal
int novysmer = r_smer.Next(1, 101);
novysmer = novysmer % 4;
switch (novysmer)
{
case 1: if ((velikost - x != 1))//dolu
{ pole[x + 1, y] = 1; }
else novysmer++; break;
case 2: if (x > 0) //nahoru
{ pole[x - 1, y] = 1; }
else novysmer++; break;
case 3: if (y > 0)//doleva
{ pole[x, y - 1] = 1; }
else
novysmer++; break;
case 4: if ((velikost - y != 1))//doprava
{ pole[x, y + 1] = 1; }; break;
}
}
if (pole[x - 1, y] == 0)//volno
{ pole[x - 1, y] = 1; }
}
}
if (smerSamec % 4 == 3)//doleva (hotovo)
{
if (y > 0)//aby mohl jit doleva
{
pole[x, y] = 0;
if (pole[x, y - 1] == 1)//potkani se samcem
{ pole[x, y - 1] = 1; smrt++; }
if (pole[x, y - 1] == 2)//samec se samickou
{
rozeni++;
int mladeX = r_smer.Next(0, velikost);//mladeX
int mladeY = r_smer.Next(0, velikost);//mladeY
narozen = true;
do//rozeni mladete
{
if (pole[mladeX, mladeY] == 0)
{ pole[mladeX, mladeY] = 1; narozen = false; }
} while (narozen);
pole[x, y-1] = 2;//na miste zustane samicka,samec pujde nekam dal
int novysmer = r_smer.Next(1, 101);
novysmer = novysmer % 4;
switch (novysmer)
{
case 0: if ((velikost - y != 1))//doprava
{ pole[x, y + 1] = 1; }
else
novysmer++;break;
case 1: if ((velikost - x != 1))//dolu
{ pole[x + 1, y] = 1; }
else novysmer++; break;
case 2: if (x > 0) //nahoru
{ pole[x - 1, y] = 1; }
else novysmer++; break;
case 3: if (y > 0)//doleva
{ pole[x, y - 1] = 1; };break;
}
}
if (pole[x, y - 1] == 0)//volno
{ pole[x, y - 1] = 1; }
}
}
if (smerSamec % 4 == 0)//doprava (hotovo)
{
if ((velikost - y != 1))//aby mohl jit doprava
{
pole[x, y] = 0;
if (pole[x, y + 1] == 1)//samec se samcem
{ pole[x, y + 1] = 5; }
if (pole[x, y + 1] == 2)//samec se samickou
{ pole[x, y + 1] = 4; }
if (pole[x, y + 1] == 0)//volno
{ pole[x, y + 1] = 6; }
}
}
}
if (pole[x, y] == 2)//samicka
{
if (smerSamicka % 4 == 1)//dolu (hotovo)
{
if ((velikost - x != 1))//aby mohla dolu
{
pole[x, y] = 0;
if (pole[x + 1, y] == 1)//samicka->samec
{ pole[x + 1, y] = 4; }
if (pole[x + 1, y] == 2)//samicka->samicka
{ pole[x + 1, y] = 3; }
if (pole[x + 1, y] == 0)//volno
{ pole[x + 1, y] = 7; }
}
}
if (smerSamicka % 4 == 2)//nahoru *rovnou*
{
if(x > 0)//aby mohla nahoru
{
pole[x, y] = 0;
if (pole[x - 1, y] == 1)//samicka -> samec
{
rozeni++;
int mladeX = r_smer.Next(0, velikost);//mladeX
int mladeY = r_smer.Next(0, velikost);//mladeY
narozen = true;
do//rozeni mladete
{
if (pole[mladeX, mladeY] == 0)
{ pole[mladeX, mladeY] = 1; narozen = false; }
} while (narozen);
pole[x-1, y] = 2;//na miste zustane samicka,samec pujde nekam dal
int novysmer = r_smer.Next(1, 101);
novysmer = novysmer % 4;
switch (novysmer)
{
case 0: if ((velikost - y != 1))//doprava
{ pole[x, y + 1] = 1; }
else
novysmer++; break;
case 1: if ((velikost - x != 1))//dolu
{ pole[x + 1, y] = 1; }
else novysmer++; break;
case 2: if (x > 0) //nahoru
{ pole[x - 1, y] = 1; }
else novysmer++; break;
case 3: if (y > 0)//doleva
{ pole[x, y - 1] = 1; }; break;
}
}
if (pole[x - 1, y] == 2)//samicka->samicka
{
kecal++;
pole[x - 1, y] = 2;
pole[x, y] = 0;
int smerS = r_smer.Next(1, 101);
smerS = smerS % 4;
switch (smerS)
{
case 0: if ((velikost - y != 1))//doprava
{ pole[x, y + 1] = 2; }
else
smerS++; break;
case 1: if ((velikost - x != 1))//dolu
{ pole[x + 1, y] = 2; }
else smerS++; break;
case 2: if (x > 0) //nahoru
{ pole[x - 1, y] = 2; }
else smerS++; break;
case 3: if (y > 0)//doleva
{ pole[x, y - 1] = 2; }; break;
}
}
if (pole[x - 1, y] == 0)//volno
{pole[x-1,y]=2; }
}
}
if (smerSamicka % 4 == 3)//doleva *rovnou*
{
if (y > 0)//aby mohla doleva
{
pole[x, y] = 0;
if (pole[x, y - 1] == 1)//samicka -> samec
{
rozeni++;
int mladeX = r_smer.Next(0, velikost);//mladeX
int mladeY = r_smer.Next(0, velikost);//mladeY
narozen = true;
do//rozeni mladete
{
if (pole[mladeX, mladeY] == 0)
{ pole[mladeX, mladeY] = 1; narozen = false; }
} while (narozen);
pole[x, y-1] = 2;//na miste zustane samicka,samec pujde nekam dal
int novysmer = r_smer.Next(1, 101);
novysmer = novysmer % 4;
switch (novysmer)
{
case 0: if ((velikost - y != 1))//doprava
{ pole[x, y + 1] = 1; }
else
novysmer++; break;
case 1: if ((velikost - x != 1))//dolu
{ pole[x + 1, y] = 1; }
else novysmer++; break;
case 2: if (x > 0) //nahoru
{ pole[x - 1, y] = 1; }
else novysmer++; break;
case 3: if (y > 0)//doleva
{ pole[x, y - 1] = 1; }; break;
}
}
if (pole[x, y - 1] == 2)//samicka -> samicka
{
//jedna zůstane na míste,druhá jde dál
kecal++;
pole[x - 1, y] = 2;
int smerS = r_smer.Next(1, 101);
smerS = smerS % 4;
switch (smerS)
{
case 0: if ((velikost - y != 1))//doprava
{ pole[x, y + 1] = 2; }
else
smerS++; break;
case 1: if ((velikost - x != 1))//dolu
{ pole[x + 1, y] = 2; }
else smerS++; break;
case 2: if (x > 0) //nahoru
{ pole[x - 1, y] = 2; }
else smerS++; break;
case 3: if (y > 0)//doleva
{ pole[x, y - 1] = 2; }; break;
}
}
if (pole[x, y - 1] == 0)//volno
{ pole[x, y - 1] = 2; }
}
}
if (smerSamicka % 4 == 0)//doprava
{
if ((velikost - y != 1))//aby mohla doprava
{
pole[x, y] = 0;
if (pole[x, y + 1] == 1)
{ pole[x, y + 1] = 4; }
if (pole[x, y + 1] == 2)//samicka->samicka
{ pole[x, y + 1] = 3; }
if (pole[x, y + 1] == 0)
{ pole[x, y + 1] = 7; }
}
}
}
if (pole[x, y] == 3)//dve samicky
{
//jedna zustane na miste,druha jde dal
kecal++;
pole[x, y] = 2;
int smerS = r_smer.Next(1, 101);
smerS = smerS % 4;
switch (smerS)
{
case 0: if ((velikost - y != 1))//doprava
{ pole[x, y + 1] = 2; }
else
smerS++; break;
case 1: if ((velikost - x != 1))//dolu
{ pole[x + 1, y] = 2; }
else smerS++; break;
case 2: if (x > 0) //nahoru
{ pole[x - 1, y] = 2; }
else smerS++; break;
case 3: if (y > 0)//doleva
{ pole[x, y - 1] = 2; }; break;
}
}
if (pole[x, y] == 4)//samecek a samicka
{
rozeni++;
int mladeX = r_smer.Next(0, velikost);//mladeX
int mladeY = r_smer.Next(0, velikost);//mladeY
narozen = true;
do//rozeni mladete
{
if (pole[mladeX, mladeY] == 0)
{ pole[mladeX, mladeY] = 1; narozen = false; }
} while (narozen);
//na miste zůstane samicka, samec se někam pohne
pole[x, y] = 2;
int novysmer = r_smer.Next(1, 101);
novysmer = novysmer % 4;
switch (novysmer)
{
case 0: if ((velikost - y != 1))//doprava
{ pole[x, y + 1] = 1; }
else
novysmer++; break;
case 1: if ((velikost - x != 1))//dolu
{ pole[x + 1, y] = 1; }
else novysmer++; break;
case 2: if (x > 0) //nahoru
{ pole[x - 1, y] = 1; }
else novysmer++; break;
case 3: if (y > 0)//doleva
{ pole[x, y - 1] = 1; }; break;
}
}
if (pole[x, y] == 5)//dva samci
{
pole[x, y] = 1; smrt++;
}
if (pole[x, y] == 6)//samecPO
{ pole[x, y] = 1; }
if (pole[x, y] == 7)//samicePO
{ pole[x, y] = 2; }
}
}
Console.Write("Pokracuj ENTER.Pro konec něco napiš: ");
string co = Console.ReadLine();
if (co != "")
{ pokracovat = false; }
Console.Clear();
}
}
}
}
Neformátovaný
Přidáno: 22.4.2013
Expirace: Neuvedeno