2011-12-30 20 views
6

मैं कुछ हद तक पर्ल में शुरुआती हूं (यहां लोगों की तुलना में)। मैं कमांड प्रॉम्प्ट के माध्यम से कई चीजों को करने के लिए प्रोग्राम लिखने में सक्षम होने के लिए पर्याप्त जानता हूं। एक बिंदु पर, मैंने एक कमांड प्रॉम्प्ट गेम लिखने का फैसला किया जिसने एक भूलभुलैया का निर्माण किया और मुझे इसे हल करने दिया। गुणवत्ता ग्राफिक्स के अलावा, एकमात्र चीज जो गायब थी, वह मुझे भूलभुलैया में किए गए हर कदम के बाद प्रवेश दबाए बिना WASD नियंत्रणों का उपयोग करने की क्षमता थी।मैं पर्ल एक समय में एक चरित्र एसटीडीआईएन से इनपुट कैसे ले सकता हूं?

मेरा गेम काम करने के लिए, मैं पर्ल को एक इनपुट को एसटीडीआईएन से इनपुट के रूप में लेना चाहता हूं, बिना मुझे इनपुट इनपुट को अलग करने के लिए कुछ उपयोग करने की आवश्यकता के बिना, डिफ़ॉल्ट \n। मैं इसे कैसे पूरा करूं?

मैंने ऑनलाइन एक सरल उत्तर और मेरे पास एक पुस्तक खोजने की कोशिश की है, लेकिन मुझे कुछ भी नहीं मिला। मैंने $/="" सेट करने का प्रयास किया, लेकिन यह सभी इनपुट को बाईपास करना प्रतीत होता था। मुझे लगता है कि मेरे प्रश्न का एक बहुत ही सरल जवाब हो सकता है, लेकिन मुझे भी डर है कि यह असंभव हो सकता है।

इसके अलावा, $/="" वास्तव में बाईपास इनपुट करता है, या यह इतनी जल्दी इनपुट लेता है कि यह मानता है कि कोई इनपुट नहीं है यदि मैं पहले से ही कुंजी दबा नहीं रहा हूं?

+2

[टर्म :: रीडकी] (http://search.cpan.org/perldoc?Term::ReadKey) – ikegami

+0

@ikegami बिल्कुल सही! – PhiNotPi

+0

संभावित डुप्लिकेट [मैं विंडोज पर पर्ल का उपयोग कर एसटीडीआईएन से एक ही चरित्र कैसे पढ़ूं?] (Https://stackoverflow.com/questions/2021482/how-do-i-read-a-single-character-from-stdin उपयोग करना-पर्ल-ऑन-विंडोज़) –

उत्तर

4

IO::Prompt इस्तेमाल किया जा सकता: $/ = '' निर्धारित करने से संबंधित

#!/usr/bin/env perl 

use strict; 
use warnings; 

use IO::Prompt; 

my $key = prompt '', -1; 
print "\nPressed key: $key\n"; 

perldoc -v '$/' से प्रासंगिक अंश:

इनपुट रिकॉर्ड विभाजक, न्यू लाइन डिफ़ॉल्ट रूप से। यह पर्ल के पर विचार करता है कि "रेखा" क्या है। सहित रिक्त रेखाओं का इलाज करते समय अमान्य आरएस वैरिएबल की तरह काम करता है यदि शून्य स्ट्रिंग पर सेट किया गया है (खाली पंक्ति में कोई रिक्त स्थान या टैब नहीं हो सकता है)।

1

यदि आप * निक्स का उपयोग कर रहे हैं, तो आपको Curses उपयोगी मिलेगा।

इसमें एक गेट विधि है जो आप चाहते हैं।

Term::TermKey भी एक संभावित समाधान की तरह दिखता है।

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

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