Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

Avatar
Autor: Petr Nymsa
Aktivity