Excel実践

トップ > Excel > Excel実践 > 記事
Excelトップへ
Excel実践一覧へ



2021年12月29日【ID:254】

【趣味】コンピュータ対戦可能なオセロゲーム

※IT予備メンバーに加入して連携すると、
一部の広告が非表示になります。


・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()は上記と同様で、相手の駒を置く場所があるのかを判定するのと、勝敗を判定するためのものです。

 
2ページ
前のページへ 次のページへ

 

※ こちらのコンテンツには準備ファイルはありません。


▼完成ファイル▼

ダウンロード
※メンバー限定

 




Excelで警告が表示される場合


【標準モジュール】cal

※メンバーページと連携すると、開発したプログラムの内容が表示されます。


【標準モジュール】computer

※メンバーページと連携すると、開発したプログラムの内容が表示されます。


【シートモジュール】Sheet1(オセロ)

※メンバーページと連携すると、開発したプログラムの内容が表示されます。


【ブックモジュール】ThisWorkbook

※メンバーページと連携すると、開発したプログラムの内容が表示されます。


パソコンで開く場合は、記事の最後に「リンクコピー」があるためご活用ください。

※IT予備メンバーに加入して連携すると、
一部の広告が非表示になります。


メンバー募集 メンバー募集





リンクの共有はこちらから行えます。

  リンクコピー    X Facebook はてなブックマーク Pocket
トップ > Excel > Excel実践 > 記事
Excelトップへ
Excel実践一覧へ


- 人気の記事 -



- メンバー限定 [一覧] -



サイト累計閲覧数

7151043

有料動画講座
(買い切り)

Excel完全制覇


ちょっとした機能 便利ツール
✨困ったとき✨ Excel
保護解除ツール


トップ > Excel > Excel実践 > 記事
Excelトップへ
Excel実践一覧へ