Re: あれれ?でも…



[ このメッセージへの返事 ] [ 返事を書く ] [ home.html ]



投稿者: 68user @ www1.saganet.ne.jp on 97/12/04 00:05:38

In Reply to: Re: それなら

posted by BIO @ hk140.biwa.or.jp on 97/12/03 23:51:43

こんなプログラムがありました。getcharでキー入力を受けてる
けど、鬼ごっこゲームがリアルタイムで動いてます。

# 標準入力をfflushすればいいのかな? うーん、よーわからん…

でもでも、やっぱり環境に依存するような気がするなぁ…。
# Windowsアプリで、getcharでうまくいくとは思わない。
# (Windowsはよくしらないけど)

とりあえずちゃんと環境を書いた方がいいと思います。


void session(){
 int c,flag;
 fd_set readOK;
 
 show(&me);
 
 flag = 1;
 while (1){
  readOK = mask;
  select(width,(fd_set *)&readOK,NULL,NULL,NULL);
  
  if ( FD_ISSET(0,&readOK) ){
   c = getchar();
   hide(&me);
   flag = update(&me,c);
   show(&me);
   write(soc,buf,BUF_LEN);
   if ( flag == 0 ){ break; }
  }
  
  if ( FD_ISSET(soc,&readOK) ){
   read(soc,buf,BUF_LEN);
   hide(&peer);
   flag = interpret(&peer);
   show(&peer);
   if ( flag == 0 ) break;
  }
 }
 die();
}

static int update(PLAYER *who,int c){
 switch (c){
  case 'h':
  if ( who->x > MIN_X ) who->x--;
   break;
  case 'j':
   if ( who->y < MAX_Y ) who->y++;
   break;
  case 'k':
   if ( who->y > MIN_X ) who->y--;
   break;
  case 'l':
   if ( who->x < MAX_X ) who->x++;
   break;
  default:
   break;
 }

 sprintf(buf,"%d %d\n",who->x,who->y);
 return 1;
}