最終更新日:2024年3月19日
今回の作品は、スプライトやメッセージの数が多く難易度が高くなってしまいました。前編と後編に分けて説明しますが、それでも難しいと思います。まずは、「小学生のための簡単フォートナイトの作り方」を作ってみてください。それができた人は、ぜひこのマインクラフトに挑戦してみてください!
今日のポイント
「ずっと」ブロックは無限ループになりやすいので注意する
目次
【はじめに】完成した作品を見る
【考え方】作品の全体像を理解する
背景とスプライト
①から⑩まであります。①は「背景」です。②~⑩が「スプライト」です。スプライトの数が多いため、プログラムは複雑です。ゆっくりでいいので、一つずつ確かめながら読み進めるようにしましょう。
①「背景」のコスチューム
これだけスプライトではありません。ステージの背景です。
「普通の世界」と「ネザー」を作ります。2つの世界を行き来できるようにプログラミングします。
②「画面に表示するテキスト」のコスチューム
コスチューム「ゲーム中」は、何も書かれていない空白のコスチュームです。キャラクターが移動できるのは「ゲーム中」だけですよね?「ゲーム中」なのか、それとも「画面になにかテキストを表示させている(キャラクターは移動できない)」のか、判定するために空白のコスチューム「ゲーム中」を用意します。
③「壊せるブロック」のコスチューム
土、草原、ダイヤモンド鉱石は、「武器」で壊すことができるブロックです。見た目や性質(鉱石を落とす)は違いますが、「武器」で壊せるという特徴は同じです。同じ特徴をもったものは、同じスプライトにまとめるとプログラムがスッキリしますよ。
④「壊せないブロック」のコスチューム
岩盤、マグマは、「武器」で壊せないブロックです。同じ特徴をもつので、同じスプライトで作ります。マグマに当たるとダメージを受けるようにプログラミングします。
⑤「プレイヤー」のコスチューム
プレイヤーのコスチュームの1番目と2番目は、スクラッチの画像を使いました。3番目の画像は、「マグマに当たった」ように少し加工しました。絵を描くのは苦手ですか?私は苦手です。それでも日頃から練習しておけば、ちょっとしたアイテムなどは描けるようになります。
⑥「武器」のコスチューム
「武器」は2種類用意しました。武器には攻撃力があって、もちろん「ダイヤモンドの剣」のほうが強いです。
⑦「豚」のコスチューム
回復アイテムを落としてくれる「豚」です。肉をたくさん集めてから戦いに行きましょう。
⑧「攻撃ボタン」のコスチューム
キーボードの「1」を押すと、「武器」で攻撃します。
⑨「回復ボタン」のコスチューム
キーボードの「2」を押すと、「肉」を食べて回復します。肉を持っているときと、持っていないときが一目でわかるようにコスチュームを切り替えます。
⑩「クラフトボタン」のコスチューム
キーボードの「3」を押すと、「鉱石」をクラフトして「ダイヤモンドの剣」を作ります。回復ボタンと同様に、クラフトできるときが一目でわかるようにコスチュームを切り替えます。
スプライト間のイベント
スプライトのイベントの関係を示した図です。「メッセージ」を出す側と、「メッセージ」を受け取る側をよく確認しておきましょう。
メッセージを出す側と受け取る側に線を引きたかったのですが、今回はスプライトやメッセージの数が多く見にくくなりました。そのため、線は引いていません。
【プログラミング】してみよう
変数を作成する
まずは、変数を用意しましょう。今回使用した変数は4個です。
No | 変数名 | 変数の種類 | 使い方 | どんな値が入る? |
---|---|---|---|---|
1 | 体力 | 変数 全てのスプライト用 | プレイヤーの体力です | 0~100までの数字 |
2 | 攻撃力 | 変数 全てのスプライト用 | 「武器」の攻撃力です | 1~10までの数字 |
3 | 肉 | 変数 全てのスプライト用 | 豚を倒すと手に入れることができます。使うと体力が「100」回復します。 | 0、1、2・・・ |
4 | 鉱石 | 変数 全てのスプライト用 | ブロック「ダイヤモンド鉱石」を壊すと手に入れることができます。6個集めると「ダイヤモンドの剣」をクラフトできます。 | 0、1、2・・・ |
すべてのプログラム
①「背景」のプログラム
これだけスプライトではありません。ステージの背景です。
「普通の世界」で画面の右端に行くと「ネザー」に行きます。「ネザー」の画面で左端に行くと「普通の世界」に戻ります。
②「画面に表示するテキスト」のプログラム
③「壊せるブロック」のプログラム
クローンを使って、ブロックを敷き詰めています。壊せるブロックの1段目は「ダイヤモンド鉱石」です。2段目は「土」と「草原」を交互に置きました。
また、ゲーム開始時はブロックを全て非表示にしています。「普通の世界行く」ときにブロックを表示させます。
武器で攻撃されると、ブロックは壊れます。攻撃されたかどうかを「ずっと」調べるようにプログラミングします。
④「壊せないブロック」のプログラム
岩盤、マグマを、交互に敷き詰めます。「普通の世界に行く」ときに表示させます。
プレイヤーは「マグマ」に当たるとダメージを受けます。プレイヤーが「マグマ」に当たったかどうか、「ずっと」調べます。
⑤「プレイヤー」のプログラム
プレイヤーは、「ずっと」重力を受けたり、「ずっと」左右に移動できたりと、「ずっと」プログラムを多く使います。「ずっと」ブロックは意図せず「無限ループ(ずっとブロックの中のコードをずーっと実行する)」におちいりやすいです。無限ループは気づきにくいので、どこでプログラムがうまくいっていないのか分かりづらいです。
ワンポイントアドバイスに私なりの解決策を書いています。よかったら参考にしてみてください。
ブロックに触れているときだけ「ジャンプ」ができます。
⑥「武器」のプログラム
武器とプレイヤーはわけてスプライトを作成しました。武器とプレイヤーを一枚のコスチュームとして書くこともできると思います。しかしそうすると、武器が増える度に、その分コスチューム(プレイヤーが武器で攻撃するアニメーション)を用意する必要があります。
武器とプレイヤーをわけて作った場合、「プレイヤー」の動きに合わせて「武器」がついていくようにします。また武器で攻撃するときのアニメーションの調整が必要です。
⑦「豚」のプログラム
豚にも重力がかかるようにします。豚は倒すと何度も新しく出現します。プレイヤーにかかる重力と、豚にかかる重力を区別するために、メッセージ名は違うものにします。
⑧「攻撃ボタン」のプログラム
表示と非表示の制御のみです。
⑨「回復ボタン」のプログラム
キーボードの「2」を押すと、「肉」を食べて回復します。肉を持っているときと、持っていないときが一目でわかるようにコスチュームを切り替えます。
⑩「クラフトボタン」のプログラム
キーボードの「3」を押すと、「鉱石」をクラフトして「ダイヤモンドの剣」を作ります。回復ボタンと同様に、クラフトできるときが一目でわかるようにコスチュームを切り替えます。
【リミックス】してみよう
アイテムや武器などを追加して、好きなように改造してみよう。
ワンポイントアドバイス
プレイヤーのスプライトは、重力を受けたり、左右の移動やジャンプのためのキー入力を受け付けたり、体力が0になったかどうか調べる、など「ずっと」ブロックを使うことが特に多いですよね。いつの間にか無限ループに陥って、プログラムが正常に動作しないということはよくあります。
「ずっと」ブロックを使うスクリプトは、「メッセージ」を使って下図のように切り出すと分かりやすいかもしれません。また、そのときのメッセージ名に「ずっと」という名前をつけるのはどうでしょうか。「ずっと横移動できる」や「ずっと重力」のような感じです。
読みやすいプログラムを書くことは、バグが見つけやすくなるだけでなく、作品の改造をしやすくなるなど、メリットが多いです。早くプログラムが書けることも大事ですが、それと同じくらい、読みやすいプログラムを書くことも大事だと言われています。
まとめ
この記事(前編)と後編のボリュームがだいぶ違います。前編に色々と詰め込みすぎてしまいました。前編を理解できた人は高いプログラミングスキルを持っていると思います。自信をもって後編に進んでください。そして、作品をどんどん改造してみてください。前編が難しかった人は、「小学生のための簡単フォートナイトの作り方」を見直したり、自分で作品を作ったりしてプログラミングする時間を増やしてみてください。頑張った分、上達しますよ。
前編ができた人は、後編にもチャレンジしてみてください!
その他の人気ゲームの作り方
最終更新日:2024年3月19日
広告
最終更新日:2024年3月19日