PR
カレンダー
フリーページ
キーワードサーチ
用意したものは、Borland C++ 5.5のmakeと、PL/I-86です。
--- Makefile ---
PLIBINPATH=c:\pli86\bin
SYSFILE=pli0.ovr pli1.ovr pli2.ovrLIBFILE=plilib.l86
PROG=stone
${PROG}.exe: ${PROG}.obj ${LIBFILE} link86 ${PROG},${LIBFILE}
${PROG}.obj: ${PROG}.pli ${SYSFILE} pli ${PROG}
pli0.ovr: copy ${PLIBINPATH}\$@ .
pli1.ovr: copy ${PLIBINPATH}\$@ .
pli2.ovr: copy ${PLIBINPATH}\$@ .
plilib.l86: copy ${PLIBINPATH}\$@ .
clean: -del ${PROG}.obj ${PROG}.sym ${SYSFILE} ${LIBFILE}
clobber:
-del ${PROG}.exe ${PROG}.obj ${PROG}.sym ${SYSFILE} ${LIBFILE}
--- stone.pli ---
STONE: PROCEDURE OPTIONS(MAIN);
DECLARE STONES FIXED(15);
DECLARE TAKE FIXED(15);
START:
PUT SKIP LIST('STONES(1-30) ? ');
GET LIST(STONES);
IF (STONES < 1) ! (STONES > 30) THEN
DO;
PUT LIST('ERROR');
GO TO START;
END;
PUT LIST('*** START ***');
LOOP:
PUT SKIP LIST('STONES = ', STONES, ' :');
IF STONES = 1 THEN
PUT LIST('TAKE(1) ? ');
ELSE
IF STONES = 2 THEN
PUT LIST('TAKE(1-2) ? ');
ELSE
PUT LIST('TAKE(1-3) ? ');
GET LIST(TAKE);
IF (TAKE < 1) ! (TAKE > 3) ! (TAKE > STONES) THEN
DO;
PUT LIST('ERROR');
GO TO LOOP;
END;
STONES = STONES - TAKE;
IF STONES = 0 THEN
DO;
PUT SKIP LIST('*** I WIN.');
GO TO FINISH;
END;
TAKE = STONES - ((STONES / 4) * 4) - 1;
IF TAKE < 0 THEN
TAKE = 3;
IF TAKE = 0 THEN
TAKE = 1;
PUT LIST('STONES = ', STONES, ' : I TAKE ', TAKE);
STONES = STONES - TAKE;
IF STONES = 0 THEN
DO;
PUT SKIP LIST('*** YOU WIN.');
GO TO FINISH;
END;
GO TO LOOP;
FINISH:
END STONE;
ルールは、プレイヤーとコンピュータが交互に1~3個の石を取っていって、最後の1個を取った人が負けです。
最初に石の数を聞いてくるので、1~30の数を入力します。
あとは、石をいくつ取るか聞いてくるので、1~3の数を入力します。プレイヤーが石を取ると、次にコンピュータが石を取ります。
石がなくなるとゲーム終了で、どちらが勝ったかを表示します。
PL/I-86は、コンパイルでエラーになってもOBJファイルが残ってしまうことがあって、エラー発生時はmakeを繰り返し実行するだけではうまくEXEファイルを作れません。makeで失敗したら、make cleanかmake clobberしてからmakeし直す必要があります。
PL/I-86で簡単なサンプルを作ってみました 2010年03月10日 コメント(2)
パソコン故障しました 2009年05月15日
OpenOffice.org 3.0をインストールしてみ… 2008年10月18日 コメント(4)