前提・実現したいこと
Pythonでpygameを使って学習としてゲームを作っています。
ブロック崩しを作っているのですが86行目でSyntaxErrorが出てしまいます。
改善点を教えていただけるとありがたいです。
よろしくお願いします。
該当のソースコード
Python
1import sys 2import math 3import random 4import pygame 5from pygame.locals import QUIT,KEYDOWN,K_LEFT,K_RIGHT,Rect 6 7 8class Block: 9 """object""" 10 def __init__(self,col,rect,speed=0): 11 self.col = col 12 self.rect = rect 13 self.speed = speed 14 self.dir = random.randint(-45,45)+270 15 16 17 def move(self): 18 """move BALL""" 19 self.rect.centerx += math.cos(math.randians(self.dir))*self.speed 20 self.rect.centery -= math.sin(math.randians(self.dir))*self.speed 21 22 23 def draw(self): 24 """rendering""" 25 if self.speed == 0: 26 pygame.draw.rect(SURFACE,self.col,self.rect) 27 else: 28 pygame.draw.ellipse(SURFACE,self.col,self.rect) 29 30 31def tick(): 32 global BLOCKS 33 for event in pygame.event.get(): 34 if event.type==QUIT: 35 pygame.quit() 36 sys.exit() 37 elif event.type==KEYDOWN: 38 if event.key==K_LEFT: 39 PADDLE.rect.centerx -=10 40 elif event.key==K_RIGHT: 41 PADDLE.rect.centerx +=10 42 if BALL.rect.center<1000: 43 BALL.move() 44 45 46 #collision with Blocks? 47 prevlen=len(BLOCKS) 48 BLOCKS=[x for x in BLOCKS 49 if not x.rect.colliderect(BALL.rect)] 50 if len(BLOCKS)!=prevlen: 51 BALL.dir*=-1 52 53 54 #collision with Padlles? 55 if PADDLE.rect.colliderect(BALL.rect): 56 BALL.dir=90+(PADDLE.rect.centerx - BALL.rect.centerx)/PADDLE.rect.width*80 57 58 59 #collision eith Walls? 60 if BALL.rect.centerx < 0 or BALL.rect.centerx>600: 61 BALL.dir=180-BALL.dir 62 if BALL.rect.centery<0: 63 BALL.dir=-BALL.dir 64 BALL.speed=15 65 66 67pygame.init() 68pygame.key.set_repeat(5,5) 69SURFACE=pygame.display.set_mode((600,800)) 70FPSCLOCK=pygame.time.Clock() 71BLOCKS=[] 72PADDLE=Block((242,242,0),Rect(300,700,100,30)) 73BALL=Block((242,242,0),Rect(300,400,20,20),10) 74fps = 30 75colors = [(255,0,0),(255,165,0),(242,242,0),(0,128,0),(128,0,128),(0,0,250)] 76 77def main(): 78 """main routine""" 79 myfont = pygame.font.SysFont(None,80) 80 mess_clear = myfont.render("Cleared!",True,(255,255,0)) 81 mess_over = myfont.render("Game Over!",True,(255,255,0) 82 83 84 for ypos , color in enumerate (colors,start=0): 85 for xpos in range(0,5): 86 BLOCKS.append(Block(color, 87 Rect(xpos*100 + 60,ypos*50 + 40,80,30))) 88 89 90 while True: 91 tick() 92 93 94 SURFACE.fill((0,0,0)) 95 BALL.draw() 96 PADDLE.draw() 97 for block in BLOCKS: 98 block.draw() 99 100 101 if len(BLOCKS)==0: 102 SURFACE.blit(mess_clear,(200,400)) 103 if BALL.rect.centery > 800 and len(BLOCKS)>0: 104 SURFACE.blit(mess_over,(150,400)) 105 106 107 pygame.display.update() 108 FPSCLOCK.tick(fps) 109 110 111if __name__=="__main__": 112 main() 113
エラーコード
line 86 for ypos , color in enumerate (colors,start=0): ^ SyntaxError: invalid syntax
試したこと
分からないなりにenumerate関数をいじってみたりはしたのですが解決法がわかりません。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/02 10:39