void CChineseChessView::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: ÔÚ´ËÌí¼ÓÏûÏ¢´¦Àí³ÌÐò´úÂëºÍ/»òµ÷ÓÃĬÈÏÖµ if (isMouseDown){ isMouseDown=false; CRect rect; GetClientRect(&rect); CPoint logpoint=PhysicalToLogicPoint(point); if (logpoint.x>=0){ //human move Gen(); newmove.from = LogicPointToNum(selectedPoint); newmove.dest = LogicPointToNum(logpoint); for (int i=gen_begin[ply]; i<gen_end[ply]; i++){ if (gen_dat[i].m.from==newmove.from && gen_dat[i].m.dest==newmove.dest){ if(UpdateNewMove()){ UpdateDisplay(rect); int ret; ret=MessageBox("you are really a lucky dog,dare to try again?","Game Over",MB_YESNO); if (ret==IDYES){ NewGame(true); return; }else{ exit(0); } } side = xside; xside = 1-xside; //computer move short best; best = AlphaBeta(-INFINITY, INFINITY, MAX_PLY); if(UpdateNewMove()){ UpdateDisplay(rect); int ret; ret=MessageBox("afraid?dare to try again?","Game Over",MB_YESNO); if (ret==IDYES){ NewGame(true); return; }else{ exit(0); } } side = xside; xside = 1-xside; break; } } } UpdateDisplay(rect); } CView::OnLButtonUp(nFlags, point); }
/***** MAIN BLOCK *****/ int main(void) { InitGen(); DrawBoard(); side = LIGHT; xside = DARK; computerside = DARK; do { if (side == computerside) ComputerThink(); else if (GetHumanMove()) break; side = xside; xside = 1-xside; } while (!UpdateNewMove()); }
int main(){ int listen_sock; int server_len, client_len; struct sockaddr_in server_address; struct sockaddr_in client_address; listen_sock = socket(AF_INET, SOCK_STREAM, 0); if (listen_sock == -1) { printf("khong tao duoc socket\n"); return 0; } printf("Tao socket thanh cong\n"); server_address.sin_family = AF_INET; inet_aton("127.0.0.1",&server_address.sin_addr); server_address.sin_port = htons(5500); server_len = sizeof(server_address); if(bind(listen_sock, (struct sockaddr *)&server_address,server_len)<0) { printf("bind failed.\n"); return 0; } printf("bind done\n"); int check = listen(listen_sock, 10); if (check == -1) { printf("error"); return 0; } printf("waiting connect ...\n"); while(1) { client_len = sizeof(client_address); conn_sock = accept(listen_sock,(struct sockaddr *)&client_address, &client_len); if(conn_sock==-1){ printf("error connect\n"); return 0; }else{ printf("Accept new connection\n"); } if(fork() == 0){ close(listen_sock); //thiet lap truyen nhan giu lieu lien tuc int sentBytes,revedBytes,i; time_t start; struct tm * timeinfo; char name[30]; char pass[16]; struct userinfo acc1; char s[2]="|"; char *token; int flag; char str_flag[3]; char filename[]="data.txt"; int stop = 0; FILE *f; FILE *result; int login; while((revedBytes = recv(conn_sock,buff,1024,0)) >= 0){ buff[revedBytes]='\0'; token = strtok(buff, s); strcpy(str_flag,token); flag=atoi(str_flag); //nhan va kiem tra co bao switch(flag){ case 0: //kiem tra dang nhap neu dang nhap thang cong tra ve buff[0] = 5 //neu khong dung tra ve buff[0]=4 va buff[1] la ma loi printf("Dang nhap\n"); token =strtok(NULL,s); strcpy(name,token); token=strtok(NULL,s); strcpy(pass,token); login = checklogin(name,pass); if(login==1){ result =fopen(name,"w"); buff[0] = 5; sentBytes = send(conn_sock,buff,1024,0); }else{ buff[0] = 4; buff[1] = login; sentBytes = send(conn_sock,buff,1024,0); } break; case 1: token =strtok(NULL,s); strcpy(name,token); token=strtok(NULL,s); strcpy(pass,token); if(findAcc(name)==1){ buff[0] = 4; buff[1] = 1; buff[2] = '\0'; sentBytes = send(conn_sock,buff,1024,0); break; } f =fopen(filename,"a"); fprintf(f, "%s\t%s\n",name,pass ); fclose(f); buff[0] = 5; buff[1] = '\0'; sentBytes = send(conn_sock,buff,1024,0); break; case 2: side = 1 ;xside = 0; time (&start ); timeinfo = localtime ( &start ); fprintf(result,"IP address is: %s\n", inet_ntoa(client_address.sin_addr)); fprintf (result,"time start :%s\n", asctime (timeinfo) ); InitGen(); while(1){ if(side == computerside){ ComputerThink(); printf("%d may choi\n",side); fprintf(result,"%s-%s\n",indexChar(newmove.from),indexChar(newmove.dest)); UpdateNewMove(); buff[0] = 3; buff[1] = newmove.from; buff[2] = newmove.dest; buff[3] = check_thua();stop = buff[3]; buff[4] = '\0'; send(conn_sock,buff,1024,0); if(stop == 1) break; } else if(GetHumanMove(0,1)==0){ fprintf(result,"%s-%s\t",indexChar(newmove.from),indexChar(newmove.dest)); UpdateNewMove(); printf("%d nguoi choi\n",side); buff[0] = 3; buff[1] = 1; buff[2] = 0; buff[3] = check_thang(); stop = buff[3]; buff[4] = '\0'; send(conn_sock,buff,1024,0); //tra ve neu di thanh cong if(stop == 1) break; }; side = xside; xside = 1-xside; printf("%d-%d-%d\n",side,newmove.from,newmove.dest); } printf("Dung choi\n"); time (&start ); timeinfo = localtime ( &start ); fprintf (result,"time end :%s\n", asctime (timeinfo)); fclose(result); result = fopen(name,"r"); while(!feof(result)){ if (fgets(buff,81,result) != NULL ){ sentBytes=send(conn_sock,buff,1024,0); } } buff[0] = 'Q'; buff[1] = '\0'; sentBytes=send(conn_sock,buff,1024,0); break; default: break; } } close(conn_sock); exit(0); } signal(SIGCHLD,sig_chld); close(conn_sock); } return 1; }