Zobacz wyniki ankiety na temat zarobków programistów w Polsce. Czytaj więcej..
0

Mam za zadanie stworzyc aplikacje do gry 'w kulki' (podobno). Problem w tym,ze nie bardzo rozumiem jej zasady zawarte w 'specyfikacji'. Czy ktos moglby mi pomoc z pseudokodem do tego czegos ?

Link :

http://img688.imageshack.us/img688/605/52274337.jpg

flag
Faktycznie, screen i zasady są dość niejednoznaczne... – TeMPOraL Jun 11 at 21:10

1 Answer

0

sprawa nie jest taka trudna.

Generalnie wstawiając kulkę możesz ułożyć linię. Zważ na to, że wstawiając kulkę możesz utworzyć nawet kilka lini jednocześnie (podejrzewam, że nawet w czterych kierunkach. Pion, poziom i na dwa skosy). Ponadto zwróć uwagę, że nie chodzi o to, by linia była w całości z Twoich kulek tylko o to, byś to Ty ją jednocześnie zakończył.

Algorytm gry jest prosty do zaimplementowania. Po wykonanym ruchu sprawdzasz, czy po wstawieniu kulki w dane pole jakaś linia jest już zapełniona. Jeżeli tak, to dodajesz punkty (Za cały linie, nie tylko jego koloru) do konta zawodnika.

i tak aż do końca wolnych pól albo do momentu w którym będziesz w stanie wyliczyć czy któryś zawodnik już nie wygrał na pewno.

tutaj masz przykładową implementację chyba najtrudniejszej części jaką jest sprawdzanie lini. Przydaje się to rozpisać na kartce w kratkę i przy otrzymaniu danego zaznaczenia na X,Y zaznaczyć sobie linię po której się chcemy iterować...

 /*
 zalezy jaką konwencje przyjmujesz... dla mnie funkcja 
 poziom powinna jednak sprawdzac poziome linie bez 
 naszego roboczego obrotu o 45 stopni
 */
 bool czyWPoziomie(int x, int y)  
 {
   for(int ix = 0, iy = x + y; iy >= 0; ++ix; --iy)
   {
        if(pola[ix][iy] == false)
            return false;
   }
   return true;  //jeżeli doszlismy tutaj, tzn ze zadna nie 
                     //byla nieznaznaczona. Czyli wszystkie byly pelne

 }


 bool czyWPionie(int x, int y)  
 {
   if(x > y)
   {
      for(int ix = 0, iy = y - x; ix + iy <= n; ++ix; ++iy)
      {
           if(pola[ix][iy] == false)
            return false;
      }
   }
   else
   {
      for(int ix = x-y, iy = 0; ix + iy <= n; ++ix; ++iy)
      {
           if(pola[ix][iy] == false)
            return false;
      }
   }

   return true;  //jeżeli doszlismy tutaj, tzn ze zadna nie 
                     //byla nieznaznaczona. Czyli wszystkie byly pelne

 }


 bool czySkos1(int x, int y)
 {
      for(int ix = 0, iy = y; ix + iy <= n; ++ix)
      {
           if(pola[ix][iy] == false)
            return false;
      }
      return true;
 }

 bool czySkos2(int x, int y)
 {
      for(int ix = x, iy = 0; ix + iy <= n; ++iy)
      {
           if(pola[ix][iy] == false)
            return false;
      }
      return true;
 }
link|flag

Your Answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.