Beispiel #1
0
        public void LuoAlue()
        {
            laivatMaara = 0;
            laiva[] laivat = new laiva[5];

            alueData[0] = new int[10] {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            alueData[1] = new int[10] {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            alueData[2] = new int[10] {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            alueData[3] = new int[10] {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            alueData[4] = new int[10] {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            alueData[5] = new int[10] {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            alueData[6] = new int[10] {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            alueData[7] = new int[10] {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            alueData[8] = new int[10] {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            alueData[9] = new int[10] {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            alueData[10] = new int[10] {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
        }
Beispiel #2
0
        public void SijoitaLaivat(int _laivatMaara)
        {
            Random rnd   = new Random();
            int    luku1 = rnd.Next(10);
            int    luku2 = rnd.Next(10);

            int pysty = 0;

            bool sijoitus = true;

            laivat = new laiva[_laivatMaara];


            for (i = 1; i < _laivatMaara + 1; i++)
            {
                pysty = rnd.Next(2);
                do
                {
                    luku1 = rnd.Next(10);
                    luku2 = rnd.Next(10);
                }while (alueData[luku1][luku2] == 1);

                do
                {
                    sijoitus = false;
                    if (pysty == 1)
                    {
                        //PYSTY
                        for (j = 0; j < i; j++)
                        {
                            if (luku1 + i < 9)
                            {
                                if (alueData[luku1 + j][luku2] == 1)
                                {
                                    sijoitus = true;
                                    luku1    = luku1 + 1;
                                    break;
                                }
                                if (luku1 > 0 && luku1 < 9)
                                {
                                    if (alueData[luku1 + j + 1][luku2] == 1)
                                    {
                                        sijoitus = true;
                                        luku1    = luku1 + 1;
                                        break;
                                    }
                                }
                                if (luku1 < 9 && luku1 > 0)
                                {
                                    if (alueData[luku1 + j - 1][luku2] == 1)
                                    {
                                        sijoitus = true;
                                        luku1    = luku1 + 1;
                                        break;
                                    }
                                }
                                if (luku2 < 9 && luku2 > 0)
                                {
                                    if (alueData[luku1 + j][luku2 + 1] == 1)
                                    {
                                        sijoitus = true;
                                        luku1    = luku1 + 1;
                                        break;
                                    }
                                }
                                if (luku2 > 0 && luku2 < 9)
                                {
                                    if (alueData[luku1 + j][luku2 - 1] == 1)
                                    {
                                        sijoitus = true;
                                        luku1    = luku1 + 1;
                                        break;
                                    }
                                }
                            }
                            else
                            {
                                luku2    = luku2 + 1;
                                luku1    = 0;
                                sijoitus = true;
                                if (luku2 > 9)
                                {
                                    luku2 = 0;
                                }
                                break;
                            }
                        }
                    }
                    else
                    {
                        //VAAKA
                        for (j = 0; j < i; j++)
                        {
                            if (luku2 + i < 9 && luku1 < 9)
                            {
                                if (alueData[luku1][luku2 + j] == 1)
                                {
                                    sijoitus = true;
                                    luku1    = luku1 + 1;
                                    break;
                                }
                                if (luku2 > 0 && luku2 < 9)
                                {
                                    if (alueData[luku1][luku2 + j - 1] == 1)
                                    {
                                        sijoitus = true;
                                        luku1    = luku1 + 1;
                                        break;
                                    }
                                }
                                if (luku2 < 9 && luku2 > 0)
                                {
                                    if (alueData[luku1][luku2 + j + 1] == 1)
                                    {
                                        sijoitus = true;
                                        luku1    = luku1 + 1;
                                        break;
                                    }
                                }
                                if (luku1 < 9 && luku1 > 0)
                                {
                                    if (alueData[luku1 + 1][luku2 + j] == 1)
                                    {
                                        sijoitus = true;
                                        luku1    = luku1 + 1;
                                        break;
                                    }
                                }
                                if (luku1 > 0 && luku1 < 9)
                                {
                                    if (alueData[luku1 - 1][luku2 + j] == 1)
                                    {
                                        sijoitus = true;
                                        luku1    = luku1 + 1;
                                        break;
                                    }
                                }
                            }
                            else
                            {
                                luku2    = luku2 + 1;
                                luku1    = 0;
                                sijoitus = true;
                                if (luku2 > 9)
                                {
                                    luku2 = 0;
                                }
                                break;
                            }
                        }
                    }
                }while (sijoitus);

                laivat[i - 1] = new laiva(i);
                laivat[i - 1].sijoita(luku1, luku2, i, pysty);

                if (pysty == 1)
                {
                    for (j = 0; j < i; j++)
                    {
                        alueData[luku1 + j][luku2] = 1;
                    }
                }
                else
                {
                    for (j = 0; j < i; j++)
                    {
                        alueData[luku1][luku2 + j] = 1;
                    }
                }
            }
        }
Beispiel #3
0
        public bool sijoitaLaivaCoor(int _x, int _y, int _koko, int suunta, Panel _pnlMeri)
        {
            Graphics g     = Graphics.FromHwnd(_pnlMeri.Handle);
            Brush    kyna  = new SolidBrush(Color.Purple);
            Brush    kyna2 = new SolidBrush(Color.Blue);

            if (suunta == 0)
            {
                if (_x + _koko > 10)
                {
                    return(false);
                }
            }
            if (suunta == 1)
            {
                if (_y + _koko > 10)
                {
                    return(false);
                }
            }

            for (j = 0; j < _koko; j++)
            {
                if (suunta == 0)
                {
                    if (_y > 0)
                    {
                        if (alueData[_y - 1][_x + j] == 1)
                        {
                            return(false);
                        }
                    }
                    if (_y < 9)
                    {
                        if (alueData[_y + 1][_x + j] == 1)
                        {
                            return(false);
                        }
                    }
                    if (_x + j > 0)
                    {
                        if (alueData[_y][_x + j - 1] == 1)
                        {
                            return(false);
                        }
                    }
                    if (_x + j < 9)
                    {
                        if (alueData[_y][_x + j + 1] == 1)
                        {
                            return(false);
                        }
                    }
                    if (alueData[_y][_x + j] == 1)
                    {
                        return(false);
                    }
                }
                else
                {
                    if (_x > 0)
                    {
                        if (alueData[_y + j][_x - 1] == 1)
                        {
                            return(false);
                        }
                    }
                    if (_x < 9)
                    {
                        if (alueData[_y + j][_x + 1] == 1)
                        {
                            return(false);
                        }
                    }
                    if (_y > 0)
                    {
                        if (alueData[_y + j - 1][_x] == 1)
                        {
                            return(false);
                        }
                    }
                    if (_y < 9)
                    {
                        if (alueData[_y + j + 1][_x] == 1)
                        {
                            return(false);
                        }
                    }
                    if (alueData[_y + j][_x] == 1)
                    {
                        return(false);
                    }
                }
            }

            for (j = 0; j < _koko; j++)
            {
                if (suunta == 0)
                {
                    alueData[_y][_x + j] = 1;
                    g.FillRectangle(kyna, _x * 30 + (j * 30), _y * 30, 30, 30);
                }
                else
                {
                    alueData[_y + j][_x] = 1;
                    g.FillRectangle(kyna, _x * 30, _y * 30 + (j * 30), 30, 30);
                }
            }

            laivat[laivatMaara] = new laiva(_koko);
            laivat[laivatMaara].sijoita(_y, _x, _koko, suunta);
            laivatMaara++;

            g.Dispose();

            return(true);
        }