【スクラッチ】ゲーム:ハノイの塔を作る
スクラッチでハノイの塔のゲームを作る
スクラッチでハノイの塔を作ったので作成方法の概要をまとめます。
具体的なコードは公開されているプロジェクトを参照してください。
スクラッチ:ハノイの塔
スクラッチで用意されている機能を使えば意外と簡単にできました。
表示する画像の準備
積み上げるブロックを作るスプライトに最初からある「ねこ」は削除します。新しいスプライトを「描く」で追加します。
好きな名前を付けて、座標をX=0、Y=0 にします。
※今回は名前を「ブロック」にしました
コスチュームを開いて ⑧ のブロックを 四角 と テキスト で作成します。
好きな色でつくりましょう。
画面の真ん中(+)と四角の真ん中(+)が重なるように配置します。
四角の幅は画面の三分の一より小さくします。
出来上がったら ⑧のブロックを複製します。
複製したコスチュームの ⑧ を ⑦ にして 四角の色 も変えます。
四角の幅 も少し小さくします。
幅を変えるときは 端の● を Altキーを押しながら動かすと中心に向かってサイズをかえることがでるので作業が楽になります。
出来上がったら ⑦を複製して⑥を作ります。
① ~ ⑧ までのブロックができるまで繰り返します。
全部できたら、コスチュームの番号とブロックの番号が同じになるように変えます。
番号を同じにするのが大事です。
背景を作るスクラッチで用意されている背景画像から好きな背景を選んでください。※今回は「Blue Sky」を選びました真ん中にブロックが刺さる棒を描きます。
画面の真ん中(+)と四角の真ん中(+)を合わせてX座標を真ん中にします。
左と右の棒はそれぞれ X座標が 左-120、右120 の位置になるのですがコスチューム内の画像の位置はわかりずらいので、「ブロック」スプライトのX座標を棒を描きたい位置のX座標に変更してから、それに合わせて棒を描くとぴったり合います。
棒が3本とも描けたら次に進みます。
レベル選択のボタンを作成する「Button3」のスプライトを追加します。コスチュームの2番目は削除して、1番目を初級のボタンにします。色などは好きな物にしましょう。出来上がったら、初級を複製して中級を作ります。
同様に 初級、中級、上級、神級 を作ります。
コスチュームの順番は 初級=1 ~ 神級=4 に並べ替えます。
スプライトの名前を「初級」、X座標=-180、Y座標=-123 にします。
コスチュームは番号1(初級)に合わせておきましょう。
まずはここまでにして次に進みます。
ブロックを移動させるボタンを作成するブロックを押すボタンの範囲は、各棒の回りに広めにとります。隣に重ならないぐらいの幅にするよう気を付けましょう。さっそく作っていきます。新しいスプライトを「描く」で作成し名前を「中範囲」にします。コスチュームで中心にボタン範囲の四角を描きます。
コスチュームの名前は「押せる」 にします。
「押せる」を複製して「押せない」を作ります。
色は変えても変えなくてもよいです。
ここまでで次に進みます。「やり直す」ボタンを作る「Button3」スプライトを追加します。コスチュームの2番目を削除して、1番目を「やり直す」ボタンにします。好きな色に変えて、テキストで「やり直す」を描きましょう。スプライトを X座標=208、Y座標=-163、大きさ=60 にします。
次に進みます。タイトルとゲームクリアを作る新しいスプライトを「描く」で作成します。スプライトの名前を「タイトル」、X座標=0、Y座標=0にします。テキストを使ってタイトル文字 「ハノイの塔」を描きます。2番目のコスチュームを「描く」で作成して、テキストで「ゲームクリア」を描きます。これで表示する画像の準備は完了です。
コードを書く
プログラミングの詳細はプロジェクトの中身を実際に見たほうがわかりやすいと思います。
概要だけ説明します。
変数とリスト■追加した変数:※全部「すべてのスプライト用」で作っていますゲームクリア: ゲームをクリアしたかどうか(達成、未達)レベル:選択したレベルの番号(0~8)作るブロック:ブロックをクローンするときの番号(1~8)動かした数:ブロックを移動させた手数(0~)抜いたブロック:持ち上げているブロックの番号(0~8)抜いた棒:持ち上げたブロックが刺さっていた棒の番号(0~3)■追加したリスト:ブロックの数:レベル番号別のブロックの数棒右:右側の棒に刺さっているブロックの番号棒左:左側の棒に刺さっているブロックの番号棒中:真ん中の棒に刺さっているブロックの番号作った変数やリストは、出来上がる最後まで表示チェックをONにしておくと動きがわかりやすいです。「動かした数」変数だけは最後まで表示ONにしておいてください。「タイトル」のプログラムを書く■ はたが押されたとき「リセットをする」メッセージを送って待つだけです。■ (リセットする)を受け取ったときタイトルとレベル選択を行うシーンを表示するために、各変数、各リストの値を初期化します。「レベル」はプレイヤーが初級~神級を選択したときに値が決定されるので初期値は0です。ブロックの数リストは次のような内容になります。初級(1番目)=ブロック3個中級(2番目)=ブロック4個上級(3番目)=ブロック6個神級(4番目)=ブロック8個その他のリスト(棒左、棒中、棒右)の中身は空にします。プレイヤーがレベルを選択してから中身を設定するためです。※ リストの表示チェックをONにすると動きがわかりやすいです最初はタイトル文字を表示するので、コスチュームをタイトルにしておきます。■ (ゲーム開始)を受け取ったときプレイヤーがレベルを選択した後に棒左のリストの中身を初期化します。棒左、棒中、棒右の各リストには最後に0を追加しておきます。これは、ブロックが何も刺さっていないことを識別するためです。設定が終わったらゲーム中なのでタイトル文字を消すため「隠す」で表示を消しています。■ (ゲーム達成)を受け取ったとき「ゲームクリア」を表示するためコスチュームを変更して「表示する」で画面にだします。レベル選択ボタンのコードを書いて複製するレベル選択ボタンの「初級」にコードを作っていきます。■ はたが押されたとき実行されてからずっと、自分のボタンが押されるのを監視します。自分のボタンが押されたかどうかの判定条件は次のとおりです。- 「レベル」変数が0であること
- マウスのポインターが自身の画像に触れている事
- マウスが押された状態であること
- ゲームクリアしていないこと
「水色のパンダ団」が作ったスクラッチ作品の記事まとめ
スクラッチ作品の作り方や解説をした記事を整理しました。小学生などの初心者やゲームを作りたい中級、上級者などプログラミングのスキル別に作品をまとめています。