現在、BBCマイクロビット用の小さな2ボタンゲームを開発しようとしています。 micro:kitは広く入手できないので、私は自分の問題を詳細に説明しようとします。MicroPythonでマイクロビットモジュールを使用しているときのインデックスエラー
私はプレーヤーのコントロールを作成しようとしています。移動可能なライトは、グリッドの最後の行に貼り付けられています。 Aボタンはライトを1列左に移動させ、Bボタンはライトを1列右に移動させます。
Iは行列に対する(PLAYER_LOC位呼ばれる)5枚の別々の画像、LEDのための可能な場所であるそれぞれを作成しています。
from microbit import *
import random
player_index = 2
player_loc0 = Image('00000:00000:00000:00000:50000')
player_loc1 = Image('00000:00000:00000:00000:05000')
player_loc2 = Image('00000:00000:00000:00000:00500')
player_loc3 = Image('00000:00000:00000:00000:00050')
player_loc4 = Image('00000:00000:00000:00000:00005')
player_locs = [player_loc0, player_loc1, player_loc2, player_loc3, player_loc4]
# Indexes 0 1 2 3 4
while True:
display.show(player_locs[player_index])
if button_a.is_pressed():
player_index += 1
elif button_b.is_pressed():
player_index -= 1
ボタンことによりdisplay.show(player_locs [player_index])表示画像player_loc1代わりにplayer_loc2を行う、(2に等しい)player_indexから1を引くことになっています。
Bボタンは逆の動作を行い、1つ追加すると、player_loc3が表示されます。
私がいる問題は、私はAまたはBボタンを押したとき、私ははIndexErrorを取得し、リストインデックスは、17行目で、範囲外のdisplay.show(player_locs [player_index])であるということです。インデックスは決して範囲外であるべきではありません。 player_locsのリストには、0から4の範囲のインデックスがあります。インデックス1と3は範囲外ですが、範囲外のIndexErrorメッセージが表示されます。 player_indexを削除して0〜4の整数で実行すると、動作します。
これは、ボタンを押さずにスクリプトを実行したときの画像です。ボタンを押すとエラーメッセージが表示されます。 ご協力いただければ幸いです。あなたがいずれかのボタンを押しながら
あなたは 'if'文を渡していますか? 'button_x.is_pressed()'は実際に期待どおりに動作していますか?さらに、 '.is_pressed'は応答のためのループを保持していますか、それとも単にループを実行させますか? – Pouria