-1
pygameで弾丸を撃つようにコードを作成しようとしていますが、索引エラーが発生して動作しません。ここに私のコードです。私は間違って何をしていますか?ありがとう。pygameでの撮影が動作していません
while fire ==True:
print 'FIRE'
for bullet in bullets[:]:
nowtime=pygame.time.get_ticks()
if (nowtime-bullets[3])>1000:
bullets.pop(bullets.index(bullet))
if fire and not oldfire:
bullets.append([int(x_coord),int(y_coord),angle,pygame.time.get_ticks()])
oldfire=fire
screen.fill(white)
for bullet in bullets:
bx=bullet[0]
by=bullet[1]
ba=bullet[2]
bt=bullet[3]
rads=-(ba/360)*2*math.pi
x=int(bx+(blsp*bvel*0.36*math.cos(rads)))
y=int(by+(blsp*bvel*0.36*math.sin(rads)))
print x,y,ba,bt
pygame.draw.circle(screen,green,[x,y],8)
bullet[0]=x
bullet[1]=y
pygame.quit()
アップデート1
ここで役に立つかもしれません私の全体のコードです。ありがとう!
import pygame,math
from pygame import *
black = (0,0,0)
white = (255,255,255)
green = (0,255,0)
red = (255,0,0)
arrow=pygame.image.load('plane.png')
explosion=pygame.image.load('explosion.png')
explosion=pygame.transform.scale(explosion,(300,200))
arrow=pygame.transform.scale(arrow,(150,50))
pygame.init()
size=[1100,900]
screen=pygame.display.set_mode(size)
pygame.display.set_caption("My Game")
done=False
fire=False
clock=pygame.time.Clock()
pygame.mouse.set_visible(1)
x_speed=0
y_speed=0
x_coord=10
y_coord=10
bullets=[]
oldfire=[]
sp=9
angle=0
blsp=1
bvel=30
def pri():
rotarrow=pygame.transform.rotate(arrow, angle)
rotrec=rotarrow.get_rect()
rotrec.center=(x_coord,y_coord)
screen.blit(rotarrow,rotrec)
pygame.display.flip()
clock.tick(60)
def explode():
screen.fill([255,255,255])
screen.blit(explosion,(x_coord-150,700))
pygame.display.flip()
pygame.quit()
while done==False:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done=True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
angle=angle+1
if event.key == pygame.K_RIGHT:
angle=angle-1
if event.key == pygame.K_UP:
sp=18
if event.key == pygame.K_DOWN:
sp=6
if event.key == pygame.K_SPACE:
fire=True
y_coord += (math.sin(-angle/(180/math.pi)) * sp)
x_coord += (math.cos(-angle/(180/math.pi)) * sp)
if event.type == pygame.KEYUP:
if event.key == pygame.K_UP:
sp=9
if event.key == pygame.K_DOWN:
sp=9
y_coord+=5#gravity
if x_coord<80:
x_coord=80
if x_coord>size[0]-80:
x_coord=size[0]-80
if y_coord < 80:
y_coord=80
if y_coord>size[0]-80:
explode()
break
screen.fill(white)
pri()
while fire ==True:
print 'FIRE'
for bullet in bullets[:]:
nowtime=pygame.time.get_ticks()
if (nowtime-bullets[2])>1000:
bullets.pop(bullets.index(bullet))
if fire and not oldfire:
bullets.append([int(x_coord),int(y_coord),angle,pygame.time.get_ticks()])
oldfire=fire
screen.fill(white)
for bullet in bullets:
bx=bullet[0]
by=bullet[1]
ba=bullet[2]
bt=bullet[3]
rads=-(ba/360)*2*math.pi
x=int(bx+(blsp*bvel*0.36*math.cos(rads)))
y=int(by+(blsp*bvel*0.36*math.sin(rads)))
print x,y,ba,bt
pygame.draw.circle(screen,green,[x,y],8)
bullet[0]=x
bullet[1]=y
pygame.quit()
ようこそStackOverflow。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。コードを投稿して問題を正確に記述するまでは効果的にお手伝いすることはできません。これには、完全なエラーメッセージとスタックトレースの提供、使用したトレースステートメントの出力(投稿する前に自分でこれをデバッグしようとしましたか?)、およびプログラムの操作に関するその他の考え方が含まれます。 – Prune