「Pythonでつくるゲーム開発入門講座(廣瀬豪)」という本で、Tkinterとpygameの両方を使って混乱したので、整理した記事です。
ウィンドウを作成する
-
tkinter
screen = tkinter.Tk()
-
pygame
pygame.init()
ウィンドウにタイトルを設定する
-
tkinter
root.title("~")
-
pygame
pygame.display.set_caption("~")
ウィンドウサイズを設定する
-
tkinter
root.geometry(f"{800}x{600}")
-
pygame
screen = pygame.display.set_mode((800, 600))
フォントを指定する
-
tkinter
fnt = ("Times New Roman", 16)
-
pygame
font = pygame.font.Font(None, 80)
画面を塗りつぶす
-
tkinter
tkinter.Canvas(fill="black")
-
pygame
screen.fill((255,255,255))
画像ファイルを取り込む
-
tkinter
img = tkinter.PhotoImage(file="ファイルパス") # 800 x 600の画像の場合... canvas.create_image(400, 300, image=img, tag="IMAGE_TAG") # 画像の中心座標を指定する
-
pygame
img_galaxy = pygame.image.load("ファイルパス") img_galaxy = pygame.image.load("ファイルパス").convert() # 表示が早くなる img_galaxy = pygame.image.load("ファイルパス").convert_alpha() # 表示が早くなる(透過色ありの場合)
矩形(四角形)を描く
-
tkinter
cancas.create_rectangle(左上x座標, 左上y座標, 右下x座標, 右下y座標, ...)
-
pygame
# screenは、### ウィンドウサイズで取得したもの pygame.draw.rect(screen, 色, [左上x座標, 左上y座標, 幅, 高さ])
イベントに応じた処理をする
-
tkinter
canvas.bind("<各種のイベント>", 関数) def 関数(e): keystring = e.keysym keycode = e.keycode keychar = e.keychar
-
pygame
pygame.event.get() if event.type == pygame.QUIT: pass
押されたキーを取得する
-
tkinter
canvas.bind("<各種のイベント>", 関数) def 関数(e): keystring = e.keysym keycode = e.keycode keychar = e.keychar
-
pygame
for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_F1: pass
別の方法
- pygame
key = pygame.key.get_pressed() key[pygame.K_DOWN]
- pygame
mouseX, mouseY = pygame.mouse.get_pos() btn1, btn2, btn3 = pygame.mouse.get_pressed()
関連:マウスホイール
- pygame
if event.type == pygame.MOUSEWHEEL: # マウスホイールイベント print(f"ホイールの回転量: {event.y}") # 回転量を表示 ang += event.y * 10 # 回転量に基づいて角度を調整
一定時間後に処理をする
-
tkinter
root.after(時間, 関数)
-
pygame
clock = pygame.time.Clock() clock.tick(30)
画面を更新する
-
tkinter
canvas.delete("タグ名")
-
pygame
pygame.display.update()