コード例 #1
0
ファイル: wio.c プロジェクト: dogrizz/wilk-i-owca
int main(int argc, char* argv[]){
  ruch ruchPrzeciwnika;
  inicjujOkno();
  inicjujPlansze();
  if(argc ==2){
    dodajOwce();
  }
  eventy();
  
  if(argc == 1) {
    mojTyp = WILK;
    zainicjujPolaczenie();
    odbierz();
    dodajOwce();
  }else if(argc ==2 ) {
  
    //sztuczne dane potrzebne tylko do wyslania sygnalu startu
    ruch inicjalizacja;
    inicjalizacja.x1 =9;
    inicjalizacja.y1 =9;
    inicjalizacja.x2 =9;
    inicjalizacja.y2 =9;
    
    adresPrzeciwnika = argv[1];
    zainicjujPolaczenie();
    wyslij(inicjalizacja);
    ruchPrzeciwnika = odbierz();
    wykonajRuch(ruchPrzeciwnika);
    sprawdzStan();
    mojTyp = OWCA;
  }else{
    printf("Podano zbyt duza liczba argumentow\n Poprawne uzycie ./wio adres_ip\n");
    return 0;
  }
  
  while(1){
    XSync(mydisplay,True); //usuniecie wszystkich eventow wyklikanych w czasie oczekiwania na ruch
    eventy();
    if(wykonalemRuch == 1){
      wyslij(ostatniRuch); // wysłanie ruchu przeciwnikowi
      wykonalemRuch = 0;
      sprawdzStan();
      ruchPrzeciwnika = odbierz();
      //poki ktos nowy probuje się dopiąć, a nie normalny ruch
      while(ruchPrzeciwnika.x1 ==9 || ruchPrzeciwnika.y1 ==9 || ruchPrzeciwnika.x2 ==9 || ruchPrzeciwnika.y2 ==9 ){
        ruchPrzeciwnika = odbierz();
      }
      wykonajRuch(ruchPrzeciwnika);
      sprawdzStan();
    }
  }
  
  return 0;
}
コード例 #2
0
ファイル: wio.c プロジェクト: dogrizz/wilk-i-owca
void eventy(){
  ruch move;
  XNextEvent(mydisplay,&myevent); 
  
  switch (myevent.type) {
     
     case Expose:
      rysujPlansze(1);
      break;
     case ButtonPress:
      if(clickCounter ==0){
        clickCounter=1;
        move.y1=myevent.xbutton.x/50;
        move.x1=myevent.xbutton.y/50;
        if(plansza[move.x1][move.y1].typ == null.typ || plansza[move.x1][move.y1].typ != mojTyp){
          clickCounter=0;
        }
      }else{
        move.y2=myevent.xbutton.x/50;
        move.x2=myevent.xbutton.y/50;
        if(sprawdzRuch(move)){
          wykonajRuch(move);
          ostatniRuch = move;
          wykonalemRuch=1;
        }else{
          printf("ruch niedozwolony\n");
        }
        clickCounter = 0;
        
      }
     
  }
}
コード例 #3
0
void
WarcabyGUI::wcisnietoPrzycisk(SDL_Event& zdarzenie)
{
  if (zdarzenie.type == SDL_KEYDOWN) switch (zdarzenie.key.keysym.sym)
    {
    case SDLK_ESCAPE:
      m_czyKontynuowac = false;
      break;
    case SDLK_RETURN:
      wykonajRuch(m_zaznaczonePola);
      m_zaznaczonePola.clear();
    case SDLK_BACKSPACE:
      if (m_zaznaczonePola.size() > 0) m_zaznaczonePola.pop_back();
      break;
    case SDLK_r:
      restartuj();
      break;
    }
}
コード例 #4
0
void
WarcabyGUI::uruchom()
{
  inicjuj();
  m_glowneOkno = SDL_SetVideoMode(szerokoscOkna(),wysokoscOkna(),32,
      SDL_SWSURFACE);
  SDL_WM_SetCaption("Warcaby ver. 0.1","data/ikona.bmp");
  SDL_Event zdarzenie;
  m_czyKontynuowac = true;
  Sciezka sciezka;
  while (m_czyKontynuowac)
    {
      while (SDL_PollEvent(&zdarzenie))
        {
          switch (zdarzenie.type)
            {
            case SDL_QUIT:
              m_czyKontynuowac = false;
              break;
            case SDL_KEYDOWN:
              wcisnietoPrzycisk(zdarzenie);
              break;
            case SDL_MOUSEBUTTONDOWN:
              kliknietoPrzyciskMyszy(zdarzenie);
              break;
            }
        }
      if (czyRuchKomputera()) if (podpowiedzRuch(sciezka))
        wykonajRuch(sciezka.listaPol());
      else
        odpuscRuch();
      if (czyKoniec())
        {
          restartuj();
        }
      rysuj();
    }
  SDL_Quit();
}