2014-03-06 114 views
1

所以我重新創建了一個小寵物黃色的一部分(儘量使它儘可能地接近原始)並且爲了2天,我正在尋找一種聰明而高效的方式來呈現和在文本框中一次顯示一個字符串,就像小精靈遊戲一樣!(順便說一句,我使用的是pygame和python)。有沒有人知道有什麼辦法實現這一目標?我嘗試了很多東西,但是一次渲染一個角色時,它們之間的空間總是不足。 對不起,很長的問題! 乾杯, 亞歷克斯蟒蛇一次顯示一個字符

(編輯)感謝您的興趣傢伙! 我不知道,如果我知道正確的方式顯示在這裏我的代碼,如果我應該 複製粘貼在這裏或上傳的保管箱或其他地方..

(EDIT 2)只是爲了澄清,我使用字體大小爲28,所以我現在試圖渲染字符的方式是製作一個列表,其中每個元素都有格式(character_to_render,x_pos_to_render,y_pos_to_render)。下一個字符是(character2_to_render,x_pos_to_render + 28,y_pos_to_render)。但是用這種方式來解決問題,在一些角色和其他角色之間留下的空間不夠充足。

(編輯3):謝謝你所有的答案傢伙!在仔細觀察仿真器之後,我注意到渲染字符之間的間距不夠明顯。所以我會用我的項目忽略這個問題Andover!歡呼,祝你有美好的一天!

+1

你能告訴我們你試過的東西嗎?也許解決方案只是對這些事情之一的簡單修改。 –

+0

對!給我幾分鐘,使代碼看起來更清晰 –

+2

我可能會使用一個發電機,並嵌入睡眠,以便一個簡單的迭代將產生我想要的,包括時間間隔... 但我' m不熟悉pygame –

回答

1

好吧,這是迄今爲止我所提出的最佳解決方案。

你希望能夠顯示一個字符串,但你只想一次做一個字符。使用字符串,你可以做一些像string[0:len(string)]這將返回整個字符串。所以我在想什麼,如果我錯了,請糾正我,但是說你降低FPS幾秒鐘,或者如果你不想這樣做,因爲你仍然想接受用戶輸入以跳過文本。

所以你有你的while循環,並檢查是否顯示文本。如果是這樣,您想要向顯示在屏幕上的字符串添加一個新字母。我會建議使用屏幕上顯示的文本類。

surf = pygame.Surface(80, 80) 
Text = TextBoxString("Hello World") 
font = pygame.font.SysFont("Arial", 18) 
while true: 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      exit() 
     elif event.type == MOUSEBUTTONUP: 
      Text.showAll() 
    surf.fill((0,0,0)) 
    text = font.render(Text.currentString, (0,0,0)) 
    surf.blit(text, (0,0)) 
    Text.addOn() 


class TextBoxString: 
    def __init__(self, string): 
     #string that you will be dealing with 
     self.totalString = string 
     self.currentString = string[0] 
     #how many characters you want shown to the screen 
     self.length = 0 
     #this means that every four times through your  
     #while loop a new char is displayed 
     self.speed = 4 
    def addOn(self) #adds one to the loop num and then checks if the loop num equals the speed 
     self.loopNum += 1 
     if self.loopNum == self.speed: 
      self.length += 1 
      self.loopNum=0 
     self.currentString = totalString[0: self.length] 
    def showAll(self): 
     self.length = len(self.totalString) 
     self.currentString = [0: self.length] 
+0

我真的很欣賞你穿上這個男人的時間:)我的工作方式也很好,工作也更好!乾杯 –