2010-09-06 9 views
7

मैं एक Python snake game using curses लिख रहा हूँ, लेकिन कुछ परेशानी साँप को नियंत्रित कर रहा हूँ, सांप नियंत्रित करने के लिए मेरे वर्तमान कोड मुख्य लूप के अंदर रखा और इस तरह दिखता है:आपको शाप का उपयोग करके दबाए गए अंतिम तीर कुंजी को कैसे प्राप्त किया जाता है?

while True: 
    char = screen.getch() 
    if char == 113: exit() # q 
    elif char == curses.KEY_RIGHT: snake.update(RIGHT) 
    elif char == curses.KEY_LEFT: snake.update(LEFT) 
    elif char == curses.KEY_UP: snake.update(UP) 
    elif char == curses.KEY_DOWN: snake.update(DOWN) 
    else snake.update() 
    time.sleep(0.1) 

हालांकि कोड के इलाज के लिए लगता है कुंजी को क्यू के रूप में दबाया जाता है (इसलिए जब सांप तीर-प्रेस से बाहर हो जाता है तो सांप रुक जाएगा), जबकि मैं वास्तव में इसे दबाए गए अंतिम तीर कुंजी को पुनर्प्राप्त करना चाहता हूं।

मैं दबाए गए अंतिम तीर कुंजी को कैसे पुनर्प्राप्त कर सकता हूं?

+1

पुनर्विचार अपने डिजाइन (एक 'direction' चर उपयुक्त होगा) और इस समस्या गायब हो जाता है। – You

+0

@You: जैसा कि मैं इसे समझता हूं, यह मेरी समस्या को ठीक नहीं करेगा। – Zaz

+0

यह पूरी तरह से इस बात पर निर्भर करता है कि आप अपने प्रोग्राम को कैसे लेआउट करते हैं। जैसा कि अब है, ऐसा लगता है कि आंदोलन इनपुट पर निर्भर करता है - एक और अधिक उपयुक्त निर्भरता केवल समय पर निर्भर करती है, और महत्वपूर्ण घटनाओं के लिए मतदान (गैर-अवरुद्ध), इन घटित होने पर एक चर 'दिशा' बदलना होता है। वैसे भी, मैं इसे कैसे देखता हूं। – You

उत्तर

3

सेट screen.nodelay(1):

screen.nodelay(1) 
while True: 
    char = screen.getch() 
    if char == 113: break # q 
    elif char == curses.KEY_RIGHT: snake.update(RIGHT) 
    elif char == curses.KEY_LEFT: snake.update(LEFT) 
    elif char == curses.KEY_UP: snake.update(UP) 
    elif char == curses.KEY_DOWN: snake.update(DOWN) 
    else: snake.update() 
    time.sleep(0.1) 
+1

मुझे पता चला है कि 'curses.halfdelay()' कुछ अजीब बग का कारण बन सकता है, 'screen.nodelay() '+' time.sleep() 'बेहतर काम करता है। – Zaz

संबंधित मुद्दे