3Fighter_Game

プログラムの仕組み
 @ 主な変数
 st(1、2、1)  最初の1・・0:先手 1:後手
            次の2・・・0:1番前の勇者
                  1:次の勇者
                  2:1番新しい勇者
            最後の1・・0:x座標 1:y座標
 ban(2、2)   座標(x、y)の状態
            0:勇者なし 1:先手 2:後手
 wt(2、1)    st(1、2、1)の最初の1なし
              勝った勇者の喜び表現用
 kazu       縦や横の数(3に限定)
 f          handan・・0:勝ちなし
             1:先手の勝ち 2:後手の勝ち
            comp・・・・0:まだ置いてない
             1or2:相手の勝ちを止める場所へ
             orコンピュータが勝てる場所へ置いた
             9:第1手、第2手で置いた
 ten        1:喜びの表現中 0:終了
 te         0:先手 1:後手
 mg(14)     説明の文章
 kati       1:勝負が決まった 0:勝負が決まっていない
 one        0:最初のゲーム 1:2回目以降のゲーム
 xx,yy      勇者を置くx座標、y座標
 wx、wy      線を引くときのx座標、y座標

 A サブルーチンの説明
 comp    相手がクリックできないようにして、コンピュ ータの手を決める。最後にクリックできるようにする。
 comp_aite    コンピュータが手を決めるときに、相手の勝ちを止める場所があるか探す。
 comp_jibun    コンピュータの手を決めるときに、自分が勝てる場所があるか探す。
 hajime  初期設定(配列クリア)
 handan  縦横斜めに勇者が3人並んだかどうかを判断する。
 handan2 勝ち、次の番など表示する。
 sleep   時間待ち t秒待つ
 tenm    勝った勇者の喜びの表現
 zurasu  新しい勇者が置かれたので、1番前の勇者を消し、配列をずらす。
 com*_Click  コンピュータ同士の対戦にならないようにする。
 Form_Load    ゲーム全体の設定、説明文設定
 gamen_MouseMove 右クリックして動かすことで、画面に線を引く
 hint_Click    ヒント表示
 kaisi_Click    ゲーム開始時の設定、コンピュータが先手なら勇者を置く。
 owari_Click   終了
 Pic_Click    勇者を置く。コンピュータ対戦なら、コンピュー タも勇者を置く。
 setumei_Click  説明表示

 C プログラムの具体的な入力方法
<これは,自分でプログラムを入力するためのものです。>
 Visial Basicを立ち上げてください。
・フォームの設定
 図を参考に置いていってください。大きさや位置は後から修正できます。
 @ フォームの大きさを横長(6948×5712)にします。BackColorを,濃い茶色にします。
 A PictureBoxで大きい正方形(5000×5000)を置きます。Nameを”gamen”にします。
 B gamen上に,PictureBoxで勇者を表示する場所を1つ置きます。大きさや場所はどうでもいいです。Nameは”Pic”とし,Indexを0にします(コントロール配列です)。
 C Labelを,タイトル表示する場所に置きます。2段にするため,2つ置きます。上段のCaptionは”3Fighter”に,下段のCaptionは” Game”にし,Fontのサイズを20にしました。BackColo rを黄色に,ForeColorを青色にします。
 D Frameを先手用と後手用に2つ置きます。Captionを”先手”と”後手”とし,Fontのサイズを14とする。BackColorをそれぞれマゼンダとシアンにします。
 E それぞれのFrame内に,3つずつOptionButtonを置きます。上から順にCaptionを”Player1(2)””Com_s””Com_H”とし,Nameを”pl1(2)”com1(2)””com11(22)”とします(カッコ内は後手)。Fontのサイズは11とします。
 F CommandButtonを図のように4つ置きます。上のCaptionが”開始”Fontのサイズが14,Nameが”kaisi”,左が”説明”,12,”setumei”,右が”ヒント”,11,”hint”,下が”終了”,14,”owari”とします。
・コードの入力
 (General)の(declarations)に,最初のDim st(・・・からPrivate Sub zurasu()の最後End Subまで入力します。Private Sub ・・・とうってリターンキーを押せば,画面がクリアされますが・・。 続いて,com1のClickに,com1_Click()の内容を打ちます。最後まで いったら,保存をします。
・ビットマップファイルを用意
 私は,市販されている,株式会社インプレス「INTERNETフォームページ用素材集CD−ROMforWindows」(定価3800円)から3つ使わせて頂きました。強い勇者用としてcut1.bmp,その左右入れ替えたのをcut2.bmp,普通の勇者用としてcut3.bmpと同cut4.bmp,プレイヤー1用として,cut5.bmp,同cut6.bmp,プレイヤー2用として,プレイヤー1の色違いをcut7.bmp,同cut8.bmpとしました。
 どこからか探してきたり,自分で描いたりして,80ドット×80ドットの大きさにして,上記のファイル名で,ファイルやプロジェクトと同じフォルダに入れてください。

 D 改造のアドバイス法
 BackColorやForeColorや大きさなど,自由に変えることができます。また,コンピュータの強さは,compというサブルーチンの真ん中やや下の0.9と0.5を変えれば変えられます。普通の勇者の場合は0.5を大きくすれば強くなります。最強の勇者の場合は,0.9を大きくすれば強くなります。1にすると最高に強くなります。
 何勝何敗などを表示するようにしたり,音が出るようにするといいでしょう。研究してみてください。

 E 苦労した点/FONT>
 Visual Basicは,いろいろな作業が並行して行われます。例えば, 喜びの表現をしている途中で,開始ボタンが押されて,喜びの表現を止めて,初期設定をしても,喜びの表現の終了前に初期設定が実行され,エラーになったり予期しない処理が行われたりします。これを解決するために,別の配列を作ったり,初期設定の一部を違う場所に移したりしました。これを解決するためにかなりの時間がかかりました。
 さらに,CRT?によって表示される大きさが違うので,同じ80*80ドットの絵でも,はみ出たりすることがありました。それを解消するために,Form_Load()にTwipsPerPixelXなどの命令を追加しました。


[ 戻る ]