※IT予備メンバーに加入して連携すると、
一部の広告が非表示になります。
2021年12月29日【ID:254】
【趣味】コンピュータ対戦可能なオセロゲーム
・ThisWorkbook
こちらには下記のような内容を記述します。

シートの操作をする上でシートの保護がかかっているとエラーになります。
そのため、保護を維持しつつ、VBAからの操作のみを許可します。
ThisWorkbook内に記載している理由は、Excelファイルが開かれると同時に、VBAの操作を許可するためです。
※Workbook_Open()とはExcelファイルが開かれると同時に実行される特殊なプロシージャになります。
・ Sheet1(オセロ)
こちらには下記のような内容を記述します。

Worksheet_BeforeDoubleClick内では、オセロの盤が押された際の動作を記載しています。
※ Worksheet_BeforeDoubleClick ()とはシート内のセルがダブルクリックされたと同時に実行される特殊なプロシージャ になります。
一番最初のIF文では、ゲーム画面内(1行目1列目から10行目10列目)がダブルクリックされた場合、セルの編集にならないように、Cancel = True と設定しています。
※シートを保護しているので、不要だったかもしれません。
次のIF文では、盤面(2行目2列目から9行目9列目)が触られた時の動作を記述しています。
また、条件内にTarget.Value = "" と記述している理由は、ダブルクリックされたセルに駒が入っている場合は、無効にするためです。
その次のIF文では、「●」の番なのか「○」の番なのかによって動作を変えています。
この中にあるcheck()はcalモジュール内に定義してあり、その場所に駒を打つことが可能かどうかをTrueまたはFalseで返します。
→ついでに駒が打てる場合は、打ってくれるそんなプロシージャです。
all_check()も同様にcalモジュール内に定義してあり、相手の駒を置く場所があるのかを判定してくれます。また、相手自分ともに置く場所がなかった場合に試合終了となります。
一番下の「コンピュータ戦」と書かれたところでは、モードが「1 vs COMモード」だった場合の内容です。
コンピュータ戦だった場合は、自動で番を進めます。
Application.Wait Now + TimeValue("0:00:01")と記述してあるのは、コンピュータがあまりにも早かったら不自然のため、1秒間停止しています。
→これでも十分に早いので2秒でもいいかもです。
vs_computer()は computer モジュール何に定義してあり、ランダムで駒を打つに設定されています。
all_check()は上記と同様で、相手の駒を置く場所があるのかを判定するのと、勝敗を判定するためのものです。
※ こちらのコンテンツには準備ファイルはありません。
【標準モジュール】cal
※メンバーページと連携すると、開発したプログラムの内容が表示されます。
【標準モジュール】computer
※メンバーページと連携すると、開発したプログラムの内容が表示されます。
【シートモジュール】Sheet1(オセロ)
※メンバーページと連携すると、開発したプログラムの内容が表示されます。
【ブックモジュール】ThisWorkbook
※メンバーページと連携すると、開発したプログラムの内容が表示されます。
※IT予備メンバーに加入して連携すると、
一部の広告が非表示になります。


















































