Scratch(スクラッチ)でタイルマップを作るやり方
動画説明で作ったプロジェクト
スペースキーをクリックすると、ステージが変わります。3ステージまであります。
本作品のScratchプロジェクトは、https://scratch.mit.edu/projects/826151237です。
※スプライト、コスチュームのみを搭載した学習用Scratchプロジェクトは、https://scratch.mit.edu/projects/828322001/を利用してください。
タイルのコードとコスチューム
コード
コスチューム
タイルサイズとクローンについて
- 旗をクリックすると、スプライト本体はステージから姿を隠します。
- 「createTileMap」という名前のカスタムブロックを実行すると、X座標-220, Y座標180に瞬間移動してから、以下の処理3-4が9回繰り返し実行します。
- 自分自身のクローンを作った後右方向に40ピクセル移動(X座標を40ずつ変える)する処理を12回繰り返し実行します。そして、クローンされた後は「表示する」ブロックでステージに姿を表示させます。
この処理により、ステージの1行分のタイルのクローンが生成されます。 - X座標を-220に戻し、上方向に40ピクセル移動(Y座標を40ずつ変える)してから、処理3を行います。
この処理により、処理3で作った上の行のクローン作成の開始位置に移動します。
タイルマップデータについて
各タイル(クローン)のコスチュームを、コスチューム番号(1-4)で示す。1は空気、2は草、3は土、4は石ブロック。
タイルマップデータ通りにコスチュームを設定できれば、上記のようなタイルマップを生成できる。
タイルマップ作成のアルゴリズム
タイルマップデータをリスト変数に格納するやり方は、こちらを参照してください。
上図の例では、変数「row」=5行目、変数「col」=11列目のタイルは、コスチューム番号3(土ブロック)のコスチュームになります。
タイルマップデータをリスト変数に格納するやり方
タイルマップ生成のプログラミング
- 「createTileMap」という名前のカスタムブロックを実行すると、X座標-220, Y座標180に瞬間移動して変数「row」の値を9 x 変数「stage」にします。変数「stage」の値が1なら変数「row」は9、変数「stage」の値が2なら変数「row」は18、変数「stage」の値が3なら変数「row」は27になります。
- 以下の処理3-4を9回繰り返し実行します。
- 変数「col」の値を1にして、コスチュームを「row」行目のリスト変数「tileMap」における、「col」番目のデータ値のコスチュームにしてから自分自身のクローンを作ります。その後、右方向に40ピクセル移動(X座標を40ずつ変える)して変数「col」の値を1ずつ変える処理を12回繰り返します。そして、クローンされた後は「表示する」ブロックでステージに姿を表示させます。
この処理により、ステージの1行分のタイルマップデータに基づいたコスチュームのクローンが生成されます。 - X座標を-220に戻し、上方向に40ピクセル移動(Y座標を40ずつ変える)し、変数「row」の値を-1ずつ変えてから、処理3を行います。
この処理により、処理3で作った上の行のクローン作成の開始位置に移動します。
- 旗を押したら、ステージから姿を消します。
クローンを使う場合には、本体は隠した方がプログラミングしやすい場合が多いです。 - 変数「stage」の値を1にします。
- カスタムブロック「createTileMap」を実行します。
- クローンされると、ステージに姿を表示します。
- 以下の処理3をずっと繰り返し実行します。
- クローンした際のコスチューム番号が「0」だったら(空気ブロック)だったら、幽霊の効果を80にして透明に近い状態にします。コスチューム番号が「0」以外だったら幽霊の効果を0にして通常の状態にします。
- スクリプトの確認用に作ったスクリプトです。
- スペースキーを押すと、「deleteAllTiles」というメッセージが表示されます。
以下に説明する「deleteAllTiles」メッセージを受け取ると「このクローンを削除する」ブロックが実行されるスクリプトにより、全てのタイルのクローンが削除されます。 - 変数「stage」の値を1ずつ変えてから、カスタムブロック「createTileMap」を実行します。変数「stage」の値が1なら変数「row」は9、変数「stage」の値が2なら変数「row」は18、変数「stage」の値が3なら変数「row」は27になった後に、カスタムブロック「createTileMap」を実行します。
- ステージ3までのタイルマップデータしかないので、変数「stage」の値が3になったら変数「stage」の値を0にリセットします。
- 「deleteAllTiles」メッセージを受け取ったときに実行されます。
- 「このクローンを削除する」ブロックを実行して、全てのタイルのクローンが削除されます。
カスタムブロックを作る際に、「画面を再描画せずに実行する」にチェックを入れると、カスタムブロック内のすべてのプログラミングブロックが完了するまで、画面上の変更が表示されないままとなります。そのため、クローンがたくさん作成された場合でも、一瞬で複数のクローンが生成されるように見えます。一方、「画面を再描画せずに実行する」にチェックが入っていないときは、カスタムブロック内のプログラミングブロックを実行する度に画面が再描画されるので、目で見て分かる程度のスピードでクローンが順番に表示されます。
MITメディアラボにより開発されたビジュアルプログラミング言語。子供たちが物語やゲーム、 アニメーションなどのインタラクティブな作品をプログラミングできる。また、自分の作った作品を世界中の人々と共有できるコミュニティーサイトでもある。世界中で9千万人を超えるユーザがいる。
こちらのホームページにアクセスすれば無料で利用できる。