0

アイドルシェルに表示された瞬間にpygame画面に入力をkbする必要があります。アドバイスをいただければ幸いです。

このコードは主に画面ベースのより大きなプログラムから抽出されていますが、時々kbからいくつかのデータ(数値)を入力する必要があります

import sys
import pygame
from pygame.locals import *
pygame.init()

N= ''
screen = pygame.display.set_mode((600,600))
font= pygame.font.Font(None,40)
screen.fill((255,255,255))
pygame.display.flip
pygame.display.update()


def score(C,y):
    SetWnd = font.render( C,True,(0,0,255))
    screen.blit(SetWnd, (15, 100+y))
    pygame.display.update()


def start():
    while True:
        name=''

        for evt in pygame.event.get():
                if evt.type == KEYDOWN:
                    if evt.unicode.isalnum(): # unicode
                        name+=evt.unicode
                        print name,

                    elif evt.key == K_BACKSPACE:
                            name = name[:-1]
                            print name,
                    elif evt.key == K_RETURN:
                        return N
                elif evt.type == QUIT:
                    pygame.quit()
                    sys.exit()
def Pchange(c,y):
    block = font.render(N, True, (0,0,0))
    rect = block.get_rect()
    rect.move_ip(75,100 + y)
    screen.blit(block,rect)
    pygame.display.flip()



score('wind', 0)
score('elev',20)

N = start()
Pchange(N,0)
Pchange(N,20)
4

1 に答える 1

0

まず、スコアを 2 回描画します。これでうまくいくと思います。

問題は、開始機能にあります。while ループで描画または更新関数を呼び出していません。イベント foreach で、に数字を追加し、nameEnter キーが押されたときに while ループを終了します。次に、Pchange で 2 回描画しますが、関数が正しいパラメーターを使用していません。あなたが持っている:

def Pchange(c,y):
    block = font.render(N, True, (0,0,0))

'' であるグローバル N を使用しています。Nそれを修正するには、に変更する必要がありますc

次の問題は、Enter キーを押した直後にゲームが終了することです。プログラムの一部だけを貼り付けたので、そうではないかもしれません。そうである場合は、もう一度 while ループを作成し、ESC キーが呼び出されるのを待ちますpygame.quit()sys.exit()

于 2013-01-23T16:40:27.250 に答える