2016-11-10 86 views
1

所以,我試圖做一個二十一點遊戲。一個非常簡單的,如果我可以補充。使功能睡眠,直到完成另一個功能

我的代碼目前看起來是這樣的:

def cmd_blackjack(message): 
    playblackjack(message, player=True) 

def dealcard(): 
    card = random.randrange(1, 11) 
    return card 

def dealhand(message, player=False, dealer=False): 
    card1 = dealcard() 
    card2 = dealcard() 
    if player: 
     client.send_message(message.channel, 
           'BLACKJACK: Your cards: %s and %s \n Type !hitme for more cards or !stay to stay' % (card1, card2)) 
    if dealer: 
     client.send_message(message.channel, 
           "BLACKJACK: Dealer's cards: %s %s" % (card1, card2)) 
    return card, card2 

def playblackjack(message, player=False, dealer=False): 
    dealhand(player) 

而這差不多就是我試圖archieve:

def playblackjack(message, player=False, dealer=False): 
    dealhand(player) 
    // This is when the player has to input !hitme to get more cards 
    if not playerhastypedhitme in 300 secs: 
     return 

    dealhand(player=False, dealer=True) 
    // code continues 

所以基本上,我需要找出一個(非例如,我知道我可以通過列表來完成這項工作),以使該功能等待用戶輸入。就像創建另一個函數一樣,向這個函數發送'OK,continue'消息。

我知道這可能已經前已問,這只是在搜索方面很難描述我要完成

+0

http://stackoverflow.com/questions/1335507/keyboard-input-with-timeout-in-python – technicalbloke

+0

「_I知道我可以列出這樣做,對example_」 。你能告訴我們你是如何用列表完成的嗎?這可能是一個很好的起點。 – Kevin

+0

我沒有嘗試在這個特定的東西上使用列表,但我在之前的編碼考察中使用過它們,當時我更加愛好業餘時間。基本上,一個功能完成後,它會附加一個數字列表,然後另一個函數檢查該列表是否有一個數字.. 現在,當我想到它,我不知道我會在這裏使用它,嘿。 – user3553653

回答

2

你不需要睡覺什麼。如果我理解正確,你只是想等待用戶輸入。

Python的input()函數完全適合您。

+0

那麼如果用戶在300秒內沒有輸入任何內容,那麼如何讓'input'返回? – Kevin

+0

我能想到的唯一方法就是使用線程,但我相信你不想去那裏。我發現這:http://stackoverflow.com/questions/2933399/how-to-set-time-limit-on-input,和平臺無關的方式確實使用線程。這取決於你決定是否值得。 – joaquinlpereyra

+0

謝謝,但我沒有弄清楚輸入如何在這裏工作。睡覺並不重要,我只想首先看到這個工作。所以這就像,如果輸入('!hitme')? – user3553653