質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
RPG

RPG (Report Program Generator)とは、IBMの System i(AS/400)サーバ向けのプログラミング言語です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

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

Q&A

解決済

1回答

776閲覧

SyntaxError

nijnij

総合スコア8

RPG

RPG (Report Program Generator)とは、IBMの System i(AS/400)サーバ向けのプログラミング言語です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

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

0グッド

0クリップ

投稿2021/04/18 08:05

前提・実現したいこと

動画を見ながらpythonでRPGを作っていました。
動画の桃李にプログラムを変更するとエラーが出ました

発生している問題・エラーメッセージ

def drawImage(self, idx, sx, sy) ^ SyntaxError: invalid syntax

該当のソースコード

python

1import pygame 2from pygame.locals import * 3import sys 4 5SCREEN_RECT = Rect(0, 0, 640, 480) 6CS = 32 7SCREEN_NCOL = SCREEN_RECT.width//CS 8SCREEN_NROW = SCREEN_RECT.height//CS 9SCREEN_CENTER_X = SCREEN_RECT.width//2//CS 10SCREEN_CENTER_Y = SCREEN_RECT.height//2//CS 11def load_image(filename): 12 image = pygame.image.load(filename) 13 image = image.convert_alpha() 14 return image 15 16def get_image(sheet, x, y, width, height, useColorKey=False): 17 image = pygame.Surface([width, height]) 18 image.blit(sheet, (0, 0), (x, y, width, height)) 19 image = image.convert() 20 if useColorKey: 21 colorkey = image.get_at((0, 0)) 22 image.set_colorkey(colorkey, RLEACCEL) 23 return image 24 25DIR_DOWN = 0 26DIR_LEFT = 1 27DIR_RIGHT = 2 28DIR_UP = 3 29ANIM_WAIT_COUNT = 24 30 31class Player(pygame.sprite.Sprite): 32 def __init__(self, filename): 33 pygame.sprite.Sprite.__init__(self) 34 sheet = load_image(filename) 35 self.images = [[], [], [], []] 36 for row in range(0, 4): 37 for col in [0, 1, 2, 1]: 38 self.images[row].append(get_image(sheet, 0 + 32 * col, 0 + 32 * row, 32, 32, True)) 39 self.image = self.images[DIR_DOWN][0] 40 self.rect = self.image.get_rect() 41 self.rect.x = SCREEN_CENTER_X * CS 42 self.rect.y = SCREEN_CENTER_Y * CS 43 self.frame = 0 44 self.anim_count = 0 45 self.dir = DIR_DOWN 46 self.wx, self.wy = 1, 1 47 def update(self): 48 self.anim_count += 1 49 if self.anim_count >= ANIM_WAIT_COUNT: 50 self.anim_count = 0 51 self.frame += 1 52 if self.frame > 3: 53 self.frame = 0 54 self.image = self.images[self.dir][self.frame] 55 56 57class Map: 58 def __init__(self, screen, filename, player): 59 self.ncol = 0 60 self.nrow = 0 61 self.screen = screen 62 self.player = player 63 self.mapData = [] 64 self.readMap(filename) 65 self.sheet0 = load_image("pipo-map001.png") 66 self.sheet1 = load_image("pipo-map001_at-umi.png") 67 self.images = [] 68 self.images.append([self.sheet1, 0, 4]) # umi (0) 69 self.images.append([self.sheet0, 0, 0]) # shiba (1) 70 self.images.append([self.sheet0, 0, 1]) # shiba (2) 71 def readMap(self, filename): 72 with open(filename) as fi: 73 line = fi.readline() 74 self.ncol, self.nrow = [int(tok) for tok in line.split(",")] 75 for row in range(self.nrow): 76 line = fi.readline() 77 self.mapData.append([int(tok) for tok in line.split(",")]) 78 def drawImage(self, idx, sx, sy) 79 sheet, x, y = self.images[idx] 80 self.screen.blit(sheet, (sx * 32, sy * 32), (x * 32, y * 32, 32, 32)) 81 def draw(self): 82 screen_wx = self.player.wx - SCREEN_CENTER_X 83 screen_wy = self.player.wy - SCREEN_CENTER_Y 84 for row in range(SCREEN_NROW): 85 for col in range(SCREEN_NCOL): 86 wx = screen_wx + col 87 wy = screen_wy + row 88 if not (0 <= wx < self.ncol) or not (0 <= wy < self.nrow): 89 self.drawImage(0, col, row) # umi 90 91 else: 92 idx = self.mapData[wy][wx] 93 self.drawImage(1, col, row) # shiba 94 self.drawImage(idx, col, row) 95 def can_move_at(self, wx, wy): 96 if not (0 <= wx < self.ncol) or not (0 <= wy < self.nrow): 97 return False 98 idx = self.mapData[wy][wx] 99 if idx == 0: # umi 100 return False 101 return True 102 103def main(): 104 pygame.init() 105 screen = pygame.display.set_mode(SCREEN_RECT.size) 106 pygame.display.set_caption("RPG") 107 player = Player("pipo-charachip021.png") 108 group = pygame.sprite.RenderUpdates() 109 group.add(player) 110 fieldMap = Map(screen, "field01.map", player) 111 clock = pygame.time.Clock() 112 113 while True: 114 clock.tick(60) 115 screen.fill((0, 255, 0)) 116 fieldMap.draw() 117 group.update() 118 group.draw(screen) 119 pygame.display.update() 120 121 for event in pygame.event.get(): 122 if event.type == QUIT: 123 pygame.quit() 124 sys.exit() 125 elif event.type == KEYDOWN: 126 if event.key == K_ESCAPE: 127 pygame.quit() 128 sys.exit() 129 elif event.key == K_DOWN: 130 player.dir = DIR_DOWN 131 if fieldMap.can_move_at(player.wx, player.wy + 1): 132 player.wy += 1 133 elif event.key == K_LEFT: 134 player.dir = DIR_LEFT 135 if fieldMap.can_move_at(player.wx - 1, player.wy): 136 player.wx -= 1 137 elif event.key == K_RIGHT: 138 player.dir = DIR_RIGHT 139 if fieldMap.can_move_at(player.wx + 1, player.wy): 140 player.wx += 1 141 elif event.key == K_UP: 142 player.dir = DIR_UP 143 if fieldMap.can_move_at(player.wx, player.wy - 1): 144 player.wy -= 1 145 146if __name__ == '__main__': 147 main()

備考

vscodeでdefの文字が光っていなかったのでそれが原因かなとは思っています

補足情報(FW/ツールのバージョンなど)

python3.7.3
raspberry pi 4
見ていた動画のリンク

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

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

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

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

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

1T2R3M4

2021/04/18 08:10 編集

: はタイポですか?
guest

回答1

0

自己解決

打ち方を変えたら解決しました

投稿2021/04/18 08:10

nijnij

総合スコア8

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

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

YT0014

2021/04/18 11:20

具体的に、元のコードの何行目を、どのように変更されたのか、明記してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問