ekterya.com

जावा में स्टोन, पेपर और कैंची खेल कैसे बनायें

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

चरणों

Video: जावा ट्यूटोरियल - प्रकरण 9: रॉक, कागज, कैंची सिम्युलेटर

1
मुख्य वर्ग बनाएं और इसे कॉल करें PiedraPapelTijeras. यह वह क्लास होगा जिसमें हम गेम लिखेंगे। आप इसे किसी अन्य तरीके से नाम देने का विकल्प चुन सकते हैं खेल या मुख्य. निर्माता के लिए और मुख्य विधि के लिए विधि घोषणाएं लिखें।

सार्वजनिक वर्ग स्टोनपॉयरशोप्स {सार्वजनिक स्टोन पपरस्कॉर्स () {} सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {}}
  • 2
    हाथ इशारों (पत्थर, कागज या कैंची) के लिए एक गणन बनाएं हम तार का उपयोग रॉक कागज कैंची का प्रतिनिधित्व करने के सकता है, लेकिन एक गणन हमें हमारे निरंतर, बेहतर डिजाइन में शुमार परिणामों का उपयोग कि जिसका अर्थ है पूर्वपरिभाषित करने की अनुमति देता है। हम अपनी गणना प्रकार को कॉल करेंगे I चाल मूल्यों के साथ ROCA, भूमिका, और कैंची.

    निजी एंमा ले जाएँ (रॉक, पेपर, स्किसर)
  • 3
    दो निजी वर्ग बनाएँ उपयोगकर्ता और कंप्यूटर. ये कक्षाएं खेल में हमारे खिलाड़ियों का प्रतिनिधित्व करेंगे। कक्षा उपयोगकर्ता वह वर्ग होगा जो उपयोगकर्ता को रॉक, पेपर या कैंची के बीच चुनने के लिए कहता है, इसलिए हमें एक विधि लिखना चाहिए getMove (). कक्षा कंप्यूटर आपके पास एक विधि भी होनी चाहिए getMove () ताकि कंप्यूटर इसकी चाल भी कर सके। बाद में इन्हें लागू करने के लिए हम इन तरीकों में प्लेसहोल्डर्स को स्थान देंगे। कक्षा उपयोगकर्ता वस्तु को कॉन्फ़िगर करने के लिए एक निर्माता की आवश्यकता होगी स्कैनर जो उपयोगकर्ता के इनपुट को ले जाएगा हम इसे डाल देंगे स्कैनर उपयोगकर्ता के लिए एक निजी क्षेत्र के रूप में, और फिर हम इसे कन्स्ट्रक्टर में शुरू कर देंगे। हम कक्षा का उपयोग कैसे कर रहे हैं स्कैनर, हमें अपने कोड के शीर्ष पर एक आयात घोषणा लिखने की जरूरत है कक्षा कंप्यूटर इसमें कन्स्ट्रक्टर की आवश्यकता नहीं है, इसलिए हमें एक लिखने की आवश्यकता नहीं होगी - जब हम ऑब्जेक्ट को शुरू करते हैं कंप्यूटर, हम बस डिफ़ॉल्ट रूप से कन्स्ट्रक्टर को बुला रहे होंगे। यह कैसे हमारी कक्षा अब दिखता है PiedraPapelTijeras:

    जावा आयात करते हैं-सार्वजनिक वर्ग PiedraPapelTijeras enum {निजी ले जाएँ {रोका, कागज, कैंची} निजी वर्ग उपयोगकर्ता {निजी सार्वजनिक inputScanner स्कैनर उपयोगकर्ता () {inputScanner = नया स्कैनर (System.in) -} सार्वजनिक getMove ले जाएँ () {: इस métodoreturn अशक्त लागू सार्वजनिक getMove ले जाएँ () {// TODO -}} सार्वजनिक PiedraPapelTijeras () {} public static void (String [] args) निजी वर्ग कंप्यूटर} -: {// `TODO लागू इस métodoreturn अशक्त} {}}
  • 4
    विधि लिखें getMove () कक्षा के लिए कंप्यूटर. यह विधि एक वापस आ जाएगी चाल यादृच्छिक। हम की गणना की एक सरणी मिल सकती है चाल विधि बुला रही है मान (): स्थानांतरित करें। गुण (). का एक यादृच्छिक गणना का चयन करने के लिए चाल मूल्यों के इस सरणी में हमें एक बेतरतीब इंडेक्स उत्पन्न करने की आवश्यकता है जो कि 0 के बराबर है और हमारी सरणी के मूल्यों की लंबाई। ऐसा करने के लिए हम विधि का उपयोग कर सकते हैं nextInt () कक्षा का बिना सोचे समझे, जिसे हम से आयात करना चाहिए java.util. यादृच्छिक सूचकांक प्राप्त करने के बाद, हम वापस कर सकते हैं चाल मूल्यों की हमारी सरणी के उस सूचकांक के लिए

    सार्वजनिक getMove ले जाएँ () {ले जाएँ [] चालें = Move.values ​​() - रैंडम यादृच्छिक = नई यादृच्छिक () - पूर्णांक सूचकांक = random.nextInt (moves.length) चालें -RETURN [सूचकांक] -}
  • 5
    विधि लिखें getMove () कक्षा के लिए उपयोगकर्ता. यह विधि एक वापस आ जाएगी चाल उपयोगकर्ता ने क्या दर्ज किया है हम मान लेंगे कि उपयोगकर्ता लिख ​​देगा रॉक, कागज या कैंची। सबसे पहले, हमें उपयोगकर्ता को इनपुट का अनुरोध करना होगा: System.out.print ("रॉक, कागज या कैंची?"). तब हम विधि का उपयोग करेंगे अगले लाइन () ऑब्जेक्ट का स्कैनर स्ट्रिंग के रूप में उपयोगकर्ता के इनपुट को लेने के लिए अब हमें जांचना होगा कि उपयोगकर्ता ने एक वैध चाल दर्ज कर ली है, लेकिन हम वर्तनी के बारे में सहिष्णु हो सकते हैं। इसलिए हम केवल तभी जांचेंगे जब उपयोगकर्ता जो प्रवेश करेगा वह पहला अक्षर है आर (रॉक के लिए), ए पी (कागज के लिए) या एक टी (कैंची के लिए), चाहे वे अपरकेस या लोअरकेस हों या नहीं, क्योंकि हम विधि का उपयोग करेंगे toUpperCase () कक्षा का तार सभी उपयोगकर्ता प्रविष्टियों को कैपिटल करने के लिए यदि उपयोगकर्ता गलत प्रविष्टि में प्रवेश करता है, तो हम उसे फिर से दर्ज करने के लिए कहेंगे। उसके बाद, उपयोगकर्ता ने जो प्रवेश किया है उसके आधार पर, हम एक संबंधित खेल वापस करेंगे।

    सार्वजनिक हटो getMove () {// उपयोगकर्ता के लिए अनुरोध करें System.out.print ("रॉक, कागज या कैंची? ") - // प्राप्त इनपुट usuarioString usuarioInput = inputScanner.nextLine () - usuarioInput = usuarioInput.toUpperCase () - चार firstLetter = usuarioInput.charAt (0) -यदि (firstLetter == `आर` || firstLetter == `पी `|| firstLetter ==` t `) {// उपयोगकर्ता एक válidoswitch डेटा (firstLetter) में प्रवेश किया है {case` आर `: वापसी Move.ROCA-केस` पी `: वापसी Move.PAPEL-केस` टी `: वापसी ले जाएँ .TIJERAS -}} // उपयोगकर्ता ने एक मान्य डेटा दर्ज नहीं किया है पुनः अनुरोध करें। वापसी प्राप्त करें () -}
  • 6
    एक विधि लिखें प्लेगेन () कक्षा के लिए उपयोगकर्ता. उपयोगकर्ता को बार-बार खेलने में सक्षम होना चाहिए यह निर्धारित करने के लिए कि उपयोगकर्ता फिर से खेलना चाहता है, हमें एक विधि लिखना होगा प्लेगेन () जो एक बूलियन मान देता है जो बताता है कि उपयोगकर्ता ने फिर से खेलना तय किया है या नहीं इस पद्धति में हम इसका उपयोग करते हैं स्कैनर कि हम पहले एक निर्माता के लिए शुरू करने के लिए शुरू किया था हाँ या एक उपयोगकर्ता नहीं हम केवल यह जांचेंगे कि क्या पहला अक्षर एक `एस` है, यह निर्धारित करने के लिए कि उपयोगकर्ता फिर से खेलना चाहता है या नहीं। किसी अन्य प्रविष्टि का मतलब होगा कि उपयोगकर्ता फिर से खेलना नहीं चाहता है।

    सार्वजनिक बूलियन प्लेअगेन () {System.out.print ("क्या आप फिर से खेलना चाहते हैं? ") -string usuarioInput = inputScanner.nextLine () - usuarioInput = usuarioInput.toUpperCase () - वापसी usuarioInput.charAt (0) == `S`-}
  • 7
    वर्गों से जुड़ें उपयोगकर्ता और कंप्यूटर एक साथ कक्षा में PiedraPapelTijeras. अब जब हमने कक्षाएं लिखना समाप्त कर दिया है उपयोगकर्ता और कंप्यूटर, हम इस खेल पर ही ध्यान केंद्रित कर सकते हैं वर्गों के लिए निजी फ़ील्ड बनाएं उपयोगकर्ता और कंप्यूटर कक्षा में PiedraPapelTijeras. तरीकों का उपयोग करने के लिए हमें इन क्षेत्रों का उपयोग करना चाहिए getMove () जब हम खेल रहे हैं कक्षा के लिए निर्माता में PiedraPapelTijeras, इन फ़ील्ड को प्रारंभ करें हमें खेतों में बिन्दुओं का भी ध्यान रखना चाहिए usuarioPuntos और computadoraPuntos, जिसे हमें कन्स्ट्रक्टर में 0 से प्रारंभ करना होगा। हमें खेलों की संख्या का ट्रैक रखने की भी आवश्यकता है, जो भी 0 पर शुरू किया गया फ़ील्ड होगा।

    निजी उपयोगकर्ता उपयोगकर्ता के निजी कंप्यूटर कंप्यूटर-निजी पूर्णांक usuarioPuntos-निजी पूर्णांक computadoraPuntos-निजी पूर्णांक cantidadDeJuegos-सार्वजनिक PiedraPapelTijeras () {उपयोगकर्ता = नया उपयोगकर्ता () - पीसी = नए कंप्यूटर () - usuarioPuntos = 0-computadoraPuntos = 0-cantidadDeJuegos = 0 -}
  • 8
    गणना बढ़ाता है चाल एक ऐसा तरीका शामिल करने के लिए जो हमें बताता है कि प्रत्येक मामले में कौन जीत जाएगा हमें एक विधि लिखना चाहिए तुलनामौव () कि 0 देता है यदि नाटक समान हैं, 1 यदि वर्तमान खेल दूसरे को मारता है, और -1 यदि वर्तमान खेल दूसरे के सामने हारता है यह गेम के विजेता को निर्धारित करने के लिए उपयोगी होगा। इस पद्धति को लागू करने के लिए, यदि हम नाटक समान हैं, तो हम पहले 0 पर वापस आएं, इसलिए हमारे पास ड्रा फिर 1 या -1 वापस करने के लिए एक स्विच स्टेटमेंट लिखें




    निजी enum {रॉक, पेपर, ले जाएँ कैंची - / *** एक और नाटक के साथ इस नाटक की तुलना एक टाई, जीत या हार का निर्धारण करने के ** * * @param otherMove चाल तुलना करने के लिए * @return 1 अगर वह इस कदम जीतता है। एक और, -1 इस नाटक को खो देता है * अन्य, 0 यदि नाटकों टाई * / सार्वजनिक पूर्णांक compareMoves (ले जाने के otherMove) {// Empateif (इस == otherMove) वापसी 0-स्विच (इस) {मामले रॉक: वापसी } // कभी पहुँच जाना चाहिए - (? otherMove == कैंची 1: 1) -case पेपर: वापसी (? otherMove रॉक == 1: 1): वापसी (-1 otherMove == पेपर 1) कैंची -case यहाँ तक 0}}}
  • Video: जावा रॉक कागज कैंची के साथ यदि किसी और else if - संयुक्त राज्य अमेरिका एक्सेंट

    9
    एक विधि बनाएं startGame () कक्षा में PiedraPapelTijeras. यह विधि खेल का विकास होगा। एक साधारण लगाकर प्रारंभ करें System.out.println विधि में

    Video: चौथा जावा ट्यूटोरियल: रॉक कागज कैंची

    सार्वजनिक शून्य प्रारंभसमयी () {System.out.println ("रॉक, पेपर, स्किअर्स!") -}
  • 10
    उपयोगकर्ता और कंप्यूटर के नाटकों को प्राप्त करें विधि में startGame (), विधियों का उपयोग करें getMove () कक्षा का उपयोगकर्ता और कक्षा कंप्यूटर उपयोगकर्ता और कंप्यूटर के नाटकों को प्राप्त करने के लिए

    उपयोगकर्ता को निकालें = user.getMove () - कंप्यूटर को ले जाएं = कंप्यूटर = निकालें () - System.out.println (" n आप खेला " + userMove + "।") -सिस्टम.आउट.प्रिंटएलएन ("कंप्यूटर खेला " + कंप्यूटरमॉव + "। n") -
  • 11
    दो चाल की तुलना करें और यह निर्धारित करें कि उपयोगकर्ता या कंप्यूटर जीता। विधि का उपयोग करें तुलनामौव () enum से चालयह निर्धारित करने के लिए कि उपयोगकर्ता जीता या नहीं आप जीता उपयोगकर्ता स्कोर उपयोगकर्ताओं 1. बढ़ जाती है उपयोगकर्ता खो 1. अगर वहाँ एक टाई था पर कंप्यूटर स्कोर बढ़ जाती है, तो स्कोर के किसी भी नहीं बढ़ाते हैं। फिर एक में खेल की संख्या में वृद्धि

    पूर्णांक compareMoves = usuarioMove.compareMoves (computadoraMove) स्विच (compareMoves) {मामले 0: // EmpateSystem.out.println ("ड्रा!") -ब्रेक-केस 1: // विन यूज़र System.out.println (userMove + " तुम हरा " + कंप्यूटरमॉव + "। आप जीते!") -उसरपॉइंट्स ++ - ब्रेक-केस -1: // विन कंप्यूटर सिस्टम.आउट.प्रिंटएलएन (कंप्यूटरमॉव + " तुम हरा " + userMove + "। आप खो गए") - कॉमप्यूटर पॉइंट्स ++ - ब्रेक-} गेम्स की राशि ++ -
  • 12
    उपयोगकर्ता से पूछें कि वह फिर से खेलना चाहता है। यदि उपयोगकर्ता फिर से खेलना चाहता है, तो फिर से कॉल करें startGame (). अन्यथा, कॉल करें printGameStats () जो खेल के आंकड़ों को प्रिंट करेगा। हम इस पद्धति को अगले चरण में लिखेंगे।

    अगर (usuario.playAgain ()) {println () - startGame () -} else {printGameStats () -}
  • 13
    विधि लिखें printGameStats (). यह विधि खेल के आंकड़े दिखाएगा: जीत की संख्या, नुकसान की संख्या, ड्रॉ की संख्या, गेम की संख्या, और उपयोगकर्ता जीत का प्रतिशत। जीतने वाले खेलों का प्रतिशत (# वीकटों + (# संबंध / 2)) / (# गेम) द्वारा गणना की जाती है। इस विधि का उपयोग करता है System.out.printf स्वरूपित पाठ मुद्रित करने के लिए

    निजी शून्य प्रिंट गेमस्टैट्स ()% 6d 
  • 14
    मुख्य कक्षा में खेल शुरू करें। मुख्य वर्ग में, क्लास का एक उदाहरण प्रारंभ करें PiedraPapelTijeras और विधि को बुलाओ startGame ().

    सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {पेपरस्टोनसिसर्स गेम = नयापैरस्टोनसिसर्स () - गेम.स्टार्टगेम () -}
  • स्क्रीन-शॉट-06/23/2013-पर-2.27.50-AM.jpg" वर्ग ="छवि लाइटबॉक्स">
    स्क्रीन शॉट 2013 06 23 पर 2.27.50 AM.jpg शीर्षक वाला चित्र
    15
    अपने खेल का परीक्षण करें अब हमने स्टोन, पेपर, कैंची के खेल को लिखने के लिए सभी प्रयास किए हैं, अब सब कुछ संकलन और परीक्षण करने का समय है!
  • नमूना कार्यक्रम

    आयात java.util.Random-जावा आयात करते हैं-सार्वजनिक वर्ग PiedraPapelTijeras {निजी उपयोगकर्ता-उपयोगकर्ता कंप्यूटर निजी कंप्यूटर-निजी पूर्णांक usuarioPuntos-निजी पूर्णांक computadoraPuntos-निजी पूर्णांक cantidadDeJuegos-निजी enum {रोका, कागज, ले जाएँ कैंची - / * ** एक दूसरे के साथ इस नाटक की तुलना अगर यह एक ड्रॉ, एक जीत या हार * है निर्धारित करने के लिए। ** * @param otherMove चाल तुलना करने के लिए * @return 1 इस कदम अन्य धड़कता है, -1 के खिलाफ इस कदम खो देता है एक * अन्य, 0 यदि नाटकों टाई * / सार्वजनिक पूर्णांक compareMoves (otherMove ले जाएँ) {// Empateif (इस == otherMove) वापसी 0-स्विच (इस) {मामले रॉक: वापसी (otherMove == कैंची 1: - ? 1) -case पेपर: वापसी (otherMove रॉक == 1: 1) -case कैंची: वापसी (otherMove == पेपर 1: -1) -}} निजी वर्ग उपयोगकर्ता -} // 0 aquíreturn तक पहुँचने कभी नहीं करना चाहिए {निजी सार्वजनिक inputScanner स्कैनर उपयोगकर्ता () {inputScanner = नया स्कैनर (System.in) -} सार्वजनिक getMove ले जाएँ () {// usuarioSystem.out.print (पूछ"रॉक, कागज या कैंची? ") - // प्राप्त इनपुट usuarioString usuarioInput = inputScanner.nextLine () - usuarioInput = usuarioInput.toUpperCase () - चार firstLetter = usuarioInput.charAt (0) -यदि (firstLetter == `आर` || firstLetter == `पी `|| firstLetter ==` t `) {// उपयोगकर्ता एक válidoswitch डेटा (firstLetter) में प्रवेश किया है {case` आर `: वापसी Move.ROCA-केस` पी `: वापसी Move.PAPEL-केस` टी `: वापसी ले जाएँ .TIJERAS -}} // उपयोगकर्ता ने एक मान्य डेटा दर्ज नहीं किया है पुनः अनुरोध करें। वापसी प्राप्त करें () -} सार्वजनिक बूलियन प्लेअगेन () {System.out.print ("क्या आप फिर से खेलना चाहते हैं? ") -string usuarioInput = inputScanner.nextLine () - usuarioInput = usuarioInput.toUpperCase () - वापसी usuarioInput.charAt (0) == `एस` -}} निजी वर्ग कंप्यूटर {सार्वजनिक getMove ले जाएँ () {ले जाएँ [] चालें = चाल .values ​​() - रैंडम यादृच्छिक = नई यादृच्छिक () -}} सार्वजनिक PiedraPapelTijeras () {उपयोगकर्ता = नया उपयोगकर्ता () - - = नए कंप्यूटर कंप्यूटर (पूर्णांक सूचकांक = random.nextInt (moves.length) -RETURN [सूचकांक] चालें ) -usuarioPuntos = 0 = 0-computadoraPuntos-cantidadDeJuegos = 0-} सार्वजनिक शून्य startGame () {println ("रॉक, पेपर, स्किअर्स!") - // चालें प्राप्त करेंउप userMove = user.getMove () - कंप्यूटर ले जाएँ कंप्यूटर = निकालें। () - System.out.println (" n आप खेला " + userMove + "।") -सिस्टम.आउट.प्रिंटएलएन ("कंप्यूटर खेला " + कंप्यूटरमॉव + "। n") - // नाटकों की तुलना करें और ganadorint compareMoves निर्धारित = usuarioMove.compareMoves (computadoraMove) स्विच (compareMoves) {मामले 0: // EmpateSystem.out.println ("ड्रा!") -ब्रेक-केस 1: // विन यूज़र System.out.println (userMove + " तुम हरा " + कंप्यूटरमॉव + "। आप जीते!") -उसरपॉइंट्स ++ - ब्रेक-केस -1: // विन कंप्यूटर सिस्टम.आउट.प्रिंटएलएन (कंप्यूटरमॉव + " तुम हरा " + userMove + "। आप खो गए") -computadoraPuntos ++ - ++ cantidadDeJuegos BREAK-} - // उपयोगकर्ता को संकेत खेलने nuevamenteif (usuario.playAgain ()) {println () - startGame () -} else {printGameStats () -}} / *** प्रिंट खेल आँकड़े। के रूप में साढ़े * विन-विन प्रतिशत एक टाई गिना जा रहा है। * / निजी शून्य printGameStats ()% 6s निजी शून्य printDashes (numberOfDashes पूर्णांक) {के लिए (आई इंट = 0- मैं < numberOfDashes-i ++) {System.out.print ("-") -}} सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {पेपरपेपरसामिल गेम = नयापैरस्टोन स्टोन () - गेम.स्टार्टगेम () -}}
    सामाजिक नेटवर्क पर साझा करें:

    संबद्ध
    © 2021 ekterya.com