Edited at

pygameでウィンドウ内の見た目を一括拡大

個人的に詰まったのでメモ。


やりたいこと


  • 内部的には320x240で動いてるけど描画は640x480にしたい、みたいな状況。

  • ドットゲーで必要。

  • 各画像のSurfaceを2倍にする方法は何か違う。


コード


  • PlayerクラスはSpriteを継承したやつ。

  • SpriteGroupでdrawしてるけどSurfaceのblitでも同じ方法で行けると思います。


main.py

import pygame

from pygame.locals import *
import sys

from player import Player

def main():
pygame.init()
pygame.display.set_mode((640, 480)) # 最終的に描画したいサイズでdisplaySurface作成
pygame.display.set_caption("ゲームだぞよ")

screen = pygame.Surface((320, 240)) # 動かしたいサイズで別のSurface作成
clock = pygame.time.Clock()

playerGroup = pygame.sprite.Group()
playerGroup.add(Player(0, 0))

while True:
screen.fill((0, 0, 0))

playerGroup.update()
playerGroup.draw(screen) #別のSurfaceの方に描画する

pygame.transform.scale(screen, (640, 480), pygame.display.get_surface()) # 描画してたSurfaceの方を拡大し、その描画先をdisplaySurfaceにする

for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()

pygame.display.update()

clock.tick(60) # fps制御

if __name__ == "__main__":
main()



参考