参考サイトと、Pythonの書籍を使用しブロック崩しゲームを作ったのですが、表示されません。
以前質問したものとは違い、打ち間違いがないか全て確認しました。
python
1import pygame 2import math 3 4def sgn(a): 5 return 1 if a > 0 else -1 6 7WIDTH = 640 8HEIGHT = 480 #修正 9YELLOW = (255,255,0) 10WHITE = (255,255,0) 11RED = (255,0.0) 12GREEN = (0,255,0) 13BLUE = (0,0,255) 14colortable = [RED, YELLOW, GREEN] 15 16pygame.init() 17screen = pygame.display.set_mode((WIDTH,HEIGHT)) 18myfont = pygame.font.Font(None, 64) 19myclock = pygame.time.Clock() 20br = 10 #ボールの半径 21paddlew = 96 #ラケットの幅 22paddleh = 16 #ラケットの高さ 23blockw = 48 #ブロックの幅 24blockh = 24 #ブロックの高さ 25endflag = 0 26 27while endflag == 0: 28 ballx = WIDTH / 2 #ボールのx座標 29 bally = HEIGHT - 170 #ボールのy座標 30 bx1 = 2 #ボールの速度(x成分) 31 by1 = -2.5 #ボールの速度(y成分) 32 x = WIDTH / 2 33 y = HEIGHT - 64 34 paddle = pygame.Rect(x -(paddlew / 2), / 35 y - (paddleh / 2), paddlew, paddleh) 36 blocks = [] 37 for i in range(50): #50個のブロックを作成 38 x = (i % 10) * (blockw + 4) + 64 39 y = int(i / 10) * (blockh + 4) + 64 40 blocks.append(pygame.Rect(x, y, blockw, / 41 blockh)) 42 gameover = 0 43 while endflag == 0: 44 for event in pygame.event.get(): 45 if event.type == pygame.QUIT: endflag = 1 46 press = pygame.key.get_pressed() #キー入力を取得 47 x = paddle.centerx 48 if(press[pygame.K_LEFT ]): x -= 8 #カーソル右 49 if(press[pygame.K_RIGHT]): x += 8 #カーソル左 50 if x >= (paddlew / 2) \ 51 and x <= (WIDTH - (paddlew / 2)): 52 paddle.centerx = x 53 x = ballx + bx1 54 y = bally + by1 55 if x < br or x > (WIDTH - br): bx1 = -bx1 #画面枠での反射 56 if y < br: by1 = -by1 57 if y > HEIGHT: gameover += 1 58 dx = paddle.centerx - x #ラケットでの反射 59 dy = paddle.centery - y 60 if dy == 0:dy = 1 61 if ads(dx) <(paddlew / 2 + br) / 62 and ads(dy) < (paddleh / 2 + br): 63 if ads(dx/dy) > (paddlew / paddleh): 64 dx1 = -dx1 65 ballx = paddle.centerx - sgn(dx) / 66 * (paddlew/2 + br) 67 else: 68 bx1 = -dx / 10 69 dy1 = -dy1 70 bally = paddle.centery - sgn(dy) 71 * (paddleh/2 + br) 72 for block in blocks: 73 dx = block.centerx - x #ブロックでの反射 74 dy = block.centery - y 75 if dy == 0: dy = 1 76 if ads(dx) < (blockw / 2 + br) \ 77 and ads(dy) < (blockh / 2 + br): 78 if ads(dx / dy) > (blockw / blockh): 79 bx1 = -by1 80 ballx = block.centery - sgn(dx) \ 81 * (blockw / 2 + br) 82 else: 83 by1 = -by1 84 bally = block.centery - sgn(dy) \ 85 * (blockh / 2 + br) 86 blocks.remove(block) 87 break 88 ballx += bx1 #現在位置にボール速度を加算 89 bally += by1 90 screen.fill(BLUE) 91 for block in blocks: #ブロックの描画 92 color = colortable[int(block.y / 28) % 3] 93 pygame.drow.rect(screen, color, block) 94 pygame.drow.rect(screen, WHITE, paddle) #ラケットの描画 95 pygame.drow.circle(screen, WHITE, ¥ #ボールの描画 96 (int(ballx), int(bally)), br) 97 if gameover > 0: #ゲームオーバー 98 imagetext = \ 99 myfont.render("GAME OVER", True, WHITE) 100 screen.blit(imagetext, (180, 300)) 101 if gameover > 200: break 102 myclock.tick(60) 103 pygame.display.flip() 104 pygame.quit() 105 106 107 108 109 110
トレースバックも含めてエラーは全文載せください。
ユーザディレクトリ名などはマスクしていいです。
質問はエラー1件につき質問1件を作成してください。
エラー1件ごとに質問1件を解決させるのがいいでしょう。
1.エラーメッセージは出なかったということでしょうか?
2.環境(OS、Python・モジュールのバージョン)は何ですか?
1. エラーメッセージは出ませんでした。
2. OSはmac OSです。 pythonのver.は最新のものを使用しています。
IDLEで実行しようと思うのですが、ダメなのでしょうか?
提示コードを実行すると「SyntaxError: invalid syntax」が出ます。
他人が実行できるコードを提示ください。
1.pygame window は出ましたか?
2.下記メッセージは表示されましたか?
pygame X.X.X
Hello from the pygame community. https://www.pygame.org/contribute.html
WindowsのIDLEで実行したところ、上記が出ましたがゲーム画面は表示されませんでした。
※掲載のコードではエラーが多数あるため、こちらで修正したコードでの実行結果です
回答1件
あなたの回答
tips
プレビュー