【スクラッチ】「無限に遊べるパズル」の作り方ポイント

2021年2月25日木曜日

Scratch スクラッチ パズル プログラミング

t f B! P L

 



「無限に遊べるパズル」の作り方


はじめに


スクラッチプログラミングで「無限に遊べるパズル」を作りました。

ピースを箱に詰めるパズルゲームです。


永久に遊べるパズル」という玩具を息子が買ってもらったのを見て、スクラッチで作ってみようと思いました。


難易度は Level1 だそうです。^^


プロジェクトは↓です。

無限に遊べるパズル






ゲームのルール


ピースは全部で10個あります。

全部のピースを箱に詰めることができればクリアです。

ピースを重ねて入れることはできません。

各ピースは、回転反転することができます。

参考にした玩具には、入れ方が783通りあるそうです。^^





ピースの種類




各ピースは同じものが2個ずつあります。







操作方法



ピースをつかむ移動させることができます。

ピースを離したときに箱の中に入れられれば、箱の中にピースを置きます

ピースをつかんで箱の中をクリック(タップ)しても置くことができます。






つかんでいるピースを回転させます。





つかんでいるピースを左右に反転させます。


操作はこれだけです。






プログラミングのポイント



パーツのスプライトの名前を統一する




パーツのスプライトの名前は、「パーツ」+半角数字 です。



〇に触れた」で当たり判定を行うと、自身のスプライトが判定に含まれません

(〇のところをプルダウンさせても自身のスプライト名は無いです)


〇の部分に入る文字列をループで与えれば、複数のスプライトの判定を少ないコードで書くことができます。

〇の部分の文字列を作るときに、スプライトの名前を統一して置くことでコードを作りやすくなります。






「「(パーツ)と(変数)」に触れた」 の部分になります。


※自身のスプライト名も作成されますが、判定は無視されます



この関数は、つかんだパーツが外枠もしくは他のパーツに触れた場合は「置けない」変数をにして箱に入れられなくします。


パーツの数を増やしても、「パーツの数」変数を変えるだけでこの部分のコードを変える必要はありません。




パーツのコスチュームは全パターン用意する


パーツの回転、反転をした時にパーツの形が変わりますが、スプライトそのものを回転や反転させるのではなく、コスチュームの切り替えで変えるようにします。







理由は、表示されるスプライトの左上が常に表示の原点になるようにするためです。

つかんでいる位置をスプライトの左上になるようにします)



全てのパーツのコスチュームは原点を左上にするように描かれています。






回転反転のボタンを押したときに、各パーツのスプライトコードにそれぞれ合うようにコードを書いておきます。

※真四角は変わらないので何もしません




※ ↑はそれぞれのパーツで違います





箱の中のマスにそれぞれ番号を持たせる



「マス」スプライトは、一定の高さ横5×縦8に埋まるようにクローンしていきます。


オリジナルはコスチュームを「なし」にして消しておきます


クローンされたときに、自身の位置番号スプライト変数に設定します。






これで、パーツをつかんでいるときにマスがクリックされるか、マウスが離されたときの位置を知ることができます。


※マスを作らなくてもマウスの座標から計算できますが、コードを簡略化するためにこの方法をとりました





ボタンの判定処理


マウスやタップのボタンの状態は次のように区別されています。


OFF:ボタンが押されていない

ON:ボタンが押された直後(1フレーム)

HOLD:ボタンが押され続けている

RELEASE:ボタンが離された直後(1フレーム)




制御は「背景」のコードに書きました。






スプライトの範囲内にしたいときは、

「(マウスポインター)に触れた」ブロックと組み合わせて使います。





ポイントは以上です。





細かいところでは、

パーツが画面に入りきらなかったので、待機中のパーツを縮小(70%)にしました。
つかんだときに100%に戻しています。


回転反転をするときはパーツにかぶって見ずらいのでパーツを元の位置に戻すようにしました。




パソコンで作っているときはマウス操作で問題ないと思っていたところが、タブレットでプレイしてみると操作しづらいところがあったりしました。


なんとか形になって良かったです。^^

この記事を最後まで読んで頂きありがとうございました。


他の作品記事もよければ読んでみてください。


ラベル

3DCG AdSense AI Amazon Echo Blender Blogger cron Cursor DNS Fire TV GCP Github Copilot Google Cloud HTTP iOS IPA iPad iPhone5 JavaScript laravel mySQL nodejs PhotoShop PHP Python Redis Scratch SSH Unity vue.js Webサーバ Windows10 WinSCP イヤーカフ型 イラスト おかし おやつ オリンピック お文具 カイワレ大根 ガチャ きのこ ギフト キャラ弁 クリスマス クレジットカード ゲーミング ゲーミングキーボード ゲーミングマウス ゲーミングマウスパッド ゲーミングモニター ゲームパッド ゴーヤー栽培 コナン サーバ サイクリング サイバーセキュリティ サイバー攻撃 サブスクリプション しりとり すイエんサー スクラッチ スマートウォッチ スライム セキュリティ ゼロトラスト ダイエット タブレット ドズル社 なわとび バーテープ パズル パンダ ぷよぷよ ふるさと納税 プログラミング プロトコル番号 マイクラ マイクロソフト マリオ マンガ メモ ランニングウォッチ ランニングゲーム ワイヤレスイヤホン 異世界 絵本 株関連 鬼滅の刃 健康診断 工作 磁石 自転車 自動化 収益化 書き初め 小学校 松屋 情報処理 情報処理安全確保支援士 辛辛魚 水泳 生成AI 折り紙 川渡し問題 銭天堂 誕生日 段ボール 知育菓子 中学受験 冬鳥 動画 動画編集 日常 認定試験 粘土 福袋 便利な雑貨 母の日 銘酒 料理

このブログを検索

ブログをよくする

連絡フォーム

名前

メール *

メッセージ *

ブログ アーカイブ

QooQ