!パソコンが相手をする「オセロ・ゲーム」勝てるか?
!このプログラムは、uBASIC 用の、小山オセロを、十進BASIC に移植したものです。 !対戦する「知能」の部分が、機械語( oth33p.dll ) になっていますので、 !下記から DownLoad し、このプログラムと同じフォルダーに置いて下さい。 !レジストリーは使用せず、汚しません。 !DownLoad の時の警告は、心配要りません、無視してください。
!http://homepage2.nifty.com/neutro/asm/oth33p.dll
!-------------------希望者のみ---------------------- !ソース.asm が入用な方。 !http://homepage2.nifty.com/neutro/asm/oth33p.asm ! !その他、全ファイルの欲しい方。 !http://homepage2.nifty.com/neutro/asm/othello.htm !---------------------------------------------------
! 1984/03/10 for N88BASIC by Yoichi KOYAMA ! modified for UBASIC(98) 1989 by Yuji KIDA ! 1989/10/02 modified by Yoichi KOYAMA ! modified for UBASIC(AT) 1994 by Yuji KIDA ! !------------------------------------------- ! modified for 十進BASIC 2008 by バットマン ! ! ** KOYAMA OTHELLO GAME for 十進BASIC **
FUNCTION oth33p(dx,r$) ASSIGN "oth33p.dll", "start00" ! DOS版の機械語を逆アセンブルして移植した。 END FUNCTION
! ASSIGN 文が、時々、”文法の誤り 0th33p.dll をロードできない” ! という警告を出す場合がある(win98SE)。RUN し直すと動作します。原因不明? ! winXP では全くない、が、わからない。
OPTION CHARACTER byte SET TEXT BACKGROUND "OPAQUE" ! plot text with background color 0 SET WINDOW -1,13,13,-1 LET xc=(13+1)/(501/7) ! 半角/全角=7/14pix /桁、screen=501x501pix. LET xc2=xc+xc LET xc4=xc2+xc2
LET XL=9 LET YY=5.5 LET YC=2 DIM U(2),GT(2)
LET CIN=BVAL("1000",16) LET CCH=BVAL("2000",16) LET CPL=BVAL("3000",16) LET CFN=BVAL("4000",16) LET CMN=BVAL("6000",16) LET INI=BVAL("8001",16) LET CCHexe=BVAL("9000",16) LET LTB=BVAL("a000",16) LET RAN=BVAL("b000",16) LET OWT=BVAL("c000",16) LET r$=r$&REPEAT$(CHR$(0),38)
!----- SUB RANDOM RANDOMIZE ! 620 ! 引数有りは「再現」する。(整数0〜4294967295) LET r$="" FOR j=1 TO 8 LET x=1 LET y=0 FOR i=1 TO 8 IF RND<0.5 THEN LET y=y+x LET x=x*2 NEXT i LET r$=r$&CHR$(y) NEXT j LET r$=r$&REPEAT$(CHR$(0),38-8) !----- CALL printr LET AR0=oth33p( RAN,r$) CALL printA32 CALL printr !----- END SUB
!----- SUB set_WT DATA 1000,100,100,100,1000,-1200,-10, -20, -20,-10, 80,-120, -80, -60 LET r$="" FOR i=1 TO 14 READ w IF w<0 THEN LET w=w+BVAL("10000",16) LET r$=r$&CHR$(MOD(w,256))&CHR$(IP(w/256)) NEXT i LET r$=r$&REPEAT$(CHR$(0),38-14*2) !----- CALL printr LET AR0=oth33p( OWT,r$) CALL printA32 CALL printr !----- END SUB
! 続き1
|