xをクリックするとリストのスペースが埋まり、リストのza posをタップすると機能し、リストをタップすると機能するインベントリのコードを作成していますcリストが印刷されます。私はコードが非効率的であることを知っていますが、この段階でのテスト目的のためだけにif文にどの程度深く入り込むのを無視します。とにかく、if inv [0]がnoneの行で、そのセクションのすべての行にエラーが発生します。エラーは '範囲外のリストインデックス'です。誰かが私が間違っていることを知っていますか?'リストインデックスが範囲外です'エラー
import pygame, sys
pygame.init()
i= 1
inv = []
#Code below will add an item to that list.
w, h = 1000, 600
DISPLAYSURF = pygame.display.set_mode((w, h))
while True:
DISPLAYSURF.fill((255, 255, 255))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
これはこれは、キーが押されたときに、リスト内の位置を空にすることである
if event.key == pygame.K_x:
if inv[0] == None:
inv[0] = 'an_item'
elif inv[1] == None:
inv[1] = 'an_item'
elif inv[2] == None:
inv[2] = 'an_item'
elif inv[3] == None:
inv[3] = 'an_item'
elif inv[4] == None:
inv[4] = 'an_item'
else:
print("No inventory space")
リスト内の位置を記入することです。私はそれが非効率的である知っているが、私はそれがそれに影響を与えるべきではないと思う:
if event.key == pygame.K_z
if inv[4] == none:
if inv[3] == None:
if inv[2] == None:
if inv[1] == None:
if inv[0] == None:
print('Nothing to drop!')
else: inv[0] None
else:
inv[1] = None
else:
inv[2] = None
else:
inv[3] = None
else:
inv[4] = None
この文は、リストを印刷することで、Cは
if event.key == pygame.K_c:
print(inv)
投稿したコードから、あなたは 'inv [0]'を介して空のリスト 'inv'にアクセスします。しかし、完全なトレースバックを投稿してください。 –
コードには多くの問題があります。 noneをチェックし、コード内でNoneを置き換えます。あなたの最も内側にインデントされたelse条件に代入演算子 "="がありません。 'inv'は空のリストであり、反復するものは何もないので、indexErrorを取得します。 –
@ d-coderああ、良いキャッチ。 –