0

私は現在、画面にメッセージを描画し、フレームごとに1文字追加するpygameを使用して関数を作成しています(つまり、赤い10月の狩り)。元の文字列から徐々に大きなスライスを単純にコピー (または渡す) できることはわかっていますが、リソースを大量に消費することはわかっています。これを行うより良い方法はありますか?

徐々に大きくなるスライスを使用するコード:

def full_screen_dialog_tt(thesurface, thefont, theclock, message, thebeep):
 i = 0
 while(i < len(message)): # Initialize the string display
  theclock.tick(60)
  thesurface.fill((0, 0, 0))
  thesurface.blit(thefont.render(message[i]+"_"))
  pygame.display.flip()
  thebeep.play()
 while(1): # Whole string is here now
  theclock.tick(60)
  for event in pygame.events.get():
   if event.type == MOUSEBUTTONDOWN: return
4

4 に答える 4

4

(テキストのフェードインのために)意図的にゲームの速度を落としている場所では、それは本当に重要ですか?文字列全体を渡し、表示ルーチンを変更して、すべてのフレームにもう1文字を表示することができます。

于 2010-07-27T17:05:40.657 に答える
1

背景をクリアせずに、文字を1つずつずらして印刷することはできませんか? スライスを使用してキャラクターを取得できます。

于 2010-07-27T17:12:09.183 に答える
1

screen利用可能なオブジェクトがあると仮定すると、これはうまくいくかもしれません:

import time
text = 'The Hunt for Red October'
myfont = pygame.font.SysFont("arial", 16)
for index, ch in enumerate(text): 
    letter = myfont.render(ch, True, (0, 0, 0), (255, 255, 255))
    screen.blit(letter, (index * 20, 20))
    time.sleep(1)
于 2010-07-27T17:14:16.707 に答える
-2

インデックスを使用して、文字列から1文字にアクセスできます。

>>> s = 'string'
>>> s[2]
'r'
于 2010-07-27T17:06:23.253 に答える