こんにちは
今日はScratchで箱庭ゲームを作ってみましょう。
箱庭ゲームとはSimCityのような世界を見守るゲームのこと。
どんな世界にするのかはあなた次第です。

今回はこちらのゲームを参考にします。
Pixel Town Remaster
WS0011

見た目はこちらのようにナナメでもいいですし

Pixel Village
WS0014
 
こんな感じで横向きでもいいですね。
デザインはお好みで考えてみて下さい。

それでは Pixel Town Remasterのほうを「中を見る」で
スクリプトなどを確認していきましょう。 

スプライトを用意しよう

まずは、たてものを建てるためのスプライトを用意しましょう。
クローンを使ってもいいし、必要な分だけあらかじめコピーしておいてもOK!

今回のゲームはコピー方式で作っていますね。
WS0016
中身はすべて同じですので
ひとつ作ったらスプライトを「右クリック→複製」でふやしていきましょう。

スプライトのコスチュームはこのようになっています。
WS0015
 empty(カラの土地)・shop(お店)・food(食べ物屋さん)・・・
のようにコスチュームでいろいろな建物を用意しています。

土地のスプライトのほかに、
お店で買えるたてもの一覧用のスプライトも用意しましょう。
WS0017
 こちらはコスチュームではなく
スプライトでひとつひとつ用意しています。

あとは、街の人、お金アイコンや人数アイコンなどがありますね。
あなたが作るゲームに必要なパーツを準備しましょう。

メッセージでシーン切り替え

色々なメッセージがでていて、スクリプトをまたぐことが多いのですが
おおむねこのような流れでスクリプトが進んでいきます。
フロー
 
ではまず、土地がクリックされた部分から見ていきましょう。
spot1のスクリプトがクリックされたとき
WS0019
「building_on」はどの土地に建てるかを確認するための変数です。
いろんなスクリプトを行ったり来たりするので
今どの土地が建設中かを判断するのにつかっています。

コスチューム1(空いている土地)ならbuildメッセージを送ります。
ほかのコスチュームの場合は、すでに建物がある状態ですので
とりこわし作業をします。
建物の数の変数(shopやfood変数)をマイナスして
その建物にかかったお金を返します。
そしてコスチュームをemptyにして、空いている土地に戻します。

buildメッセージが送られたら
・背景が「build」のコスチュームになります
・背景がbuildのとき、shopアイコンが表示されます

お店アイコンのスクリプトがこちらです。(shopアイコン)
WS0021
クリックされたときに手持ちのお金をチェックします。
shopなら500円・foodなら1000円というように、好きな金額を設定しましょう。
持ち金があれば、持ち金を減らし、スコアを変えます。
building?変数には、建設中の土地が、 どの建物をたてるかをわかるようにしています。

これはshopアイコンのスクリプトなので、「shop」を入れます。
(ほかの建物アイコンのときは、その建物の名前を入れます)

そして「buildingメッセージ」をおくります。

また「土地のスプライト」に戻りましょう。(spot1)
 WS0022
building(建設中)を受け取ったら「building on:」の変数を確認して
自分の土地が建設中がどうか?をチェックします。
(今はspot1なので、1以外の数字がはいっていたら建設しません) 

そしてさきほどお店アイコンクリックで変更された
「building?(何を建てる?)」の中身をチェックします。
shopならコスチュームをshopにする
foodならfoodに・・・というように、変数の中身に応じてコスチュームを変更します。
同時に建物の数をチェックする変数も+1します。

これで、空いた土地に建物をたてられるようになりました!
もうこれだけで、箱庭の要素はバッチリですね。

お金をふやすロジック

せっかくなのでお金も増えるようにしてお買い物感を出しましょう。
さきほどshop変数やfood変数に、建物の数をいれていましたね。
この建物の数に応じて、お金がふえていくようにします。

WS0023
お金がふえるロジックはどこに書いてもいいですが
今回はこのスプライトに入っているようです。

WS0024
最初は手持ちのお金900からスタートで
建物変数も初期化(ぜんぶ0にする)します。

そのあと、1秒ごとにお金をふやしていきます。
建物によって、もらえるお金がかわります。
shopは1秒間に5円、foodは1秒間に12円・・・ というように
もらえるお金は自由に設定しましょう。

ブロックがかなり長いですが
演算ブロックを組み合わせることで、長い計算もできます。
WS0025
 まずshops×5を作って・・・
WS0026
つぎに(○+○)の中に、shops×5をつかんで入れます。
右側の○にfood×12のブロックを入れます。
WS0027
このように、組み合わせたブロックをいくらでも入れることができます。
WS0028

横に長くなるのがイヤだったら
これでもOK!
WS0029

さいごに

箱庭ベース部分はこれで完成です。
スプライトが多いので、ややこしく感じるかもしれませんが
スクリプト自体はカンタンなので、ぜひ色んな箱庭を作って楽しんでください。

街を歩いている人を追加したり、建物の金額が出るようにしたり
あなたのオリジナル箱庭を演出してみて下さいね。

この記事がよかった!という方は「B!」ボタンや
こちらのボタンを押していただけると元気がでます!