/*-----------------------------------------------------------------*/ /* ■ ボール移動*/ /*-----------------------------------------------------------------*/ /*  述語 test を実行すると,ボールが画面端で反射しながら永久に  */ /* 動きます。止めるにはキーボードから任意の文字を入力します。  */ /*  */ test:-d_clear, repeat, move,chEnd. chEnd:-d_keylength(0),!,fail. chEnd:-d_keyin(X),d_cursor(1,23), write('終了します. 入力文字コード = '), write(X). move:-ball(X,Y), dxy(DX,DY),NX is X + DX, NY is Y + DY, posBall(NX,NY), changeDXY(NX,NY),!, d_cursor(X,Y),ttyput(33088),d_cursor(NX,NY),ttyput(33180), s_sleep(100). posBall(NX,NY):-(retract(ball(XX,YY));true),assert(ball(NX,NY)). changeDXY(X,Y):- chDX(X,DX),chDY(Y,DY), (retract(dxy(XX,YY));true), assert(dxy(DX,DY)). chDX(X, 2):- X =< 1. chDX(X,-2):- X >=79. chDX(X,DX):- dxy(DX,DY). chDY(Y, 1):- Y =< 1. chDY(Y,-1):- Y >=25. chDY(Y,DY):- dxy(DX,DY). dxy(2,1). ball(1,1).