2010-01-13 15 views
30

क्या कोई शतरंज गेम एपीआई है, जो पूरी तरह जावास्क्रिप्ट में लिखी गई है? कोई फ्लैश नहीं! कोई भी शतरंज के खेल में उपयोग किए जाने वाले एल्गोरिदम (सामान्य रूप से) को जानता है?जावास्क्रिप्ट में शतरंज खेल

+1

एक अच्छा कोड गोल्फ सवाल (एक छोटी कार्यान्वयन के लिए) –

+0

http://javascript.internet.com/games/javascript-chess-with-cpu-oppo.html –

+0

एक आश्चर्यजनक छोटे कार्यान्वयन (1KB) हो सकता है http://js1k.com/2010-first/demo/435 – Christophe

उत्तर

55

कैसे एक शतरंज एल्गोरिथ्म काम ?:

क्या एक शतरंज कंप्यूटर करने की कोशिश करता बोर्ड द्वारा स्थिति पेड़ भविष्य में पाँच या 10 या 20 चालों उत्पन्न है। मानते हैं कि लगभग 20 किसी भी बोर्ड की स्थिति के लिए संभावित चाल, पांच-स्तर के पेड़ में 3,200,000 बोर्ड स्थितियां हैं। एक 10-स्तरीय पेड़ में लगभग 10,000,000,000,000 (10 ट्रिलियन) स्थितियां हैं। पेड़ की गहराई जो कंप्यूटर गणना कर सकती है कंप्यूटर खेल की गति से नियंत्रित है। सबसे तेज़ शतरंज कंप्यूटर उत्पन्न कर सकते हैं और प्रति सेकंड लाखों बोर्ड स्थितियों का मूल्यांकन प्रति सेकंड।

एक बार यह पेड़ उत्पन्न करता है, तो कंप्यूटर को बोर्ड पदों का मूल्यांकन करने की आवश्यकता होती है। " यही है, कंप्यूटर पर बोर्ड पर टुकड़े देखने के लिए तय करता है कि टुकड़े की व्यवस्था "अच्छा" या "खराब" है। जिस तरह से यह मूल्यांकन फ़ंक्शन का उपयोग करके करता है। सबसे आसान संभव फ़ंक्शन प्रत्येक पक्ष के टुकड़ों की संख्या की गणना कर सकता है। कंप्यूटर सफेद खेल रहा है और एक कुछ बोर्ड स्थिति 11 सफेद टुकड़े और नौ काला टुकड़े है, तो सरल मूल्यांकन कार्य हो सकता है:

11 - 9 = 2 

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

Source

अपनी खुद जावास्क्रिप्ट 'इंजन' एक बुनियादी स्तर की जांच Step by Step Javascript Chess with CPU oppo

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

कुछ उपयोगी संसाधन:

1

Computer Chess Blog के पीछे सिद्धांत का वर्णन पाया है पर यहां चर्चा एक सी # शतरंज इंजन के निर्माण के दर्ज होते हैं। यह जावास्क्रिप्ट नहीं है लेकिन वाक्यविन्यास इतना समान है कि आपको विभिन्न शतरंज इंजन घटकों की अच्छी समझ हो सकती है।

यदि आप अपने शतरंज इंजन को वेब सक्षम करना चाहते हैं तो भी आप सिल्वरलाइट जीयूआई के साथ सी # का उपयोग करने पर विचार करना चाहेंगे। आपको जावास्क्रिप्ट के मुकाबले .NET से बेहतर प्रदर्शन मिलेगा। जैसा कि आप सीखेंगे, यह एक मजबूत (गहरी खोज) शतरंज कार्यक्रम में अनुवाद करेगा। सिल्वरलाइट शतरंज का एक अच्छा उदाहरण GeeksWithChess.com

5

एल्गोरिदमिक चर्चा के लिए, Chess Programming Wiki पर आज़माएं।

गंभीर शतरंज इंजन के लिए उपयुक्त तकनीकें वेब आधारित गेम के लिए जरूरी नहीं हैं। असली शतरंज इंजन बहु-मेगाबाइट खोलने वाली किताबों का उपयोग करके और प्रत्येक मोड़ पर मिनट या घंटे खर्च करते हुए तीव्रता के आदेश चलाते हैं। एक वास्तविक शतरंज इंजन 12 प्ली से गहराई से खोज करेगा, जबकि जावास्क्रिप्ट उचित वेब समय में 6 पाली से अधिक नहीं मिलेगा। इसलिए piece-square oracle की तरह कुछ, जो खोज के रूप में कम हो रहा है और संभावित रूप से ऋणात्मक रिटर्न है और परिणामस्वरूप शतरंज प्रोग्रामिंग सर्कल में फैशन से बाहर है, तर्कसंगत रूप से जावास्क्रिप्ट इंजन के लिए उपयुक्त है। यदि आप 80 के दशक में लोग क्या कर रहे थे, तो आप एक चंचल और प्रबंधनीय इंजन के साथ समाप्त हो जाएंगे जो अधिकांश आगंतुकों को हरा देगा।

और निश्चित रूप से आप वास्तव में देखना चाहते हैं कि अन्य लोग क्या कर रहे हैं। बस सुनिश्चित करें कि आपके पास alpha-beta search की कुछ भिन्नता है, फिर अपने मूल्यांकन फ़ंक्शन और अन्य सभी चीज़ों को ट्विक करें जैसा आप फिट देखते हैं।

2002 और 2012 में मैंने लिखा था कि p4wn, एक छोटा सार्वजनिक डोमेन जावास्क्रिप्ट इंजन फिर से लिखता है। यह अल्फा-बीटा और एक टुकड़ा-वर्ग ऑरैकल का उपयोग करता है। यह शायद Garbochess-JS से कमजोर है, लेकिन फिर गारबोचेस की एक उद्घाटन पुस्तक है जो पूरे p4wn इंजन को बड़ा है। :

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