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; }
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; } } }
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; } }
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(); }