Sto programmando un avventura testuale e purtroppo sto riscontrando alcuni problemi che intralciano la qualità di visualizzazione del testo dell'incipit.
import openai
import pygame
import sys
# Creiamo una lista di chiavi API
api_keys = ["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", "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", "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", "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", "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"]
# Impostiamo l'indice della chiave corrente
current_key_index = 0
# Impostiamo l'incipit della storia
incipit = "Ti svegli in una stanza sconosciuta, senza alcun ricordo di come ci sei arrivato. Ti alzi dal letto e ti guardi intorno, noti che la stanza è in uno stato di degrado avanzato, sembra che sia rimasta abbandonata per anni. \nMentre esplori la stanza, trovi una porta chiusa a chiave. Dopo aver trovato la chiave, apri la porta e ti ritrovi in un corridoio lungo e buio. In lontananza, senti delle voci. Chi sono queste persone e cosa vogliono da te? \nMentre ti avvicini alle voci, ti rendi conto che sei in un edificio abbandonato e che sei intrappolato con altre tre persone: un uomo anziano, una giovane donna e un adolescente. Insieme, dovete trovare un modo per uscire dall'edificio e scoprire cosa è successo."
# Inizializziamo la variabile per tener traccia del testo generato finora
testo_generato = incipit
# Inizializiamo pygame
screen = pygame.display.set_mode((800, 600))
# Impostiamo il titolo della finestra
pygame.display.set_caption("Se funziona godo")
# Creiamo un font per il testo
pygame.font.init()
font = pygame.font.SysFont(None, 24)
# Inizializziamo un contatore per il numero di tentat
tentativi = 0
# Inizializziamo una variabile per l'azione dell'utente
azione_utente = ""
# Creiamo una surface per il testo generato
text_surface = font.render(testo_generato, True, (255, 255, 255))
# Otteniamo la larghezza del testo
text_width = text_surface.get_size()[0]
# Iniziamo il loop principale del gioco
while True:
# Gestiamo gli eventi
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.unicode.isalpha():
azione_utente += event.unicode
elif event.key == pygame.K_BACKSPACE:
azione_utente = azione_utente[:-1]
elif event.key == pygame.K_RETURN:
# Impostiamo la chiave API corrente
openai.api_key = api_keys[current_key_index]
# Aggiungiamo l'azione selezionata al testo generato finora
testo_generato += "\n" + azione_utente
# Chiediamo a GPT-3 di continuare la storia a partire dall'azione selezionata
continuazione = openai.Completion.create(
engine="text-davinci-003",
prompt=(
f"Una volta scritta un azione, per quanto questa possa essere stramba, prosegui con la storia con un filo logico. La frase generata non si deve interrompere a metà per colpa del numero esiguo di token, anzi devi cercare in quei pochi token di completare la frase. Concludi dando un indicazione a quello che il giocatore può fare NON DEVI rompere la 4a parete:{testo_generato}\n"),
max_tokens=150,
n=1,
stop=None,
temperature=0.7,
)
tentativi += 1
# Verifica se l'utilizzo della chiave API è stato esaurito
if check_openai_usage(continuazione):
# Passiamo alla chiave successiva
current_key_index += 1
# Se siamo arrivati alla fine della lista, torniamo all'inizio
if current_key_index >= len(api_keys):
current_key_index = 0
# Reimpostiamo la variabile per l'azione dell'utente
azione_utente = ""
# Disegniamo il testo per l'incipit
text = font.render(incipit, True, (255, 255, 255))
screen.blit(text, (10, 10))
# Disegniamo il testo per il numero di tentativi
text = font.render("Tentativi: " + str(tentativi), True, (255, 255, 255))
screen.blit(text, (10, 50))
# Se la variabile per la continuazione della storia è definita, disegniamo il testo
if 'continuazione' in locals():
text = font.render(continuazione.choices[0].text, True, (255, 255, 255))
screen.blit(text, (10, 90))
# Aggiorniamo lo schermo
pygame.display.flip()
Il testo risulta sgranato e brutto a vedersi ma soprattutto il testo non va a capo anche se esce dallo schermo, come faccio?