野球シュミレーション TDC 2006/10/25 23:41:11 ├<続き> TDC 2006/10/25 23:42:11 └バンド戦略を追加 TDC 2006/11/11 13:50:34 ├<続き> TDC 2006/11/11 13:51:58 └<続きの続き> TDC 2006/11/11 13:52:59 └ランナー初期化がまちがっています。 山中和義 2006/12/06 14:23:55
野球シュミレーション TDC 2006/10/25 23:41:11 ツリーへ
野球シュミレーション |
返事を書く |
TDC 2006/10/25 23:41:11 | |
まだたくさん修正箇所がありますが、作りましたので
発表します。 ! 野球の試合シュミレーション ! ○打率 当る当らない ! ○累打 1塁打 2塁打 3塁打 本塁打 ! ×足の速さ(盗塁、進塁率、長打率) ! ×戦略(バンド) ! ×ピッチャー防御率係数 ! ×サヨナラの処理 ! 2006年のチーム打率 中日 0.270 日本ハム 0.269 !---------初期設定0------------------ RANDOMIZE OPTION BASE 0 DIM RUNER(7) !ランナーを1塁〜7塁(仮想)までならべる LET WT=0.05 ! 待ち時間 !---------初期設定1------------------ LET SENCO$="日本ハム" !先攻チーム名 LET COCO$="中日" !後攻チーム名 !---------メインルーチン--------------- PRINT "■■■■■■■■■■■■■■■■■■■■" PRINT "■■■■■プレイボール !!■■■■■■" PRINT "■■■■■■■■■■■■■■■■■■■■" PRINT "" FOR LLL=1 TO 12 ! 延長12回まで LET OMO_URA=0 LET Bat_AVG=0.269 !日本ハムファイターズ CALL INING IF LLL=>9 AND TEN_A<TEN_B THEN EXIT FOR ! 9回を超えて、後攻チームが勝っている場合は、EXITする LET OMO_URA=1 LET Bat_AVG=0.270 !中日ドラゴンズ CALL INING IF LLL=>9 AND TEN_A<>TEN_B THEN EXIT FOR ! 9回を超えて、勝敗のある場合は、EXITする NEXT LLL CALL Ending ! エンディング処理 !-----------------------以下、サブルーチン------------------------- SUB Ending PRINT "---------試合終了----------" PRINT "先攻=";TEN_A;"点 ";"後攻=";TEN_B;"点 "; IF TEN_A>TEN_B THEN PRINT "先攻";SENCO$;"の勝ち" ELSEIF TEN_A<TEN_B THEN PRINT "後攻";COCO$;"の勝ち" ELSEIF TEN_A=TEN_B THEN PRINT "引分け" END IF END SUB SUB PRT_STATUS !状態の表示 PRINT "" IF OUT=0 THEN PRINT "ノーアウト 1塁/2塁/3塁=";RUNER(1);"/";RUNER(2);"/";RUNER(3);" ";TEN_A;"点";TEN_B;"点" IF OUT>0 THEN PRINT OUT;"アウト 1塁/2塁/3塁=";RUNER(1);"/";RUNER(2);"/";RUNER(3);" ";TEN_A;"点";TEN_B;"点" IF RUNER(1)+RUNER(2)+RUNER(3)=3 THEN PRINT "満塁!!" PRINT "" WAIT DELAY WT END SUB SUB RUIDA ! 塁打ルーチン LET RUI_RN=MOD(RND*100000,100) IF RUI_RN<55 THEN LET RUI_DA=1 PRINT "ヒット! ☆" ELSEIF RUI_RN=>55 AND RUI_RN<85 THEN LET RUI_DA=2 PRINT "2塁打! ☆☆" ELSEIF RUI_RN=>85 AND RUI_RN<88 THEN LET RUI_DA=3 PRINT "3塁打! ☆☆☆" ELSEIF RUI_RN=>88 THEN LET RUI_DA=4 PRINT "ホームラン!☆☆☆☆" END IF END SUB |
├<続き> TDC 2006/10/25 23:42:11 ツリーへ
Re: 野球シュミレーション |
返事を書く |
TDC 2006/10/25 23:42:11 | |
<続き>
SUB HIT_STATUS ! ヒットルーチン PRINT " 打ちました "; CALL RUIDA LET RUNER(0)=1 FOR K=3 TO 0 STEP -1 LET RUNER(K+RUI_DA)=RUNER(K) LET RUNER(K)=0 NEXT K IF RUNER(4)+RUNER(5)+RUNER(6)+RUNER(7)>0 THEN PRINT RUNER(4)+RUNER(5)+RUNER(6)+RUNER(7);"点追加" IF OMO_URA=0 THEN LET TEN_A=TEN_A+RUNER(4)+RUNER(5)+RUNER(6)+RUNER(7) ELSEIF OMO_URA=1 THEN LET TEN_B=TEN_B+RUNER(4)+RUNER(5)+RUNER(6)+RUNER(7) END IF LET RUNER(4)=0 LET RUNER(5)=0 LET RUNER(6)=0 LET RUNER(7)=0 END SUB SUB OUT_KIND ! アウトルーチン PRINT "残念!"; LET KIND_OUT=MOD(INT(RND*1000),7) IF KIND_OUT=0 THEN PRINT "ピッチャーゴロ "; IF KIND_OUT=1 THEN PRINT "ファーストゴロ "; IF KIND_OUT=2 THEN PRINT "ショートゴロ "; IF KIND_OUT=3 THEN PRINT "センターフライ "; IF KIND_OUT=4 THEN PRINT "レフトフライ "; IF KIND_OUT=5 THEN PRINT "ライトライナー "; IF KIND_OUT=6 THEN PRINT "三振 "; PRINT "アウト!" END SUB SUB INING !■■■■■■ イニングルーチン■■■■■■ IF OMO_URA=0 THEN PRINT "■■■■■■■■■■■■■■■■■■■■" PRINT "■■■■■■■■ ";LLL;"回表■■■■■■■■" PRINT "■■■■■■■■■■■■■■■■■■■■" PRINT SENCO$;"の攻撃" ELSEIF OMO_URA=1 THEN PRINT "■■■■■■■■■■■■■■■■■■■■" PRINT "■■■■■■■■ ";LLL;"回裏■■■■■■■■" PRINT "■■■■■■■■■■■■■■■■■■■■" PRINT COCO$;"の攻撃" END IF LET OUT=0 DO !バッターが打席に入る ! 打つか打たないか WAIT DELAY WT CALL PRT_STATUS PRINT "---バッター打席に入りました---" WAIT DELAY WT IF RND<Bat_AVG THEN LET HIT=1 ELSE LET HIT=0 END IF IF HIT=1 THEN ! 打った場合は、ヒットルーチンで処理 CALL HIT_STATUS END IF IF HIT=0 THEN ! 打てなかった場合は、アウトルーチンで処理 LET OUT=OUT+1 CALL OUT_KIND END IF LOOP UNTIL OUT=3 PRINT " 3アウトチェンジ!!" IF RUNER(1)+RUNER(2)+RUNER(3)>0 THEN PRINT RUNER(1)+RUNER(2)+RUNER(3);"人残塁" PRINT "" CALL ini_Ining END SUB SUB ini_Ining !ランナー初期化 LET RUNER(0)=0 LET RUNER(1)=0 LET RUNER(2)=0 LET RUNER(3)=0 END SUB END |
└バンド戦略を追加 TDC 2006/11/11 13:50:34 ツリーへ
Re: 野球シュミレーション |
返事を書く |
TDC 2006/11/11 13:50:34 | |
バンド戦略を追加
! 野球の試合結果 ! ○打率 当る当らない ! ○累打 1塁打 2塁打 3塁打 本塁打 ! ×足の速さ(盗塁、進塁率、長打率) ! △戦略(バンド) ノーアウト ランナー 1塁のとき ! ×ピッチャー防御率係数 ! ×サヨナラの処理 ! 2006年のチーム打率 中日 0.270 日本ハム 0.269 !---------初期設定0------------------ RANDOMIZE OPTION BASE 0 DIM RUNER(7) !ランナーを1塁〜7塁(仮想)までならべる LET WT=0.0001 ! 待ち時間 !---------初期設定1------------------ LET SENCO$="日本ハム" !先攻チーム名 LET COCO$="中日" !後攻チーム名 FOR JJJ=1 TO 1000 !---------メインルーチン--------------- PRINT "■■■■■■■■■■■■■■■■■■■■" PRINT "■■■■■プレイボール !!■■■■■■" PRINT "■■■■■■■■■■■■■■■■■■■■" PRINT "" CALL Main CALL Ending ! エンディング処理 PRINT "" PRINT "■■■■■■■■■■■■■■■■■■■■■■■■■■■" PRINT "全試合数=";JJJ;"試合" PRINT "先攻勝数(バント有)=";WIN_A PRINT "後攻勝数(バント無)=";WIN_B PRINT "引分け数=";WIN_AB PRINT "" LET TEN_SUB=TEN_SUB+TEN_A+TEN_B PRINT "総得点数=";TEN_SUB;"点" PRINT "平均得点数=";ROUND(TEN_SUB/JJJ/2,2);"点" PRINT "■■■■■■■■■■■■■■■■■■■■■■■■■■■" WAIT DELAY 5 LET TEN_A=0 LET TEN_B=0 NEXT JJJ !-----------------------以下、サブルーチン------------------------- SUB main FOR LLL=1 TO 12 ! 延長12回まで LET OMO_URA=0 LET Bat_AVG=0.269 !日本ハムファイターズ CALL INING IF LLL=>9 AND TEN_A<TEN_B THEN EXIT FOR ! 9回を超えて、後攻チームが勝っている場合は、EXITする LET OMO_URA=1 LET Bat_AVG=0.270 !中日ドラゴンズ CALL INING IF LLL=>9 AND TEN_A<>TEN_B THEN EXIT FOR ! 9回を超えて、勝敗のある場合は、EXITする NEXT LLL END SUB SUB Ending PRINT "---------試合終了----------" PRINT "先攻=";TEN_A;"点 ";"後攻=";TEN_B;"点 "; IF TEN_A>TEN_B THEN PRINT "先攻";SENCO$;"の勝ち" LET WIN_A=WIN_A+1 ELSEIF TEN_A<TEN_B THEN PRINT "後攻";COCO$;"の勝ち" LET WIN_B=WIN_B+1 ELSEIF TEN_A=TEN_B THEN PRINT "引分け" LET WIN_AB=WIN_AB+1 END IF END SUB |
├<続き> TDC 2006/11/11 13:51:58 ツリーへ
Re: バンド戦略を追加 |
返事を書く |
TDC 2006/11/11 13:51:58 | |
<続き>
SUB PRT_STATUS !状態の表示 PRINT "" IF OUT=0 THEN PRINT "ノーアウト 1塁/2塁/3塁=";RUNER(1);"/";RUNER(2);"/";RUNER(3);" ";TEN_A;"点";TEN_B;"点" IF OUT>0 THEN PRINT OUT;"アウト 1塁/2塁/3塁=";RUNER(1);"/";RUNER(2);"/";RUNER(3);" ";TEN_A;"点";TEN_B;"点" IF RUNER(1)+RUNER(2)+RUNER(3)=3 THEN PRINT "満塁!!" PRINT "" WAIT DELAY WT END SUB SUB RUIDA ! 塁打ルーチン LET RUI_RN=MOD(RND*100000,100) IF RUI_RN<55 THEN LET RUI_DA=1 PRINT "ヒット! ☆" ELSEIF RUI_RN=>55 AND RUI_RN<85 THEN LET RUI_DA=2 PRINT "2塁打! ☆☆" ELSEIF RUI_RN=>85 AND RUI_RN<88 THEN LET RUI_DA=3 PRINT "3塁打! ☆☆☆" ELSEIF RUI_RN=>88 THEN LET RUI_DA=4 PRINT "ホームラン!☆☆☆☆" END IF END SUB SUB HIT_STATUS ! ヒットルーチン PRINT " 打ちました "; CALL RUIDA LET RUNER(0)=1 FOR K=3 TO 0 STEP -1 LET RUNER(K+RUI_DA)=RUNER(K) LET RUNER(K)=0 NEXT K IF RUNER(4)+RUNER(5)+RUNER(6)+RUNER(7)>0 THEN PRINT RUNER(4)+RUNER(5)+RUNER(6)+RUNER(7);"点追加" IF OMO_URA=0 THEN LET TEN_A=TEN_A+RUNER(4)+RUNER(5)+RUNER(6)+RUNER(7) ELSEIF OMO_URA=1 THEN LET TEN_B=TEN_B+RUNER(4)+RUNER(5)+RUNER(6)+RUNER(7) END IF LET RUNER(4)=0 LET RUNER(5)=0 LET RUNER(6)=0 LET RUNER(7)=0 END SUB SUB OUT_KIND ! アウトルーチン PRINT "残念!"; LET KIND_OUT=MOD(INT(RND*1000),7) IF KIND_OUT=0 THEN PRINT "ピッチャーゴロ "; IF KIND_OUT=1 THEN PRINT "ファーストゴロ "; IF KIND_OUT=2 THEN PRINT "ショートゴロ "; IF KIND_OUT=3 THEN PRINT "センターフライ "; IF KIND_OUT=4 THEN PRINT "レフトフライ "; IF KIND_OUT=5 THEN PRINT "ライトライナー "; IF KIND_OUT=6 THEN PRINT "三振 "; PRINT "アウト!" END SUB |
└<続きの続き> TDC 2006/11/11 13:52:59 ツリーへ
Re: バンド戦略を追加 |
返事を書く |
TDC 2006/11/11 13:52:59 | |
<続きの続き>
SUB INING !■■■■■■ イニングルーチン■■■■■■ IF OMO_URA=0 THEN PRINT "■■■■■■■■■■■■■■■■■■■■" PRINT "■■■■■■■■ ";LLL;"回表■■■■■■■■" PRINT "■■■■■■■■■■■■■■■■■■■■" PRINT SENCO$;"の攻撃" ELSEIF OMO_URA=1 THEN PRINT "■■■■■■■■■■■■■■■■■■■■" PRINT "■■■■■■■■ ";LLL;"回裏■■■■■■■■" PRINT "■■■■■■■■■■■■■■■■■■■■" PRINT COCO$;"の攻撃" END IF LET OUT=0 DO !バッターが打席に入る ! 打つか打たないか WAIT DELAY WT CALL PRT_STATUS PRINT "---バッター打席に入りました---" WAIT DELAY WT IF RUNER(1)=1 AND RUNER(2)+RUNER(3)=0 AND OUT=0 AND OMO_URA=0 THEN CALL YES_BANT ! バンド戦略ありの場合 ELSE CALL NO_BANT ! バンド戦略なき場合 END IF LOOP UNTIL OUT=3 PRINT " 3アウトチェンジ!!" IF RUNER(1)+RUNER(2)+RUNER(3)>0 THEN PRINT RUNER(1)+RUNER(2)+RUNER(3);"人残塁" PRINT "" CALL ini_Ining END SUB SUB ini_Ining !ランナー初期化 FOR I=0 TO 7 LET RUNER(0)=0 NEXT I END SUB SUB NO_BANT ! バンド戦略なき場合 IF RND<Bat_AVG THEN LET HIT=1 ELSE LET HIT=0 END IF IF HIT=1 THEN ! 打った場合は、ヒットルーチンで処理 CALL HIT_STATUS END IF IF HIT=0 THEN ! 打てなかった場合は、アウトルーチンで処理 LET OUT=OUT+1 CALL OUT_KIND END IF END SUB SUB YES_BANT ! バンド戦略ある場合 PRINT "BBBBBBBBBBBBBBBBBB バントした BBBBBBBBBBBBBBBBBBBBBB" LET RUNER(1)=0 LET RUNER(2)=1 LET OUT=OUT+1 END SUB END |
└ランナー初期化がまちがっています。 山中和義 2006/12/06 14:23:55 ツリーへ
Re: <続きの続き> |
返事を書く |
山中和義 2006/12/06 14:23:55 | |
ランナー初期化がまちがっています。
SUB ini_Ining !ランナー初期化 FOR I=0 TO 7 LET RUNER(I)=0 NEXT I END SUB |