トップページ -> データベース研究スタート -> Windows でソフトウエアのインストールと設定 -> pygame を使ってみる
[サイトマップへ]  

pygame を使ってみる

pygame は2次元ゲームのフレームワーク.Python で動く. このWebページでは,pygame の次の機能を試してみる.

ここではPython 処理系を使う.

Anacondaに入っている開発環境 spyder を使うのが簡単.


前もって準備しておくこと


pygame で2次元のグラフィックス,イベント

spyder の起動

  1. spyderを起動する.

    Windows のスタートメニュー「Anaconda3」のにある.

  2. spyder の画面が開くので確認.

    左側がエディタになっている.上に実行ボタンがある

画面(ウインドウ)を開く

  1. spyder で次の Python プログラムを実行

    エディタの画面にコピー&ペーストして,実行ボタンをクリック.

    import os, sys
    import pygame
    from pygame.locals import *
    class PyManMain:
        def __init__(self, width=640,height=480):
            pygame.init()
            self.width = width
            self.height = height
            self.screen = pygame.display.set_mode((self.width, self.height))
        def MainLoop(self):
            while 1:
                for event in pygame.event.get():
                    if event.type == pygame.QUIT: 
                        sys.exit()
    
    MainWindow = PyManMain()
    MainWindow.MainLoop()
    

  2. 黒いだけの画面が開く. 右上の「x」を1回だけクリックして終了.(ウインドウは消えないが,プログラムは止まる

■ 演習問題: spyder を起動し、上の手順を行いなさい.

直線

  1. spyder で次の Python プログラムを実行

    エディタの画面にコピー&ペーストして,実行ボタンをクリック.

    import os, sys
    import pygame
    from pygame.locals import *
    class PyManMain:
        def __init__(self, width=640,height=480):
            pygame.init()
            self.width = width
            self.height = height
            self.screen = pygame.display.set_mode((self.width, self.height))
        def MainLoop(self):
            pygame.draw.line(self.screen, (0,95,0), (0,0), (80,80), 5)
            pygame.display.update()
            while 1:
                for event in pygame.event.get():
                    if event.type == pygame.QUIT: 
                        sys.exit()
    
    MainWindow = PyManMain()
    MainWindow.MainLoop()
    

  2. 右上の「x」を1回だけクリックして終了.(ウインドウは消えないが,プログラムは止まる

■ 演習問題: 「(0,95,0)」を書き換えて、を変えてみなさい. 実行ボタンを押して確認すること

■ 演習問題: 「(0,0), (80,80)」を書き換えて、を変えてみなさい.実行ボタンを押して確認すること

四角形

  1. spyder で次の Python プログラムを実行

    エディタの画面にコピー&ペーストして,実行ボタンをクリック.

    import os, sys
    import pygame
    from pygame.locals import *
    class PyManMain:
        def __init__(self, width=640,height=480):
            pygame.init()
            self.width = width
            self.height = height
            self.screen = pygame.display.set_mode((self.width, self.height))
        def MainLoop(self):
            pygame.draw.rect(self.screen,(0,80,0),Rect(10,10,80,50),5)
            pygame.display.update()
            while 1:
                for event in pygame.event.get():
                    if event.type == pygame.QUIT: 
                        sys.exit()
    
    MainWindow = PyManMain()
    MainWindow.MainLoop()
    

  2. 右上の「x」を1回だけクリックして終了.(ウインドウは消えないが,プログラムは止まる

■ 演習問題: 「(0,80,0)」を書き換えて、を変えてみなさい.実行ボタンを押して確認すること

■ 演習問題: 「(10,10,80,50)」を書き換えて、を変えてみなさい.実行ボタンを押して確認すること

楕円

  1. spyder で次の Python プログラムを実行

    エディタの画面にコピー&ペーストして,実行ボタンをクリック.

    import os, sys
    import pygame
    from pygame.locals import *
    class PyManMain:
        def __init__(self, width=640,height=480):
            pygame.init()
            self.width = width
            self.height = height
            self.screen = pygame.display.set_mode((self.width, self.height))
        def MainLoop(self):
            pygame.draw.ellipse(self.screen,(0,100,0),(50,50,200,100))
            pygame.display.update()
            while 1:
                for event in pygame.event.get():
                    if event.type == pygame.QUIT: 
                        sys.exit()
    
    MainWindow = PyManMain()
    MainWindow.MainLoop()
    

  2. 右上の「x」を1回だけクリックして終了.(ウインドウは消えないが,プログラムは止まる

■ 演習問題: 「(0,100,0)」を書き換えて、を変えてみなさい.実行ボタンを押して確認すること

■ 演習問題: 「(50,50,200,100)」を書き換えて、を変えてみなさい.実行ボタンを押して確認すること

テキスト

  1. spyder で次の Python プログラムを実行

    エディタの画面にコピー&ペーストして,実行ボタンをクリック.

    import os, sys
    import pygame
    from pygame.locals import *
    class PyManMain:
        def __init__(self, width=640,height=480):
            pygame.init()
            self.width = width
            self.height = height
            self.screen = pygame.display.set_mode((self.width, self.height))
        def MainLoop(self):
            font = pygame.font.Font(None, 55)   
            text = font.render("hello, world", True, (255,255,255))  
            self.screen.blit(text, [20, 100])
            pygame.display.update()
            while 1:
                for event in pygame.event.get():
                    if event.type == pygame.QUIT: 
                        sys.exit()
    
    MainWindow = PyManMain()
    MainWindow.MainLoop()
    

  2. 右上の「x」を1回だけクリックして終了.(ウインドウは消えないが,プログラムは止まる

■ 演習問題: 「(255,255,255)」を書き換えて、を変えてみなさい.実行ボタンを押して確認すること

■ 演習問題: 「hello,world」を書き換えて、表示されるテキストを変えてみなさい.実行ボタンを押して確認すること


pygame でイベント処理

キーボードの矢印キー(上,下,右,左)

  1. spyder で次の Python プログラムを実行

    エディタの画面にコピー&ペーストして,実行ボタンをクリック.

    import os, sys
    import pygame
    from pygame.locals import *
    class PyManMain:
        def __init__(self, width=640,height=480):
            pygame.init()
            self.width = width
            self.height = height
            self.screen = pygame.display.set_mode((self.width, self.height))
        def MainLoop(self):
            x = 100
            y = 200
            while 1:
                pygame.display.update()   
                pygame.time.wait(30)
                pygame.draw.circle(self.screen, (0, 200, 0), (x, y), 5)
                for event in pygame.event.get():
                    if event.type == pygame.QUIT: 
                        sys.exit()
                    if event.type == KEYDOWN:
                        if event.key == K_ESCAPE:
                            pygame.quit()
                            sys.exit()
                        if event.key == K_LEFT:
                            x = x - 5
                        if event.key == K_RIGHT:
                            x = x + 5
                        if event.key == K_UP:
                            y = y - 5
                        if event.key == K_DOWN:
                            y = y + 5
    
    MainWindow = PyManMain()
    MainWindow.MainLoop()
    

  2. 起動したら,矢印キーを連打してみる (押しっぱなしではイベントが発生しない.連打)

  3. 右上の「x」を1回だけクリックして終了.(ウインドウは消えないが,プログラムは止まる

■ 演習問題: 上の手順を行いなさい.