#!/usr/bin/python # -*- mode: python; Encoding: utf-8; coding: utf-8 -*- # Last updated: <2017/09/16 04:25:12 +0900> u""" pi3d input keyboard with pygame sample. キーボード入力を取得してみるサンプル。 WASDキーで上下左右に動かしてみる。 pygameを使ってキーボードの状態を調べる。 ESCキーで終了する。 Windows10 x64 + Python 2.7.12 32bit + pi3d 2.21 """ from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import pi3d import pygame # ウインドウ生成 display = pi3d.Display.create(w=640, h=480, frames_per_second=60, use_pygame=True) # シェーダーを生成。uv_flatは照明関係の計算をしない。 shader = pi3d.Shader("uv_flat") # カメラを平行投影に camera = pi3d.Camera(is_3d=False) # テクスチャを読み込み tex = pi3d.Texture("airplane_01_64x64.png", mipmap=False) # スプライトを生成 x, y, z = 0.0, 0.0, 20.0 spr = pi3d.ImageSprite(tex, shader, w=64, h=64, x=x, y=y, z=z) # スプライトをDisplayに登録 display.add_sprites(spr) # キーボード入力を取得するためにpygameを初期化 pygame.init() pikeys = pi3d.Keyboard() print(pikeys) # メインループ while display.loop_running(): quit_fg = False spd = 6.0 pygame.event.pump() # pygameがイベントを処理できるようにする # キー入力で座標を変化させる keys = pygame.key.get_pressed() if keys[pygame.K_w] or keys[pygame.K_UP]: spr.translateY(spd) # スプライトのy座標を変化 if keys[pygame.K_s] or keys[pygame.K_DOWN]: spr.translateY(-spd) if keys[pygame.K_a] or keys[pygame.K_LEFT]: spr.translateX(-spd) # スプライトのx座標を変化 if keys[pygame.K_d] or keys[pygame.K_RIGHT]: spr.translateX(spd) if keys[pygame.K_ESCAPE]: quit_fg = True pikey = pikeys.read() if pikey == 27: # ESC key quit_fg = True if quit_fg: # ループを抜けて終了 display.destroy() break