「プログラミングに興味があるけど…」
「VBAを使って作業を効率化できたらなぁ」
「プログラミング勉強したけどわからん(´・ω・)」
等々、プログラミングって結構敷居が高い!
気持ちはわかります。私は、最初にJavaを触りましたが、わからなくて何も面白くなかったです。。
でも!普段使っているExcelならわかりやすいはず!
というわけで、Excelでオセロを作ってプログラミングを楽しく学んでいきましょう。
Excelでオセロを作ろう⑥
オセロを作って楽しくプログラミングを学ぼう!
第6回では第5回で実装したクリックすると石を置くことに加え、石の色を交互に置くようにしていきます。
石を交互に置く方法を考える
実装の前にまず石の色を交互に置いていく方法を考えていきます。
石の配置順序を見ると下記のようになることがわかります。
1手目:白
2手目:黒
3手目:白
4手目:黒
5手目:白
…
こうして一覧でみると法則がわかります。
それは…奇数の手では「白」、偶数の手では「黒」が置けています。
ということは…次打つ石が何手目かを数えておいてその値が偶数か奇数かによって置く石の色を変えていけば実装できることがわかります。
マクロの内容追記
奇数の手では「白」、偶数の手では「黒」となるようにマクロを記述していきます。
内容としては、どちらか判定してその結果で処理を変更するという「条件分岐文」を使用する必要があります。
手数のカウント
まずは、今が何手目なのかわかるようにしていきます。
「標準モジュール」→「othello」を開きます。
開いた「othello」へすべてのマクロで共通して使用する変数「stone_count」を準備します。
すべてのマクロで使えるようにするには、下記のように書きます。
Public 変数名 AS データ型
また、ゲームスタート時に「stone_count」を1に戻すようなコードを追記します。
stone_count = 1
上記二つを「othello」に追記すると下記のような感じになります。
これでゲームスタートするたびに手数が1に戻ることになります。
次に、石を置いた後に手数を増やすようにしていきます。
石を置くときに動くのは、第5回で作成した「BeforeDoubleClick」なので、「sheet1」を開きます。
ここに先ほど作成した「stone_count」が動くたびに「+1」されるように書きます。
書き方は下記のようになります。
stone_count = stone_count + 1
自分自身に「+1」して自分自身を更新していきます。
ついでに、本当に増えているかわからないのでメッセージボックスで「stone_count」を表示しておきます(確認後削除してください)。
追記すると下記のようになります。
ここまで書いたところで、「はじめから」ボタンを押して初期化した後に、どこかセルをダブルクリックして石を置いてみましょう。
次の手の数が表示されていくのがわかります。
石を交互に配置する
手数の取得はできたので、いよいよ石の色を交互に配置していきます。
それを実現するために必要になるのが条件分岐です。
条件分岐とはある条件によって処理を変えたいときに使用します。
条件分岐の書き方ですが以下のようになります。
If 条件式 Then 条件式が真の時の処理 Else 条件式が偽の時の処理 End If
今回、石の色の判別は手数が奇数か偶数かで判別可能です。
よって、手数を2で割って、余りが1ならば奇数、それ以外であれば偶数と判別できます。
上記の条件分岐の構文の条件式に「手数 mod 2 = 1」を書き、奇数かを判定します。
※「mod」はVBAで割り算の余りを求めるものです。
そして、条件式が真の部分に奇数の時の処理を書いていきます。
実際にプログラムを書くと以下のようになります。
Dim stone As String '置く石の色を選択 If stone_count Mod 2 = 1 Then '奇数の場合 stone = "○" Else '偶数の場合 stone = "●" End If '石を置く Cells(Target.Row, Target.Column).Value = stone
書き出す石を管理する変数として「stone」を追加しています。
その「stone」に「stone_count(手数)」が奇数かどうかの条件分岐を使用しで入れる石を「○」か「●」か決めていきます。
セルへの書き込み内容は第4回で記載した固定値の「○」から変数「stone」に変更しています。
保存して、再び「はじめから」ボタンを押して、セルをダブルクリックしてみましょう。
これで「○」と「●」を交互に書き込むようにできました。
次回の予定
次回は、条件分岐を使用して石を盤外に置けないようにしていきます。
記事一覧
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!①
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!②
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!③
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!④
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑤
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑥
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑦
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑧
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑨
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑩
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑪
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑫
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑬
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑭
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑮