Как создать систему текстовых полей для текстовой приключенческой игры? - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь создать текстовую приключенческую игру для моего A level Computing NEA. Мне нужна система, в которой текст будет отображаться на экране по одному символу за раз и будет оставаться на экране, пока не будет нажата клавиша ввода. У меня нет большого опыта работы с pygame, поэтому я не уверен, как я мог создать что-то подобное.

Это код, который у меня есть:

import pygame, sys, random, select, os, time
from pygame.locals import *
pygame.init()

BLACK = (0,0,0)
WHITE = (255,255,255)
RED = (255,0,0)
GREEN = (0,255,0)
BLUE = (0,0,255)

size = (800,800)
screen = pygame.display.set_mode(size)
pygame.display.set_caption('Game')
done = False
clock = pygame.time.Clock()

#main program loop

font = pygame.font.SysFont('Calibri',100,True,False)

while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    screen.fill(WHITE)
    text1 = font.render('Welcome.',True,BLACK)
    screen.blit(text1,[200,200])
    pygame.display.flip()
    clock.tick(120)

1 Ответ

0 голосов
/ 03 августа 2020

Чтобы добавить по одному символу за раз, создайте таймер (я использую threading.Timer), чтобы добавлять по одному символу за раз к строке, которую вы хотите преобразовать. Затем скопируйте это предложение, добавив новый символ. Примерно так:

def Add_Character(Text=[]):
    global sentence
    sentence=''
    for letter in Text:
        timer=threading.Timer(1.0,DoNothing)
        timer.start()
        while timer.isAlive():
        pass
        sentence=sentence+letter
    

Теперь вы показываете это предложение на экране. Что касается нажатия клавиши ввода, используйте pygame.keys, чтобы проверить нажатие клавиши ввода. Когда нажата клавиша ввода, я копировал часть фона поверх текста, чтобы «удалить» его.

...