初心者の為のPython 活用術という書籍を購入し、まずはじめにコードだけを入力したのですが、エラーになってしまいました。
ゲーム内容はブロック崩しです。
python
1#ブロック崩し 2import pygame 3import math 4def sgn(a): 5 return 1 if a > 0 else -1 6WIDTH = 640 7HEIGHT = 480 8WHITE = (255, 255, 255) 9RED = (255, 0, 0) 10YELLOW = (255, 255, 0) 11GREEN = ( 0, 255, 0) 12BLUE = ( 0, 0, 255) 13colortable = [RED, YELLOW, GREEN] 14 15pygame.init() 16screen = pygame.display.set_mode((WIDTH,HEIGHT)) 17myfont = pygame.font.Font(None, 64) 18myclock = pygame.time.Clock() 19br = 10 20paddlew = 96 21paddleh = 16 22blockw = 48 23blockh = 24 24endflag = 0 25 26while endflag == 0: 27 ballx = WIDTH / 2 28 bally = HEIGHT - 170 29 bx1 = 2 30 by1 = -2.5 31 x = WIDTH / 2 32 y = HEIGHT -64 33 paddle = pygame.Rect(x - (paddlew / 2), \ 34 y - (paddleh / 2), paddlew, paddleh) 35 blocks [] 36 for i in range(50): 37 x = (i % 10) * (blockw + 4) + 64 38 y = int(i / 10) * (blockh + 4) + 64 39 blocks.append(pygame.rect(x, y, blockw, \ 40 blockh)) 41 gameover = 0 42 while endflag == 0: 43 for event in pygame.event.get(): 44 if event.type == pygame.QUIT: endflag = 1 45 press = pygame.key.get_pressed() 46 x = paddle.centerx 47 if(press[pygame.K_LEFT ]): x -= 8 48 if(press[pygame.K_RIGHT]): x += 8 49 and x <= (WIDTH - (paddlew / 2)): 50 paddle.centerx = x 51 x = ballx + bx1 52 y = bally + by1 53 if x < br or x > (WIDTH - br): bx1 = -bx1 54 if y < br: by1 = -by1 55 y > HEIGHT: gameover += 1 56 dx = paddle.centerx - x 57 dy = paddle.centery - y 58 if dy == 0:dy = 1 59 if ads(dx) <(paddlew / 2 + br) \ 60 and ads(dy) < (paddleh / 2 + br): 61 if ads(dx/dy) > (paddlew / paddleh): 62 dx1 = -dx1 63 ballx = paddle.centerx - sgn(dx) \ 64 * (paddlew/2 + br) 65 else: 66 bx1 = -dx / 10 67 dy1 = -dy1 68 bally = paddle.centery - sgn(dy) 69 * (paddleh/2 + br) 70 for block in blocks: 71 dx = block.centerx - x 72 dy = block.centery - y 73 if dy == 0: dy = 1 74 if ads(dx) < (blockw / 2 + br) \ 75 and ads(dy) < (blockh / 2 + br): 76 if ads(dx / dy) > (blockw / blockh): 77 bx1 = -by1 78 ballx = block.centery - sgn(dx) \ 79 * (blockw / 2 + br) 80 else: 81 by1 = -by1 82 bally = block.centery - sgn(dy) \ 83 * (blockh / 2 + br) 84 blocks.remove(block) 85 break 86 ballx += bx1 87 bally += by1 88 screen.fill(BLUE) 89 for block in blocks: 90 color = colortable[int(block.y / 28) % 3] 91 pygame.drow.rect(screen, color, block) 92 pygame.drow.rect(screen, WHITE, paddle) 93 pygame.drow.circle(screen, WHITE, \ 94 (int(ballx), int(bally)), br) 95 if gameover > 0: 96 imagetext = \ 97 myfont.render("GAME OVER", True, WHITE) 98 screen.blit(imagetext, (180, 300)) 99 if gameover > 200: break 100 myclock.tick(60) 101 pygame.display.flip() 102 pygame.quit() 103
エラー画面(スクリーンショット)
回答1件
あなたの回答
tips
プレビュー