前回の質問より、自身で修正できなかったエラーを1ずつ質問させていただきます。
環境
OSはMac OSを使っています。
Pythonのバージョンはver.(3.7.2)を使用しています。
実行しているソフトはIDLEを使用しています。
実現したいこと
Pythonのみを使用し、ブロック崩しというゲームを制作したいです。
参考サイト
エラー
前回のご指摘により、/から\(バックスラッシュ)を使用することにより、エラーがなくなったのですが、新たなるエラーが発生しました。
エラー場所付近のコード
python
1pygame.drow.rect(screen, WHITE, paddle) #ラケットの描画 2 pygame.drow.circle(screen, WHITE, \ #ボールの描画 3 (int(ballx), int(bally)), br) 4![イメージ説明](e5a2b4dec01541aa053f0facaf05824b.png)
全体のコード
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件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/09/09 04:39
2019/09/09 04:41
2019/09/09 04:45
退会済みユーザー
2019/09/09 11:32