Пример #1
0
        public async Task <IActionResult> Edit(int id, [Bind("IdStrony,LinkTytul,Tytul,Tresc,Pozycja")] Strona strona)
        {
            if (id != strona.IdStrony)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(strona);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!StronaExists(strona.IdStrony))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(strona));
        }
Пример #2
0
 public Węzeł(Ruch ruch, Węzeł ojciec, Plansza plansza, Strona strona)
 {
     this.ruch    = ruch;
     this.ojciec  = ojciec;
     this.plansza = (Plansza)plansza.Clone();
     this.strona  = strona;
     dzieci       = new List <Węzeł>();
 }
Пример #3
0
        /// <summary>
        /// tworzenie nowej analizy
        /// </summary>
        /// <param name="plansza">plansza do analizowania</param>
        /// <param name="glebokoscAnalizy">glembokosc analizy</param>
        public Analiza(Plansza plansza, int glebokoscAnalizy)
        {
            this.plansza          = plansza;
            this.strona           = plansza.StronaGrajaca;
            this.glebokoscAnalizy = glebokoscAnalizy;

            RobDzieci(1);
        }
Пример #4
0
 /// <summary>
 /// tworzenie bierki goniec
 /// </summary>
 /// <param name="pozycja">pozycja startowa bierki</param>
 /// <param name="kolor">kolor bierki bialy/czarny</param>
 /// <param name="plansza">plansza na ktorej bierka sie znajduje</param>
 /// <param name="pierwszyRuch">wartosc logiczna zawierajaca informacje o tym czy bierka wykonala juz jakis ruch</param>
 public Goniec(Punkt pozycja, Strona kolor, Plansza plansza, bool pierwszyRuch = true)
 {
     this.Nazwa           = Bierki.Goniec;
     this.Pozycja         = pozycja;
     this.Kolor           = kolor;
     this.plansza         = plansza;
     this.PierwszyRuch    = pierwszyRuch;
     this.WartoscPunktowa = 3;
 }
Пример #5
0
 /// <summary>
 /// tworzenie bierki wieza
 /// </summary>
 /// <param name="pozycja">pozycja startowa bierki</param>
 /// <param name="kolor">kolor bierki bialy/czarny</param>
 /// <param name="plansza">plansza na ktorej bierka sie znajduje</param>
 /// <param name="pierwszyRuch">wartosc logiczna zawierajaca informacje o tym czy bierka wykonala juz jakis ruch</param>
 public Wieza(Punkt pozycja, Strona kolor, Plansza plansza, bool pierwszyRuch = true)
 {
     this.Nazwa           = Bierki.Wieża;
     this.Pozycja         = pozycja;
     this.Kolor           = kolor;
     this.plansza         = plansza;
     this.PierwszyRuch    = pierwszyRuch;
     this.WartoscPunktowa = 5;
 }
Пример #6
0
 /// <summary>
 /// tworzenie bierki hetman
 /// </summary>
 /// <param name="pozycja">pozycja startowa bierki</param>
 /// <param name="kolor">kolor bierki bialy/czarny</param>
 /// <param name="plansza">plansza na ktorej bierka sie znajduje</param>
 /// <param name="pierwszyRuch">wartosc logiczna zawierajaca informacje o tym czy bierka wykonala juz jakis ruch</param>
 public Hetman(Punkt pozycja, Strona kolor, Plansza plansza, bool pierwszyRuch = true)
 {
     this.Nazwa           = Bierki.Hetman;
     this.Pozycja         = pozycja;
     this.Kolor           = kolor;
     this.plansza         = plansza;
     this.PierwszyRuch    = pierwszyRuch;
     this.WartoscPunktowa = 9;
 }
Пример #7
0
 /// <summary>
 /// konstruktor do kopiowania
 /// </summary>
 /// <param name="pozycja">Pozycja kopiowanej bierki</param>
 /// <param name="kolor">Kolor bierki</param>
 /// <param name="plansza">nowa plansza</param>
 /// <param name="pierwszyRuch">stan zmiennej pierwszy ruch</param>
 /// <param name="policzoneRuchy">policzone ruchy bierki</param>
 Goniec(Punkt pozycja, Strona kolor, Plansza plansza, bool pierwszyRuch, List <Punkt> policzoneRuchy, int kolejka)
 {
     this.Nazwa           = Bierki.Goniec;
     this.Pozycja         = pozycja;
     this.Kolor           = kolor;
     this.plansza         = plansza;
     this.PierwszyRuch    = pierwszyRuch;
     this.WartoscPunktowa = 3;
     this.policzoneRuchy  = policzoneRuchy;
     this.Kolejka         = kolejka;
 }
