私は pygame/python で RPG に取り組んでいます。チャーを作りました。プレーヤーをカスタマイズできるクリエーター。今、画面上で名前を入力する方法を探しています。ボックスを作成したくありません。ユーザーが特定の領域に入力しているものを印刷するだけです(写真を参照)。手伝ってくれてありがとう。
http://ubuntuone.com/3HdzOKroopUEf1YxqNnbFM <-----写真 (リンクからのみ青く見える)
私は pygame/python で RPG に取り組んでいます。チャーを作りました。プレーヤーをカスタマイズできるクリエーター。今、画面上で名前を入力する方法を探しています。ボックスを作成したくありません。ユーザーが特定の領域に入力しているものを印刷するだけです(写真を参照)。手伝ってくれてありがとう。
http://ubuntuone.com/3HdzOKroopUEf1YxqNnbFM <-----写真 (リンクからのみ青く見える)
EzText を使用することもできます。基本的にFRJAが説明することを行うモジュールです。「pygame text input」をグーグルで検索すると、他にもたくさんのモジュールがあります。EzText のサンプル コードは次のとおりです。
# EzText example
from pygame.locals import *
import pygame, sys, eztext
def main():
# initialize pygame
pygame.init()
# create the screen
screen = pygame.display.set_mode((640,240))
# fill the screen w/ white
screen.fill((255,255,255))
# here is the magic: making the text input
# create an input with a max length of 45,
# and a red color and a prompt saying 'type here: '
txtbx = eztext.Input(maxlength=45, color=(255,0,0), prompt='type here: ')
# create the pygame clock
clock = pygame.time.Clock()
# main loop!
while 1:
# make sure the program is running at 30 fps
clock.tick(30)
# events for txtbx
events = pygame.event.get()
# process other events
for event in events:
# close it x button si pressed
if event.type == QUIT: return
# clear the screen
screen.fill((255,255,255))
# update txtbx
txtbx.update(events)
# blit txtbx on the sceen
txtbx.draw(screen)
# refresh the display
pygame.display.flip()
if __name__ == '__main__': main()
最近、テキストの挿入をさらに簡単にする別のモジュールを作成しました。オブジェクトを作成し、TextInput
ゲームのフレームごとにイベントをフィードし、最後に を使用してレンダリングされたサーフェスを取得しますget_surface()
。
これを使用する方法を示すサンプル プログラムを次に示します。
import pygame_textinput # Import the textinput-module
import pygame
pygame.init()
# Create TextInput-object
textinput = pygame_textinput.TextInput()
screen = pygame.display.set_mode((1000, 200))
clock = pygame.time.Clock()
while True:
screen.fill((225, 225, 225))
events = pygame.event.get()
for event in events:
if event.type == pygame.QUIT:
exit()
# Feed it with events every frame
textinput.update(events)
# Blit its surface onto the screen
screen.blit(textinput.get_surface(), (10, 10))
pygame.display.update()
clock.tick(30)
ユーザーが を押した後にユーザー入力を処理する場合は、メソッドが返さreturn
れるまで待ちます。update()
True
if textinput.update(events):
foo()
より詳細な情報とソース コードは [my github page]( my github page .