見出し画像

Scratch(スクラッチ)でマルバツゲーム(三目並べ)を作ろう!②

みなさんこんにちは、プログラミング教育系Vtuber、metchです🌻🍓🧡
今回もScratchをつかって「マルバツゲーム(三目並べ)」を作っていきます!
はじめてプログラミングに触れる人でも簡単にプログラムが作れるように解説していきます。
何か分からないことや、困ったことがあったら気軽にコメントなどで質問してください ✨

マルバツゲームとは?

2人で対戦するゲームです。
別名「三目並べ」とも言います。

3×3の盤面を用意し、
先攻の人は好きなマス目に「〇」を書きます。

後攻の人は空いているマス目に
を書きます。

先攻、後攻、交互に空いている好きなマス目に
自分のマークを埋めます。

自分のマークが先に3つ並べることができたら、
「勝ち」です。


先攻、後攻どちらも
3つ並べることができなければ
「引き分け」
となります。

まずは完成ゲームで遊んでみましょう!
下の画像をクリックすると、サイトに飛べます。

めちクイズの答え

前回の記事でマスのスプライトが押されたときの動きを作成しました。

もしターンが「マル」のとき、
コスチュームをマルに変更し、
ターンを「バツ」にします。

もしターンが「バツ」のとき、
コスチュームをバツに変更し、
ターンを「マル」にします。

このプログラムを実行すると、
ターンが「マル」にも関わらず
コスチュームがバツになってしまいます。

なぜこのような現象が起こってしまうのでしょうか?

原因を探るため、
もしのブロックの間に1秒待つのブロックを入れてみましょう。

旗を押して、プログラムを実行した後に
マスを押すと・・・

コスチュームが「マル」、ターンが「バツ」になったあと
コスチュームが「バツ」、ターンが「マル」になっています。

プログラムを実行すると、
一瞬で2つのもしのブロックが動いていたので
ターンが「マル」にも関わらず
コスチュームがバツになってしまっていました。

このようにプログラムは上から下へ
一つ一つの処理を順番に実行する性質があります。
これを順次構造といいます。

ではマスを押したとき、どちらか一つの
処理を実行するためにはどうしたらよいでしょうか?

前回の記事でヒントを出していましたが、
「制御」にあるもう一つのもしのブロックを使用します。

これでマスを押すと、
ターンの条件に応じて実行する処理を変えることができるため
マルとバツが切り替えることができます。

埋まっているマスを押せなくする

マルバツゲームでは、埋まっているマスには
マルバツを入れることはできません。
今のプログラムのままだと、
マルやバツが入っているマスでも
ターンに応じたマークを入れることができてしまいます。

そこで、
もし、コスチュームの名前がマスではないなら警告を送り、
それ以外のときはマークを入れることができるようにしましょう。

マスが埋まっているか判定する

マスが埋まっているか、いないかによって処理を分けたいので
先ほど使ったもし~なら、でなければのブロックを使いたいと思います。

マスが埋まっているかどうか判定するためには
コスチュームの名前を調べましょう。
もしマスが埋まっていたらコスチュームは何になっているでしょうか?
◇に入る条件を考えて自分で埋めてみましょう。

コスチュームが「マス」や「バツ」のときに
マスが押せなくなっていれば成功です。

マスが埋まっているときの処理

マスのスプライトの動き

マスが埋まっているときの処理をつくるため、
「イベント」にあるメッセージ1を送るブロックの▽を選びましょう。

▽を押したら、新しいメッセージを選びます。

新しいメッセージ名に「埋まっている」と入力します。

マスが埋まっているときの処理に
メッセージ「埋まっている」を追加しましょう。

ネコのスプライトの動き

メッセージ「埋まっている」を受け取ったときの動きを作成します。
「埋まっている」を受け取ったとき
「そのマスは押せないよ!」と1秒言い、
「空いているマスを選んでね」と1秒言います。

マスに「マル」か「バツ」が入っているときは
ネコが「そのマスは押せないよ!」といい、
コスチュームを変更することが出来なくなっていますか?

9つのマスを用意しよう

マルバツゲームに必要なマスを用意しましょう。
マスのスプライトを右クリックすると、
スプライトの複製をすることができます。

スプライトを複製し、
全部で9つのマスを用意しましょう。

今のままだとマスの位置がめちゃくちゃになってしまっているので
x座標とy座標を調整します。

2:xを70、yを100
3:xを170、yを100
4:xを-30、yを0
5:xを70、yを0
6:xを170、yを0
7:xを-30、yを-100
8:xを70、yを-100
9:xを-170、yを-100
にしましょう。

実行すると、きれいにマスが整いましたか?

今回はここまでです。
次の記事では勝ち負けや引き分けを判定できるようにします。


いいなと思ったら応援しよう!

この記事が参加している募集