
[ このメッセージへの返事 ]
[ 返事を書く ]
[ 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;
}

|