オセロゲームは作れますか? 会社員 2005/02/20 20:35:17 ├表示部分だけですが、、、 山中和義 2005/02/21 11:07:06 │├盤をクリックしてゲームが可能です。 山中和義 2005/02/21 16:41:53 │└続き 山中和義 2005/02/21 16:42:35 └完成版を記載しておきます。。。 山中和義 2005/02/21 19:10:50 ├続き 山中和義 2005/02/21 19:11:39 ├オセロの結果 会社員 2005/03/05 21:24:45 ├続きです 会社員 2005/03/05 21:30:15 └続きの続き 会社員 2005/03/05 21:32:11
オセロゲームは作れますか? 会社員 2005/02/20 20:35:17 ツリーへ
オセロゲームは作れますか? |
返事を書く |
会社員 2005/02/20 20:35:17 | |
こんばんは オセロゲームは作ることは可能でしょうか? 作れる場合、どういう風にプログラムを組めばいいのでしょうか? ランダムで対戦させて、先手、後手どちらが勝率が高いか調べてみたいのですが。 |
├表示部分だけですが、、、 山中和義 2005/02/21 11:07:06 ツリーへ
Re: オセロゲームは作れますか? |
返事を書く |
山中和義 2005/02/21 11:07:06 | |
表示部分だけですが、、、 !オセロゲーム SET BITMAP SIZE 640,480 !画面サイズ640×480 SET WINDOW 0,640,0,480 !左下が原点。横がX、縦Y SET COLOR mode "NATIVE" !RGB指定 SET TEXT font "",12 !文字サイズ DIM CEL(8,8) !配置情報 !盤を表示する SET AREA COLOR colorindex(0,1,0) !緑 PLOT AREA:50,50; 50,450; 450,450; 450,50 FOR i=1 TO 8 !行番号 PLOT TEXT ,AT 25,470-50*i:STR$(i) NEXT i FOR i=1 TO 8 !列番号 PLOT TEXT ,AT 20+50*i,460:CHR$(i+64) NEXT i !マス目を表示する SET LINE COLOR colorindex(0,0,0) !黒 PLOT LINES:50,50; 50,450; 450,450; 450,50; 50,50 FOR i=1 TO 2 PLOT LINES:50-i,50-i; 50-i,450+i; 450+i,450+i; 450+i,50-i; 50-i,50-i NEXT i FOR i=1 TO 8 !縦線 PLOT LINES:50*i,50; 50*i,450 NEXT i FOR i=1 TO 8 !横線 PLOT LINES:50,50*i; 450,50*i NEXT i !初期化 FOR i=1 TO 8 FOR j=1 TO 8 LET CEL(i,j)=0 !置いてない状態 NEXT j NEXT i LET CEL(4,4)=1 !白中央 LET CEL(5,5)=1 LET CEL(4,5)=-1 !黒中央 LET CEL(5,4)=-1 !今の局面を表示する FOR i=1 TO 8 FOR j=1 TO 8 IF CEL(i,J)=1 THEN !白石があるなら CALL plot_white(i,j,1) END IF IF CEL(i,J)=-1 THEN !黒石があるなら CALL plot_white(i,j,0) END IF NEXT j NEXT i END !石を描画する EXTERNAL SUB plot_white(i,j,c) CALL MAPPING(i,j, x,y) !マス目からXY座標に変換する SET AREA COLOR colorindex(c,c,c) !白または黒 DRAW disk WITH SCALE(20)*SHIFT(x,y) END SUB !マス目番号からXY座標を求める !横,縦 i,j、x,y EXTERNAL SUB MAPPING(i,j, x,y) LET x = i*50+25 LET y = j*50+25 END SUB |
│├盤をクリックしてゲームが可能です。 山中和義 2005/02/21 16:41:53 ツリーへ
Re: 表示部分だけですが、、、 |
返事を書く |
山中和義 2005/02/21 16:41:53 | |
盤をクリックしてゲームが可能です。 打てない場合のスキップがまだです。 !オセロゲーム SET BITMAP SIZE 640,480 !画面サイズ640×480 SET WINDOW 0,640,0,480 !左下が原点。横がX、縦Y SET COLOR mode "NATIVE" !RGB指定 SET TEXT font "",12 !文字サイズ DIM CEL(8,8) !配置情報 !盤を表示する SET AREA COLOR colorindex(0,1,0) !緑 PLOT AREA:50,50; 50,450; 450,450; 450,50 FOR i=1 TO 8 !行番号 PLOT TEXT ,AT 25,470-50*i:STR$(i) NEXT i FOR i=1 TO 8 !列番号 PLOT TEXT ,AT 20+50*i,460:CHR$(i+64) NEXT i !マス目を表示する SET LINE COLOR colorindex(0,0,0) !黒 PLOT LINES:50,50; 50,450; 450,450; 450,50; 50,50 FOR i=1 TO 2 PLOT LINES:50-i,50-i; 50-i,450+i; 450+i,450+i; 450+i,50-i; 50-i,50-i NEXT i FOR i=1 TO 8 !縦線 PLOT LINES:50*i,50; 50*i,450 NEXT i FOR i=1 TO 8 !横線 PLOT LINES:50,50*i; 450,50*i NEXT i !局面を初期化する FOR i=1 TO 8 FOR j=1 TO 8 LET CEL(i,j) = 0 !置いてない状態 NEXT j NEXT i LET CEL(4,4) = 1 !白中央 LET CEL(5,5) = 1 LET CEL(4,5) = -1 !黒中央 LET CEL(5,4) = -1 LET flg = -1 !ゲーム中(黒の手)※-1は黒、1は白 CALL plot_now(CEL,flg) !今の局面を表示する DO WHILE flg<>0 !※0は終了 !-----石が置けるかチェックする LET ok = -1 DO WHILE ok<0 !はさんだ位置に置くまで LET i=4 LET j=4 DO WHILE CEL(i,j)<>0 !空きマスをクリックするまで LET i=-1 LET j=-1 DO WHILE i<1 OR i>8 OR j<1 OR j>8 !マス目の中をクリックするまで MOUSE POLL x,y,left,right DO WHILE left=0 MOUSE POLL x,y,left,right LOOP LET i = INT(x/50) !XY座標をマス目に変換する LET j = INT((500-y)/50) LOOP LOOP PRINT i;j !debug debug debug CALL check2(CEL,i,j,flg, ok) !はさんでいるか確認する LOOP !-----はさんだ縦横斜めを反転させる LET CEL(i,j) = flg !そこに石を埋める !-----局面を表示する LET flg = -flg !手を交代する CALL plot_now(CEL,flg) !今の局面を表示する WAIT DELAY 0.2 LOOP END |
│└続き 山中和義 2005/02/21 16:42:35 ツリーへ
Re: 表示部分だけですが、、、 |
返事を書く |
山中和義 2005/02/21 16:42:35 | |
続き !石を描画する EXTERNAL SUB plot_stone(i,j,c) CALL ij2xy(i,j, x,y) !マス目からXY座標に変換する SET AREA COLOR colorindex(0,0,0) !黒の輪郭 DRAW disk WITH SCALE(21)*SHIFT(x,y) SET AREA COLOR c !白または黒 DRAW disk WITH SCALE(20)*SHIFT(x,y) END SUB !マス目番号からXY座標を求める ※横,縦 i,j、x,y EXTERNAL SUB ij2xy(i,j, x,y) LET x = i*50+25 LET y = 450-j*50+25 END SUB !今の局面を表示する EXTERNAL SUB plot_now(CEL(,),stn) LET n1=0 !白・黒の数 LET n2=0 FOR i=1 TO 8 FOR j=1 TO 8 IF CEL(i,J)=1 THEN !白石なら CALL plot_stone(i,j,colorindex(1,1,1)) LET n1=n1+1 END IF IF CEL(i,J)=-1 THEN !黒石なら CALL plot_stone(i,j,colorindex(0,0,0)) LET n2=n2+1 END IF NEXT j NEXT i SET AREA COLOR colorindex(1,1,1) PLOT AREA:500,0;640,0;640,480;500,480 PLOT TEXT ,AT 500,300:"白:"&STR$(n1) !石の数を表示する PLOT TEXT ,AT 500,275:"黒:"&STR$(n2) IF n1+n2<64 THEN IF stn=1 THEN !白なら CALL plot_stone(10,2,colorindex(1,1,1)) ELSE CALL plot_stone(10,2,0) END IF PLOT TEXT ,AT 560,370:"の番" ELSE PLOT TEXT ,AT 500,370:"おわり!" LET stn = 0 END IF END SUB !指定したマスの石を得る EXTERNAL FUNCTION get_cell(CEL(,),i,j) LET get_cell = 0 IF i>0 AND i<9 AND j>0 AND j<9 THEN !マス内だけ LET get_cell = CEL(i,j) END IF END FUNCTION !はさんでいるか確認して、裏返す EXTERNAL SUB check2(CEL(,),i,j,stn,ok) LET check2 = -1 FOR dx=-1 TO 1 !横方向 FOR dy=-1 TO 1 !縦方向 IF dx=0 AND dy=0 THEN !8方向なら ELSE LET N = 0 LET s=i+dx !ひとつ隣へ LET t=j+dy LET AA = get_cell(CEL,s,t) DO WHILE NOT(AA=0 OR AA=stn) !マス外か石がないか同じ色の石まで IF AA=-stn THEN LET N=N+1 !間に相手の石がある END IF LET s=s+dx !次のマス目へ LET t=t+dy LET AA = get_cell(CEL,s,t) LOOP IF AA=stn AND N>0 THEN !●○・・○●と●○・・○を区別する LET ok = 1 CALL reverse(CEL,i,j,stn,N,dx,dy) !裏返す END IF END IF NEXT dy NEXT dx END SUB !裏返す(自分の石と同じ色にする) EXTERNAL SUB reverse(CEL(,),i,j,stn,N,dx,dy) LET s=i+dx !ひとつ隣へ LET t=j+dy FOR k=1 TO N LET CEL(s,t) = stn LET s=s+dx !次のマス目へ LET t=t+dy NEXT k END SUB |
└完成版を記載しておきます。。。 山中和義 2005/02/21 19:10:50 ツリーへ
Re: オセロゲームは作れますか? |
返事を書く |
山中和義 2005/02/21 19:10:50 | |
完成版を記載しておきます。。。 左クリックで石を置き、右クリックでスキップします。 !オセロゲーム SET BITMAP SIZE 640,480 !画面サイズ640×480 SET WINDOW 0,640,0,480 !左下が原点。横がX、縦Y SET COLOR mode "NATIVE" !RGB指定 SET TEXT font "",12 !文字サイズ DIM CEL(8,8) !配置情報 !盤を表示する SET AREA COLOR colorindex(0,1,0) !緑 PLOT AREA:50,50; 50,450; 450,450; 450,50 FOR i=1 TO 8 !行番号 PLOT TEXT ,AT 25,470-50*i:STR$(i) NEXT i FOR i=1 TO 8 !列番号 PLOT TEXT ,AT 20+50*i,460:CHR$(i+64) NEXT i !マス目を表示する SET LINE COLOR colorindex(0,0,0) !黒 PLOT LINES:50,50; 50,450; 450,450; 450,50; 50,50 FOR i=1 TO 2 PLOT LINES:50-i,50-i; 50-i,450+i; 450+i,450+i; 450+i,50-i; 50-i,50-i NEXT i FOR i=1 TO 8 !縦線 PLOT LINES:50*i,50; 50*i,450 NEXT i FOR i=1 TO 8 !横線 PLOT LINES:50,50*i; 450,50*i NEXT i !局面を初期化する FOR i=1 TO 8 FOR j=1 TO 8 LET CEL(i,j) = 0 !置いてない状態 NEXT j NEXT i LET CEL(4,4) = 1 !白中央 LET CEL(5,5) = 1 LET CEL(4,5) = -1 !黒中央 LET CEL(5,4) = -1 LET flg = -1 !ゲーム中(黒の手)※-1は黒、1は白 CALL plot_now(CEL,flg) !今の局面を表示する DO WHILE flg<>0 !※0は終了 !-----石が置けるかチェックする MOUSE POLL x,y,left,right DO WHILE left=0 AND right=0 !クリックされたら MOUSE POLL x,y,left,right LOOP IF left=1 AND right=0 THEN !左クリックなら LET i = INT(x/50) !XY座標をマス目に変換する LET j = INT((500-y)/50) PRINT i;j !debug debug debug IF i>0 AND i<9 AND j>0 AND j<9 THEN !マス目の中をクリックしたら IF CEL(i,j)=0 THEN !空き位置を指定したら CALL check2(CEL,i,j,flg, ok) !はさんでいるか確認し、縦横斜めを反転させる IF ok>0 THEN !はさんだ位置に置いたら LET CEL(i,j) = flg !そこに石を埋める LET flg = -flg !手を交代する END IF END IF END IF END IF IF left=0 AND right=1 THEN !右クリックなら LET flg = -flg !手を交代する END IF !-----局面を表示する CALL plot_now(CEL,flg) !今の局面を表示する WAIT DELAY 0.2 LOOP END |
├続き 山中和義 2005/02/21 19:11:39 ツリーへ
Re: 完成版を記載しておきます。。。 |
返事を書く |
山中和義 2005/02/21 19:11:39 | |
続き !石を描画する EXTERNAL SUB plot_stone(i,j,c) CALL ij2xy(i,j, x,y) !マス目からXY座標に変換する SET AREA COLOR colorindex(0,0,0) !黒の輪郭 DRAW disk WITH SCALE(21)*SHIFT(x,y) SET AREA COLOR c !白または黒 DRAW disk WITH SCALE(20)*SHIFT(x,y) END SUB !マス目番号からXY座標を求める ※横,縦 i,j、x,y EXTERNAL SUB ij2xy(i,j, x,y) LET x = i*50+25 LET y = 450-j*50+25 END SUB !今の局面を表示する EXTERNAL SUB plot_now(CEL(,),stn) LET n1=0 !白・黒の数 LET n2=0 FOR i=1 TO 8 FOR j=1 TO 8 IF CEL(i,J)=1 THEN !白石なら CALL plot_stone(i,j,colorindex(1,1,1)) LET n1=n1+1 END IF IF CEL(i,J)=-1 THEN !黒石なら CALL plot_stone(i,j,colorindex(0,0,0)) LET n2=n2+1 END IF NEXT j NEXT i SET AREA COLOR colorindex(1,1,1) PLOT AREA:500,0;640,0;640,480;500,480 PLOT TEXT ,AT 500,300:"白:"&STR$(n1) !石の数を表示する PLOT TEXT ,AT 500,275:"黒:"&STR$(n2) IF n1+n2<64 THEN IF stn=1 THEN !白なら CALL plot_stone(10,2,colorindex(1,1,1)) ELSE CALL plot_stone(10,2,0) END IF PLOT TEXT ,AT 560,370:"の番" ELSE PLOT TEXT ,AT 500,370:"おわり!" LET stn = 0 END IF END SUB !指定したマスの石を得る EXTERNAL FUNCTION get_cell(CEL(,),i,j) LET get_cell = 0 IF i>0 AND i<9 AND j>0 AND j<9 THEN !マス内だけ LET get_cell = CEL(i,j) END IF END FUNCTION !はさんでいるか確認して、裏返す EXTERNAL SUB check2(CEL(,),i,j,stn,ok) LET ok = -1 FOR dx=-1 TO 1 !横方向 FOR dy=-1 TO 1 !縦方向 IF dx=0 AND dy=0 THEN !8方向なら ELSE LET N = 0 LET s=i+dx !ひとつ隣へ LET t=j+dy LET AA = get_cell(CEL,s,t) DO WHILE NOT(AA=0 OR AA=stn) !マス外か石がないか同じ色の石まで IF AA=-stn THEN LET N=N+1 !間に相手の石がある END IF LET s=s+dx !次のマス目へ LET t=t+dy LET AA = get_cell(CEL,s,t) LOOP IF AA=stn AND N>0 THEN !●○・・○●と●○・・○を区別する LET ok = 1 CALL reverse(CEL,i,j,stn,N,dx,dy) !裏返す END IF END IF NEXT dy NEXT dx END SUB !裏返す(自分の石と同じ色にする) EXTERNAL SUB reverse(CEL(,),i,j,stn,N,dx,dy) LET s=i+dx !ひとつ隣へ LET t=j+dy FOR k=1 TO N LET CEL(s,t) = stn LET s=s+dx !次のマス目へ LET t=t+dy NEXT k END SUB |
├オセロの結果 会社員 2005/03/05 21:24:45 ツリーへ
Re: 完成版を記載しておきます。。。 |
返事を書く |
会社員 2005/03/05 21:24:45 | |
オセロの結果 白 1998(後手) 黒 1876(先手) 引き分け175 無効試合数474 山中和義さんありがとうございました。 まだ修正しないとダメなのですが、 (手番がないときの処理が、ある時間待った場合次に移るようなプログラムになっている) 後手やや有利という結果でした。 多分、オセロ特有の逆転裏返しがあるため、最後に 駒を打つ方が有利なのかもしれません。 ------------------------------------- !オセロゲーム RANDOMIZE !勝敗カウンタ LET CNT_WHT=0 LET CNT_BLK=0 LET CNT_HKW=0 10 !初期設定 SET BITMAP SIZE 640,480 !画面サイズ640×480 SET WINDOW 0,640,0,480 !左下が原点。横がX、縦Y SET COLOR mode "NATIVE" !RGB指定 SET TEXT font "",12 !文字サイズ DIM CEL(8,8) !配置情報 !盤を表示する SET AREA COLOR colorindex(0,1,0) !緑 PLOT AREA:50,50; 50,450; 450,450; 450,50 FOR i=1 TO 8 !行番号 PLOT TEXT ,AT 25,470-50*i:STR$(i) NEXT i FOR i=1 TO 8 !列番号 PLOT TEXT ,AT 20+50*i,460:CHR$(i+64) NEXT i !マス目を表示する SET LINE COLOR colorindex(0,0,0) !黒 PLOT LINES:50,50; 50,450; 450,450; 450,50; 50,50 FOR i=1 TO 2 PLOT LINES:50-i,50-i; 50-i,450+i; 450+i,450+i; 450+i,50-i; 50-i,50-i NEXT i FOR i=1 TO 8 !縦線 PLOT LINES:50*i,50; 50*i,450 NEXT i FOR i=1 TO 8 !横線 PLOT LINES:50,50*i; 450,50*i NEXT i !局面を初期化する FOR i=1 TO 8 FOR j=1 TO 8 LET CEL(i,j) = 0 !置いてない状態 NEXT j NEXT i LET CEL(4,4) = 1 !白中央 LET CEL(5,5) = 1 LET CEL(4,5) = -1 !黒中央 LET CEL(5,4) = -1 !◇◇◇◇◇◇以上初期設定終了◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇ LET flg = -1 !ゲーム中(黒の手)※-1は黒、1は白 CALL plot_now(CEL,flg,CNT_WHT,CNT_BLK,CNT_HKW,MK_CNT) !今の局面を表示する |
├続きです 会社員 2005/03/05 21:30:15 ツリーへ
Re: 完成版を記載しておきます。。。 |
返事を書く |
会社員 2005/03/05 21:30:15 | |
続きです DO WHILE flg<>0 !※0は終了 LET i = INT(MOD(RND*1000000,8))+1 LET j = INT(MOD(RND*1000000,8))+1 PRINT i;j !debug debug debug LET Wait_CNT= Wait_CNT+1 IF i>0 AND i<9 AND j>0 AND j<9 THEN !マス目の中をクリックしたら 1〜8の間 IF CEL(i,j)=0 THEN !空き位置を指定したら CALL check2(CEL,i,j,flg, ok) !はさんでいるか確認し、縦横斜めを反転させる IF ok>0 THEN !はさんだ位置に置いたら LET CEL(i,j) = flg !そこに石を埋める LET flg = -flg !手を交代する LET Wait_CNT=0 END IF END IF END IF ! IF left=0 AND right=1 THEN !右クリックなら IF Wait_CNT>1000 THEN !待ってもダメなら LET flg = -flg !手を交代する END IF IF Wait_CNT>10000 THEN !待ってもダメなら LET MK_CNT = MK_CNT+1 !無効試合 LET flg =0 END IF !-----局面を表示する IF Wait_CNT<100 THEN CALL plot_now(CEL,flg,CNT_WHT,CNT_BLK,CNT_HKW,MK_CNT) !今の局面を表示する flg=0で終了 END IF ! WAIT DELAY 0.1 LOOP WAIT DELAY 10 GOTO 10 END !石を描画する EXTERNAL SUB plot_stone(i,j,c) CALL ij2xy(i,j, x,y) !マス目からXY座標に変換する SET AREA COLOR colorindex(0,0,0) !黒の輪郭 DRAW disk WITH SCALE(21)*SHIFT(x,y) SET AREA COLOR c !白または黒 DRAW disk WITH SCALE(20)*SHIFT(x,y) END SUB !マス目番号からXY座標を求める ※横,縦 i,j、x,y EXTERNAL SUB ij2xy(i,j, x,y) LET x = i*50+25 LET y = 450-j*50+25 END SUB !今の局面を表示する EXTERNAL SUB plot_now(CEL(,),stn,CNT_WHT,CNT_BLK,CNT_HKW,MK_CNT) LET n1=0 !白・黒の数 LET n2=0 FOR i=1 TO 8 FOR j=1 TO 8 IF CEL(i,J)=1 THEN !白石なら CALL plot_stone(i,j,colorindex(1,1,1)) LET n1=n1+1 END IF IF CEL(i,J)=-1 THEN !黒石なら CALL plot_stone(i,j,colorindex(0,0,0)) LET n2=n2+1 END IF NEXT j NEXT i |
└続きの続き 会社員 2005/03/05 21:32:11 ツリーへ
Re: 完成版を記載しておきます。。。 |
返事を書く |
会社員 2005/03/05 21:32:11 | |
続きの続き SET AREA COLOR colorindex(1,1,1) PLOT AREA:500,0;640,0;640,480;500,480 PLOT TEXT ,AT 500,300:"白:"&STR$(n1) !石の数を表示する PLOT TEXT ,AT 500,275:"黒:"&STR$(n2) !石の数を表示する PLOT TEXT ,AT 500,250:"白勝ち数:"&STR$(CNT_WHT) !白の勝ち数を表示する PLOT TEXT ,AT 500,225:"黒勝ち数:"&STR$(CNT_BLK) !黒の勝ち数を表示する PLOT TEXT ,AT 500,200:"引き分数:"&STR$(CNT_HKW) !黒の勝ち数を表示する PLOT TEXT ,AT 500,175:"無効試合数:"&STR$(MK_CNT) !無効試合数を表示する IF n1+n2<64 THEN !もし 64枚以下なら IF stn=1 THEN !白なら CALL plot_stone(10,2,colorindex(1,1,1)) ELSE CALL plot_stone(10,2,0) END IF PLOT TEXT ,AT 560,370:"の番" !もし 64枚以下でも IF n1=0 THEN PLOT TEXT ,AT 500,370:"おわり!黒勝!" LET stn = 0 LET CNT_BLK=CNT_BLK+1 END IF IF n2=0 THEN PLOT TEXT ,AT 500,370:"おわり!白勝!" LET stn = 0 LET CNT_WHT=CNT_WHT+1 END IF ELSE !もし64を超えたらおわり IF n1<n2 THEN PLOT TEXT ,AT 500,370:"おわり!黒勝!" LET stn = 0 LET CNT_BLK=CNT_BLK+1 END IF IF n1>n2 THEN PLOT TEXT ,AT 500,370:"おわり!白勝!" LET stn = 0 LET CNT_WHT=CNT_WHT+1 END IF IF n1=n2 THEN PLOT TEXT ,AT 500,370:"引き分け!" LET stn = 0 LET CNT_HKW=CNT_HKW+1 END IF END IF END SUB !指定したマスの石を得る EXTERNAL FUNCTION get_cell(CEL(,),i,j) LET get_cell = 0 IF i>0 AND i<9 AND j>0 AND j<9 THEN !マス内だけ LET get_cell = CEL(i,j) END IF END FUNCTION !はさんでいるか確認して、裏返す EXTERNAL SUB check2(CEL(,),i,j,stn,ok) LET ok = -1 FOR dx=-1 TO 1 !横方向 FOR dy=-1 TO 1 !縦方向 IF dx=0 AND dy=0 THEN !8方向なら ELSE LET N = 0 LET s=i+dx !ひとつ隣へ LET t=j+dy LET AA = get_cell(CEL,s,t) DO WHILE NOT(AA=0 OR AA=stn) !マス外か石がないか同じ色の石まで IF AA=-stn THEN LET N=N+1 !間に相手の石がある END IF LET s=s+dx !次のマス目へ LET t=t+dy LET AA = get_cell(CEL,s,t) LOOP IF AA=stn AND N>0 THEN !●○・・○●と●○・・○を区別する LET ok = 1 CALL reverse(CEL,i,j,stn,N,dx,dy) !裏返す END IF END IF NEXT dy NEXT dx END SUB !裏返す(自分の石と同じ色にする) EXTERNAL SUB reverse(CEL(,),i,j,stn,N,dx,dy) LET s=i+dx !ひとつ隣へ LET t=j+dy FOR k=1 TO N LET CEL(s,t) = stn LET s=s+dx !次のマス目へ LET t=t+dy NEXT k END SUB |