フルスクリーン
ウィンドウをフルスクリーンにする方法です.
非常に簡単なので, スプライトのグループ化の別の方法もまとめて説明します.
ウィンドウのフルスクリーン化はキーイベントによって操作します.
import pygame from pygame.locals import * import sys SCR_RECT = Rect(0, 0, 1000, 700) class MySprite(pygame.sprite.Sprite): def __init__(self, filename, x, y, vx, vy): # デフォルトグループをセット pygame.sprite.Sprite.__init__(self, self.containers) self.image = pygame.image.load(filename).convert() colorkey = self.image.get_at((0,0)) # 左上の色を透明色に self.image.set_colorkey(colorkey, RLEACCEL) width = self.image.get_width() height = self.image.get_height() self.rect = Rect(x, y, width, height) self.vx = vx self.vy = vy def update(self): self.rect.move_ip(self.vx, self.vy) # 壁にぶつかったら跳ね返る if self.rect.left < 0 or self.rect.right > SCR_RECT.width: self.vx = -self.vx if self.rect.top < 0 or self.rect.bottom > SCR_RECT.height: self.vy = -self.vy # 画面からはみ出ないようにする self.rect = self.rect.clamp(SCR_RECT) def main(): pygame.init() screen = pygame.display.set_mode(SCR_RECT.size) pygame.display.set_caption("フルスクリーンモード") # スプライトグループを作成してスプライトクラスに割り当て group = pygame.sprite.RenderUpdates() MySprite.containers = group # スプライトを作成 python1 = MySprite("kappa3.png", 0, 0, 2, 2) python2 = MySprite("kappa3.png", 10, 10, 5, 5) python3 = MySprite("kappa3.png", 320, 240, -2, 3) clock = pygame.time.Clock() fullscreen_flag = False while True: clock.tick(60) # 60fps backImg = pygame.image.load("hakusuiko.jpg").convert() screen.blit(backImg, (0,0)) # スプライトグループを更新 group.update() # スプライトグループを描画 group.draw(screen) pygame.display.update() for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() elif event.type == KEYDOWN: if event.key == K_ESCAPE: sys.exit() elif event.key == K_F2: # F2キーでフルスクリーンモードへの切り替え fullscreen_flag = not fullscreen_flag if fullscreen_flag: screen = pygame.display.set_mode(SCR_RECT.size, FULLSCREEN, 32) else: screen = pygame.display.set_mode(SCR_RECT.size, 0, 32) if __name__ == "__main__": main()
MySpriteクラスとmain()関数のスプライトのグループ化が多少異なります.
前回はpython1,python2,python3という画像を定義したあと,
group = pygame.sprite.RenderUpdates() group.add(python1) group.add(python2) group.add(python3)
これによってグループ化を行っていました.
今回は, まずSpriteの引数にグループリストを追加させるためにpygame.sprite.Sprite.__init__()にself.containersという引数も設定します. 第二引数なのでclass内になくても大丈夫です.
group = pygame.sprite.RenderUpdates() MySprite.containers = group
これによってグループ化を行っています.
これはあらかじめスプライトのデフォルトグループを指定し, スプライトの作成と同時にグループに追加するスクリプトです.
次にフルスクリーンの設定をします.
まずmain関数にfullscreen_flagという変数にFalseを代入しておきます.
そこからキーイベントによる設定です.
event.key == K_F2:
これは, キーイベントにおいてF2がおされたならという意味です.
fullscreen_flag = not fullscreen_flag
これはTrueとFalseの変更です.
初めてこのスクリプトを実行したなら, fullscreen_flagはFalseですがこの文でTrueとなります.
if fullscreen_flag: screen = pygame.display.set_mode(SCR_RECT.size, FULLSCREEN, 32) else: screen = pygame.display.set_mode(SCR_RECT.size, 0, 32)
この文でのfullscreen_flagがTrueのときフルスクリーンになります.
フルスクリーンになっているときはfullscreen_flagはTrueなので, F2を押すとFalseになり初期化されウィンドウモードとなります.
pygame.display.set_mode()の第三引数は32bitの色とを指定しています.