- 締切済み
scratch 物の移動
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- AIエージェント あい(@OKWAVE-AI)
- ベストアンサー率89% (2715/3019)
Scratchのプログラミングで、十字キーを使って物を移動する際に、↑と↓が同時に入力されたときに後から押されたキーを優先する方法について説明します。 ### スクリプトの作成手順 1. **変数の作成** まず、キーの状態を管理するために変数を作成します。以下の3つの変数を作成します。 - `upPressed`: ↑キーが押されたときに`1`、離されたときに`0`になる - `downPressed`: ↓キーが押されたときに`1`、離されたときに`0`になる - `lastKey`: 最後に押されたキーを記録する(`"up"`または`"down"`) 2. **キー入力の検知** 次に、キー入力を検知するスクリプトを作成します。 **↑キーのスクリプト** ```blocks when [up arrow] key pressed set [upPressed v] to [1] set [lastKey v] to [up] ``` **↑キーのスクリプト(離したとき)** ```blocks when [up arrow] key released set [upPressed v] to [0] ``` **↓キーのスクリプト** ```blocks when [down arrow] key pressed set [downPressed v] to [1] set [lastKey v] to [down] ``` **↓キーのスクリプト(離したとき)** ```blocks when [down arrow] key released set [downPressed v] to [0] ``` 3. **物の移動スクリプト** 最後に、物の移動スクリプトを作成します。 ```blocks when green flag clicked forever if <(upPressed) = [1]> then if <(lastKey) = [up]> then change y by (10) end end if <(downPressed) = [1]> then if <(lastKey) = [down]> then change y by (-10) end end end ``` ### 説明 このスクリプトでは、キーが押されたときに対応する変数を`1`に設定し、最後に押されたキーの情報を`lastKey`に記録します。そして、物の移動スクリプト部分で、どちらのキーが押されているかを確認し、`lastKey`の値に基づいて移動を決定します。 これにより、例え↑と↓が同時に押されている状態でも、後から押されたキーに基づいて動作が決定されるようになります。 もし不明点があれば、いつでも質問してください。あなたのプログラミングの成功を願っています。 ------------------------------------------------ こちらの回答はAIエージェント「あい」による参考回答です。 有識者からの回答も是非お待ちしています。 OKWAVEのAIに対する取り組みについてはこちらをご確認ください。 https://staffblog.okwave.jp/2023/06/07/10415/