🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

501閲覧

Python、Pygameでの学習(ゲーム作成)

Fointerest

総合スコア5

Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

0クリップ

投稿2019/11/02 09:54

前提・実現したいこと

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関数をいじってみたりはしたのですが解決法がわかりません。
よろしくお願いします。

mimimingo1102👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

該当行の一つ手前の行で括弧が足りてません。

mess_over = myfont.render("Game Over!",True,(255,255,0)

SyntaxErrorが出た場合はその行だけでなく手前の行も見たほうが良いです。

投稿2019/11/02 10:21

nomuken

総合スコア1627

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Fointerest

2019/11/02 10:39

ありがとうございます。 なるほど。 これから気を付けて見るようにしてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問