Pygameを使って文字の拡大縮小をしてみよう
今回は文字の拡大縮小をやってみましょう。
文字の拡大縮小は、あらかじめフォントサイズを指定したフォントオブジェクトをリストに格納して、それを順番に表示することによって実現します。
文字を拡大するプログラム
以下のプログラムは、フォントサイズを指定した範囲で1ピクセルずつ増やしていきます。
フォントを変えながら画面に文字列を重ねていくので、ベース画面の初期化は必要です。
また、今回は3重ループの中からプログラムを終了するため、sys.exit()を使っています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
### インポート import sys import pygame from pygame.locals import * ### モジュール初期化 pygame.init() ### 画面設定 surface = pygame.display.set_mode((640,400)) ### 文字設定 fonts = [] for size in range(8, 113): fonts.append(pygame.font.Font("/Windows/Fonts/meiryo.ttc", size)) ### 無限ループ while True: ### 文字リスト分ループ for font in fonts: ### 文字列設定(リスト) text = font.render("Hello World", True, (255,255,255)) ### ベース画面初期化 surface.fill((0,0,0)) ### テキスト画面表示 surface.blit(text, (10,115)) ### 画面更新 pygame.display.update() ### 一定時間停止 pygame.time.wait(50) ### イベント処理 for event in pygame.event.get(): if event.type == KEYDOWN and event.key == K_ESCAPE: ### 終了処理 pygame.quit() sys.exit() |
プログラムを実行すると、以下のように文字が徐々に大きくなっていきます。
文字列を画面の中央で拡大するプログラム
今度は画面の中央から文字を拡大していくプログラムです。
フォントのサイズを変えても画面の中央になるように、フォントのサイズごとに文字列のサイズを確認して、位置を調整しています。
font.size(文字列)を使うと指定した文字列のサイズが、リスト(横, 縦)で戻されます。
また、複数回使う値は定数にしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
### インポート import sys import pygame from pygame.locals import * ### 定数 WIDTH = 640 HEIGHT = 400 MESSAGE = "Hello World" ### モジュール初期化 pygame.init() ### 画面設定 surface = pygame.display.set_mode((WIDTH,HEIGHT)) ### 文字設定 fonts = [] for size in range(8, 113): fonts.append(pygame.font.Font("/Windows/Fonts/meiryo.ttc", size)) ### 無限ループ while True: ### 文字リスト分ループ for font in fonts: ### 文字列設定(リスト) text = font.render(MESSAGE, True, (255,255,255)) ### 文字列サイズ取得 pos = font.size(MESSAGE) ### ベース画面初期化 surface.fill((0,0,0)) ### テキスト画面表示 surface.blit(text, (int((WIDTH-pos[0])/2),int((HEIGHT-pos[1])/2))) ### 画面更新 pygame.display.update() ### 一定時間停止 pygame.time.wait(50) ### イベント処理 for event in pygame.event.get(): if event.type == KEYDOWN and event.key == K_ESCAPE: ### 終了処理 pygame.quit() sys.exit() |
プログラムを実行すると、以下のように文字が画面中央で徐々に大きくなっていきます。
文字列を画面の中央で拡大縮小するプログラム
最後に拡大縮小するプログラムを作ってみましょう。
上記のプログラムに、フォントサイズを小さくしていくフォントオブジェクトをリストに追加しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
### インポート import sys import pygame from pygame.locals import * ### 定数 WIDTH = 640 HEIGHT = 400 MESSAGE = "Hello World" MIN_SIZE = 8 MAX_SIZE = 113 ### モジュール初期化 pygame.init() ### 画面設定 surface = pygame.display.set_mode((WIDTH,HEIGHT)) ### 文字設定 fonts = [] for size in range(MIN_SIZE, MAX_SIZE): fonts.append(pygame.font.Font("/Windows/Fonts/meiryo.ttc", size)) for size in range(MAX_SIZE, MIN_SIZE, -1): fonts.append(pygame.font.Font("/Windows/Fonts/meiryo.ttc", size)) ### 無限ループ while True: ### 文字リスト分ループ for font in fonts: ### 文字列設定(リスト) text = font.render(MESSAGE, True, (255,255,255)) ### 文字列サイズ取得 pos = font.size(MESSAGE) ### ベース画面初期化 surface.fill((0,0,0)) ### テキスト画面表示 surface.blit(text, (int((WIDTH-pos[0])/2),int((HEIGHT-pos[1])/2))) ### 画面更新 pygame.display.update() ### 一定時間停止 pygame.time.wait(50) ### イベント処理 for event in pygame.event.get(): if event.type == KEYDOWN and event.key == K_ESCAPE: ### 終了処理 pygame.quit() sys.exit() |
プログラムを実行すると、以下のように文字が中央で徐々に大きくなったあと小さくなっていきます。