Пример #8
0
        public async Task <IActionResult> Create([Bind("IdStrony,LinkTytul,Tytul,Tresc,Pozycja")] Strona strona)
        {
            if (ModelState.IsValid)
            {
                _context.Add(strona);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(strona));
        }
Пример #9
0
        Analiza(Plansza plansza, Strona strona, int analizaNr, int glebokoscAnalizy, Punkt ruchZ, Punkt ruchDo)
        {
            void Koniec(Plansza.Status status)
            {
                switch (status)
                {
                case Plansza.Status.Mat:
                    wartoscAnalizy = decimal.MaxValue;
                    analiza        = false;
                    break;

                case Plansza.Status.Pat:
                    wartoscAnalizy = 1;
                    analiza        = false;
                    break;
                }
            }
Пример #10
0
        void przydziel_pamięć_programowi(ref PCB pcb) //przydziela pamięć programowi, ramki/stronnice pozostają puste
        {
            int potrzeba_stron_na_kod  = ile_potrzeba_ramek(pcb.Auto_storage_size);
            int potrzeba_stron_na_dane = ile_potrzeba_ramek(pcb.Auto_data_size);
            int potrzeba_stron_na_stos = ile_potrzeba_ramek(pcb.Auto_stack_size);
            int przyznano_ramek        = ile_ramek_przydzielić(potrzeba_stron_na_kod + potrzeba_stron_na_dane + potrzeba_stron_na_stos);


            //przydzielam proporcjonalnie przydzielone dane kodowi, dane i stosowi

            int ramki_na_kod;
            int ramki_na_dane;
            int ramki_na_stos;

            if (przyznano_ramek == 0)
            {
                return;
            }

            if (przyznano_ramek > wolne_ramki.Count)
            {
                int ile_zwolnic = przyznano_ramek - wolne_ramki.Count;
                for (int i = 0; i < ile_zwolnic; i++)
                {
                    wolne_ramki.Push(znajdź_i_zwolnij_najstarszą_ramkę());
                }
            }

            int suma = potrzeba_stron_na_kod + potrzeba_stron_na_dane + potrzeba_stron_na_stos;

            ramki_na_kod   = (int)Math.Ceiling((double)potrzeba_stron_na_kod / (double)suma * (double)przyznano_ramek);
            ramki_na_dane  = (int)Math.Ceiling((double)potrzeba_stron_na_dane / (double)suma * (double)przyznano_ramek);
            ramki_na_stos  = przyznano_ramek - ramki_na_kod;
            ramki_na_stos -= ramki_na_dane;



            int           numerzbioru  = wolne_zbiory.Pop();
            List <Strona> TablicaStron = new List <Strona>();

            if (potrzeba_stron_na_kod > 0)
            {
                pcb.Auto_storage_addres = numerzbioru * 1000;
            }
            for (int i = 0; i < ramki_na_kod; i++)
            {
                Strona strona = new Strona();
                strona.numer           = znajdź_wolną_ramkę();
                strona.ochrona         = true;
                strona.poprawność      = true;
                strona.stempel_czasowy = getStempelCzasowy();
                zapisz_ramkę(strona.numer, "KODKODKOD");
                TablicaStron.Add(strona);
            }
            for (int i = ramki_na_kod; i < potrzeba_stron_na_kod; i++)
            {
                Strona strona = new Strona();
                strona.numer           = znajdź_wolną_stronnicę();
                strona.ochrona         = true;
                strona.poprawność      = false;
                strona.stempel_czasowy = getStempelCzasowy();
                zapisz_stronnicę(strona.numer, "KODKODKOD");

                TablicaStron.Add(strona);
            }
            if (potrzeba_stron_na_dane > 0)
            {
                pcb.Auto_data_addres = numerzbioru * 1000 + potrzeba_stron_na_kod * konfiguracja.długość_ramki;
            }
            for (int i = 0; i < ramki_na_dane; i++)
            {
                Strona strona = new Strona();
                strona.numer           = znajdź_wolną_ramkę();
                strona.ochrona         = false;
                strona.poprawność      = true;
                strona.stempel_czasowy = getStempelCzasowy();
                zapisz_ramkę(strona.numer, "DANEDANE");
                TablicaStron.Add(strona);
            }
            for (int i = ramki_na_dane; i < potrzeba_stron_na_dane; i++)
            {
                Strona strona = new Strona();
                strona.numer           = znajdź_wolną_stronnicę();
                strona.ochrona         = false;
                strona.poprawność      = false;
                strona.stempel_czasowy = getStempelCzasowy();
                zapisz_stronnicę(strona.numer, "DANEDANE");

                TablicaStron.Add(strona);
            }
            if (potrzeba_stron_na_dane > 0)
            {
                pcb.Auto_stack_addres = numerzbioru * 1000 + potrzeba_stron_na_kod * konfiguracja.długość_ramki + potrzeba_stron_na_dane * konfiguracja.długość_ramki;
            }
            for (int i = 0; i < ramki_na_stos; i++)
            {
                Strona strona = new Strona();
                strona.numer           = znajdź_wolną_ramkę();
                strona.ochrona         = false;
                strona.poprawność      = true;
                strona.stempel_czasowy = getStempelCzasowy();
                zapisz_ramkę(strona.numer, "STOSSTOS");
                TablicaStron.Add(strona);
            }
            for (int i = ramki_na_stos; i < potrzeba_stron_na_stos; i++)
            {
                Strona strona = new Strona();
                strona.numer           = znajdź_wolną_stronnicę();
                strona.ochrona         = false;
                strona.poprawność      = false;
                strona.stempel_czasowy = getStempelCzasowy();
                zapisz_stronnicę(strona.numer, "STOSSTOS");

                TablicaStron.Add(strona);
            }

            TablicaZbiorów[numerzbioru] = TablicaStron;
        }
Пример #11
0
        /// <summary>
        /// sterowanie grą
        /// </summary>
        static void MainGry(Strona side, bool bot = true)
        {
            //inicjalizuje plansze
            plansza = new Plansza(PromocjaPionka, KoniecGry);
            gra     = true;
            KomputerowyPrzeciwnik komputerowyPrzeciwnik = new KomputerowyPrzeciwnik(plansza, 1);

            //rysowanie
            Console.Clear();
            RysujPlansze();
            //działanie
            while (gra)
            {
                if (bot && side == plansza.StronaGrajaca)
                {
                    komputerowyPrzeciwnik.WykonajRuch();
                    RysujPlansze();
                }
                switch (Console.ReadKey().Key)
                {
                case ConsoleKey.UpArrow:
                {
                    Punkt staraPozycja = kursorPozycja;
                    kursorPozycja = new Punkt(staraPozycja.X, staraPozycja.Y - 1);
                    if (!kursorPozycja.Pomiedzy(7))
                    {
                        kursorPozycja = staraPozycja;
                    }
                    RysujPole(staraPozycja);
                    RysujPole(kursorPozycja);
                    break;
                }

                case ConsoleKey.DownArrow:
                {
                    Punkt staraPozycja = kursorPozycja;
                    kursorPozycja = new Punkt(staraPozycja.X, staraPozycja.Y + 1);
                    if (!kursorPozycja.Pomiedzy(7))
                    {
                        kursorPozycja = staraPozycja;
                    }
                    RysujPole(staraPozycja);
                    RysujPole(kursorPozycja);
                    break;
                }

                case ConsoleKey.LeftArrow:
                {
                    Punkt staraPozycja = kursorPozycja;
                    kursorPozycja = new Punkt(staraPozycja.X - 1, staraPozycja.Y);
                    if (!kursorPozycja.Pomiedzy(7))
                    {
                        kursorPozycja = staraPozycja;
                    }
                    RysujPole(staraPozycja);
                    RysujPole(kursorPozycja);
                    break;
                }

                case ConsoleKey.RightArrow:
                {
                    Punkt staraPozycja = kursorPozycja;
                    kursorPozycja = new Punkt(staraPozycja.X + 1, staraPozycja.Y);
                    if (!kursorPozycja.Pomiedzy(7))
                    {
                        kursorPozycja = staraPozycja;
                    }
                    RysujPole(staraPozycja);
                    RysujPole(kursorPozycja);
                    break;
                }

                case ConsoleKey.Enter:
                    if (mozliweRuchy.Contains(kursorPozycja))
                    {
                        plansza.SprobujWykonacRuch(zaznaczenie, kursorPozycja);
                        zaznaczenie  = null;
                        mozliweRuchy = new List <Punkt>();
                        if (gra)
                        {
                            RysujPlansze();
                        }
                    }
                    else if (plansza.BierkaNaPozycji(kursorPozycja, out Bierka bierka))
                    {
                        if (bierka.Kolor == plansza.StronaGrajaca)
                        {
                            zaznaczenie  = kursorPozycja;
                            mozliweRuchy = bierka.PobMozliweRuchy;
                            RysujPlansze();
                        }
                    }
                    break;

                case ConsoleKey.Q:
                    Console.Clear();
                    return;
                }
                Console.CursorLeft = 0;
                Console.CursorTop  = 0;
            }
            Console.Clear();
        }