2013-10-15 23 views
1

我想在Python中製作類似於this的遊戲(Windows上的3.3.2)。我認爲大部分編程都是相當基礎的,所以對於初學者來說,這很容易。我無法理解的是如何讓一行代碼在不變的同時保持在相同的位置(我試圖描述你擁有的糖果數量[如果你看起來這條線仍然留在同一個地方物理變化])。我知道你將不得不這樣做:如何替換上一行中已經打印的字符

candiesNbrDisplay = 'You have ' + str(candiesNbrOwned) + ' candies!' 
candiesNbrOwned = candiesNbrOwned + 1 
time.sleep(1) 

但如何更改數字沒有this

+0

在Unix上,您將使用不帶換行符(LF或NL)的CR(回車)將光標移回行的開頭,以便下一個輸出覆蓋前一個輸出。這可能也適用於Windows。 –

+0

代碼示例?沒有真正拿起你放下的東西... ELI5剛開始編程,所以... –

回答

0

工作Jonathan建議在每行的末尾使用CR。你可以通過一個額外的參數print做到這一點:

candies = 0 
while True: 
    print('You have', candies, 'candies!', end='\r') 
    time.sleep(1) 
    candies += 1 

通常,print使用NL(\n)字符,這意味着「跳到下一行」。

但是在這裏,我們告訴它使用CR(\r)來代替,這意味着「返回到當前行的開始處」。這是我們想要的。

不幸的是,這種技術只適用於命令行,而不是IDLE。所以你必須直接運行這個腳本(雙擊它的圖標)才能工作。

+0

非常感謝你!真的釘了ELI5哈哈。任何方式使其與IDLE兼容? –

+0

http://imgur.com/O2QRoWL感謝您的順便。因爲我希望在遊戲的其餘部分仍在播放的時候,遊戲的其他部分仍在運行,所以這是一個後臺過程(再次像[糖果盒](http://糖果.aniwey.net /) –

+0

我不這麼認爲,IDLE中的提示不是一個控制檯,它只是一個僞裝成一個文本框,所以它不支持這些控制代碼,但是你的用戶會運行你的程序在控制檯中,所以它不是一個主要問題。 –

0

此作品在Unix(Mac OS X的10.8.5,與Python 2.7.2):

import time 
import sys 

for i in xrange(1, 10): 
    print "\rThe number of candies is %d and the pile is growing" % i, 
    sys.stdout.flush() 
    time.sleep(1) 
print "" 

我不知道它是否會在Windows或與Python 3

相關問題