लाइवजैक लाठी

सबसे अधिक संभावना है, कई पहले से ही "30 लाइनों में XXX" जैसे शीर्षक से थक चुके हैं, लेकिन मैं एक और पोस्ट लिखने का जोखिम उठाऊंगा। किसी भी तरह से अलग-अलग हब्रेल लोगों के गुस्से को कम करने के लिए, मैं आपको बताऊंगा कि इस स्क्रिप्ट में प्रत्येक पंक्ति क्या करती है।
छवि

एक खेल के रूप में, मैंने ब्लैकजैक को चुना। मुझे आपको नियम याद दिलाना है:

Jsfiddle से लिंक करें।
कोड ही:
cards = [['\ud83c\udca1', '\ud83c\udca2', '\ud83c\udca3', '\ud83c\udca4', '\ud83c\udca5', '\ud83c\udca6', '\ud83c\udca7', '\ud83c\udca8', '\ud83c\udca9', '\ud83c\udcaa', '\ud83c\udcab', '\ud83c\udcad', '\ud83c\udcae',] ['\ud83c\udcb1', '\ud83c\udcb2', '\ud83c\udcb3', '\ud83c\udcb4', '\ud83c\udcb5', '\ud83c\udcb6', '\ud83c\udcb7', '\ud83c\udcb8', '\ud83c\udcb9', '\ud83c\udcba', '\ud83c\udcbb', '\ud83c\udcbd', '\ud83c\udcbe',] ['\ud83c\udcc1', '\ud83c\udcc2', '\ud83c\udcc3', '\ud83c\udcc4', '\ud83c\udcc5', '\ud83c\udcc6', '\ud83c\udcc7', '\ud83c\udcc8', '\ud83c\udcc9', '\ud83c\udcca', '\ud83c\udccb', '\ud83c\udccd', '\ud83c\udcce',] ['\ud83c\udcd1', '\ud83c\udcd2', '\ud83c\udcd3', '\ud83c\udcd4', '\ud83c\udcd5', '\ud83c\udcd6', '\ud83c\udcd7', '\ud83c\udcd8', '\ud83c\udcd9', '\ud83c\udcda', '\ud83c\udcdb', '\ud83c\udcdd', '\ud83c\udcde']] deck=[[0 0 false ] [0 1 2] [0 2 3] [0 3 4] [0 4 5] [0 5 6] [0 6 7] [0 7 8] [0 8 9] [0 9 10] [0 10 10] [0 11 10] [0 12 10] [1 0 false ] [1 1 2] [1 2 3] [1 3 4] [1 4 5] [1 5 6] [1 6 7] [1 7 8] [1 8 9] [1 9 10] [1 10 10] [1 11 10] [1 12 10] [2 0 false ] [2 1 2] [2 2 3] [2 3 4] [2 4 5] [2 5 6] [2 6 7] [2 7 8] [2 8 9] [2 9 10] [2 10 10] [2 11 10] [2 12 10] [3 0 false ] [3 1 2] [3 2 3] [3 3 4] [3 4 5] [3 5 6] [3 6 7] [3 7 8] [3 8 9] [3 9 10] [3 10 10] [3 11 10] [3 12 10] ] sdeck=JSON.parse JSON.stringify deck shuffle = !-> for x,i in deck when (x=Math.floor(Math.random() * (i + 1));true) [deck[i],deck[x]] = [deck[x],deck[i]] gid=(id) -> document.getElementById(id) window.mca=mc=[];window.dca=dc=[];defbet=gid("defbet");m=gid("money");bet=gid("bet");mch=gid("mcards");dch=gid("dcards");l=gid("log") tod = !-> dc.push (c=deck.pop!); dch.innerHTML+=cards[c[0]][c[1]] log = (msg)!-> l.innerHTML=msg window.more = tom = !-> mc.push (c=deck.pop!); mch.innerHTML+=cards[c[0]][c[1]]; summ(mc)>21 and (log "";gid("d").disabled=gid("m").disabled=gid("e").disabled=true;gid("g").disabled=false) clear = !-> gid("g").disabled=!(gid("d").disabled=gid("m").disabled=gid("e").disabled=false);log "";bet.innerHTML=0;mch.innerHTML=dch.innerHTML="";mc.length=0;dc.length=0;deck:=JSON.parse JSON.stringify sdeck;shuffle! window.s=summ = (ar)-> sum=0;tzs=0 for c in ar (c[2] and sum+=c[2]) or tzs++ for i in [1 to tzs] (sum+11>21 and sum+=1) or sum+=11 sum betbet = -> if +m.innerHTML<+defbet.value then log "    !"; false else bet.innerHTML=+defbet.value;m.innerHTML-=+defbet.value;true window.dub = !-> if +m.innerHTML<+bet.innerHTML then log "    !" else m.innerHTML-=+bet.innerHTML;bet.innerHTML*=2;tom! window.give = !-> (clear!; betbet!) and (tom!;tom!;tod!;true) or gid("g").disabled=false;!mc[0][2] and !mc[1][2] and (log " !"; m.innerHTML = +m.innerHTML + +bet.innerHTML*3;gid("e").disabled=true;gid("g").disabled=false) window.enough = !-> win=true;nothing=false while summ(dc) < 17 tod! log if summ(dc)>21 or summ(dc)<summ(mc) then " !" else if summ(dc)==summ(mc) then (nothing=true; "") else (win=false; " ") gid("g").disabled=false gid("e").disabled=true m.innerHTML = +m.innerHTML + (+bet.innerHTML)*(if nothing then 1 else if win then 2 else 0) 


तो, उसकी प्रत्येक पंक्ति पर विचार करें।

पहली पंक्ति कार्ड की "छवियों" के साथ एक सरणी को आरंभीकृत करती है।
 cards = [['\ud83c\udca1', '\ud83c\udca2', '\ud83c\udca3', '\ud83c\udca4', '\ud83c\udca5', '\ud83c\udca6', '\ud83c\udca7', '\ud83c\udca8', '\ud83c\udca9', '\ud83c\udcaa', '\ud83c\udcab', '\ud83c\udcad', '\ud83c\udcae',] ['\ud83c\udcb1', '\ud83c\udcb2', '\ud83c\udcb3', '\ud83c\udcb4', '\ud83c\udcb5', '\ud83c\udcb6', '\ud83c\udcb7', '\ud83c\udcb8', '\ud83c\udcb9', '\ud83c\udcba', '\ud83c\udcbb', '\ud83c\udcbd', '\ud83c\udcbe',] ['\ud83c\udcc1', '\ud83c\udcc2', '\ud83c\udcc3', '\ud83c\udcc4', '\ud83c\udcc5', '\ud83c\udcc6', '\ud83c\udcc7', '\ud83c\udcc8', '\ud83c\udcc9', '\ud83c\udcca', '\ud83c\udccb', '\ud83c\udccd', '\ud83c\udcce',] ['\ud83c\udcd1', '\ud83c\udcd2', '\ud83c\udcd3', '\ud83c\udcd4', '\ud83c\udcd5', '\ud83c\udcd6', '\ud83c\udcd7', '\ud83c\udcd8', '\ud83c\udcd9', '\ud83c\udcda', '\ud83c\udcdb', '\ud83c\udcdd', '\ud83c\udcde']] 


दूसरी पंक्ति में, नक्शे के साथ एक सरणी को आरंभीकृत किया जाता है, प्रत्येक नक्शा तीन तत्वों के साथ एक सरणी का प्रतिनिधित्व करता है: मानचित्र छवि और इसकी लागत के निर्देशांक। एक ही समय में, झूठी को इक्के के लिए संग्रहीत किया जाता है, क्योंकि इसे अलग से संसाधित किया जाता है।
 deck=[[0 0 false ] [0 1 2] [0 2 3] [0 3 4] [0 4 5] [0 5 6] [0 6 7] [0 7 8] [0 8 9] [0 9 10] [0 10 10] [0 11 10] [0 12 10] [1 0 false ] [1 1 2] [1 2 3] [1 3 4] [1 4 5] [1 5 6] [1 6 7] [1 7 8] [1 8 9] [1 9 10] [1 10 10] [1 11 10] [1 12 10] [2 0 false ] [2 1 2] [2 2 3] [2 3 4] [2 4 5] [2 5 6] [2 6 7] [2 7 8] [2 8 9] [2 9 10] [2 10 10] [2 11 10] [2 12 10] [3 0 false ] [3 1 2] [3 2 3] [3 3 4] [3 4 5] [3 5 6] [3 6 7] [3 7 8] [3 8 9] [3 9 10] [3 10 10] [3 11 10] [3 12 10] ] 

तीसरी पंक्ति में, मानचित्र सरणी को दूसरे सरणी में कॉपी किया जाता है, क्योंकि आगे की कार्रवाइयों के साथ पहला सरणी दूषित हो जाएगा।
 sdeck=JSON.parse JSON.stringify deck 

चौथी और पाँचवीं पंक्तियाँ डेक को मिलाने के कार्य को घोषित करती हैं।
 shuffle = !-> for x,i in deck when (x=Math.floor(Math.random() * (i + 1));true) [deck[i],deck[x]] = [deck[x],deck[i]] 

छठी पंक्ति लंबे डॉक्यूमेंट को बदलने के लिए एक छोटा फ़ंक्शन घोषित करती है ।getElementById।
 gid=(id) -> document.getElementById(id) 

सातवीं पंक्ति खिलाड़ी के और डीलर के कार्ड सेट की घोषणा करती है, साथ ही शर्त के आकार, खिलाड़ी के पैसे की राशि, वर्तमान चोर, खिलाड़ी के कार्ड के साथ कंटेनर और संदेशों को प्रदर्शित करने के लिए एक स्थान की भी घोषणा करती है।
 window.mca=mc=[];window.dca=dc=[];defbet=gid("defbet");m=gid("money");bet=gid("bet");mch=gid("mcards");dch=gid("dcards");l=gid("log") 

आठवीं पंक्ति। डीलर को एक कार्ड जोड़ने का कार्य।
 tod = !-> dc.push (c=deck.pop!); dch.innerHTML+=cards[c[0]][c[1]] 

नौवीं पंक्ति। संदेश आउटपुट फ़ंक्शन।
 log = (msg)!-> l.innerHTML=msg 

दसवीं पंक्ति में, खिलाड़ी को एक कार्ड जोड़ने का कार्य घोषित किया गया है और इसे वैश्विक दायरे में रखा गया है।
 window.more = tom = !-> mc.push (c=deck.pop!); mch.innerHTML+=cards[c[0]][c[1]]; summ(mc)>21 and (log "";gid("d").disabled=gid("m").disabled=gid("e").disabled=true;gid("g").disabled=false) 

11-12 पंक्तियाँ। नए चोर के लिए फ़ंक्शन रीसेट करें। डीलर और खिलाड़ी कार्ड लेते हैं, एक नया डेक बनाते हैं और मिलाते हैं, संदेश बॉक्स को साफ़ करते हैं।
 clear = !-> gid("g").disabled=!(gid("d").disabled=gid("m").disabled=gid("e").disabled=false);log "";bet.innerHTML=0;mch.innerHTML=dch.innerHTML="";mc.length=0;dc.length=0;deck:=JSON.parse JSON.stringify sdeck;shuffle! 

13-19 पंक्तियाँ। राशि की गणना करने का कार्य। हम सभी कार्डों को संक्षेप में प्रस्तुत करते हैं, इक्के की संख्या की गणना करते हैं, अंत में हम उन्हें गिनते हैं, 21 के भीतर रखने की कोशिश कर रहे हैं।
 window.s=summ = (ar)-> sum=0;tzs=0 for c in ar (c[2] and sum+=c[2]) or tzs++ for i in [1 to tzs] (sum+11>21 and sum+=1) or sum+=11 sum 

बीसवीं पंक्ति। हम शर्त लगाते हैं, जांच लें कि पर्याप्त पैसा है।
 betbet = -> if +m.innerHTML<+defbet.value then log "    !"; false else bet.innerHTML=+defbet.value;m.innerHTML-=+defbet.value;true 

इक्कीसवीं पंक्ति। बोली को दोगुना करें।
 window.dub = !-> if +m.innerHTML<+bet.innerHTML then log "    !" else m.innerHTML-=+bet.innerHTML;bet.innerHTML*=2;tom! 

दूसरी पंक्ति। हम शुरुआती कार्डों का सौदा करते हैं।
 window.give = !-> (clear!; betbet!) and (tom!;tom!;tod!;true) or gid("g").disabled=false;!mc[0][2] and !mc[1][2] and (log " !"; m.innerHTML = +m.innerHTML + +bet.innerHTML*3;gid("e").disabled=true;gid("g").disabled=false) 

23-30। यदि पर्याप्त कार्ड हैं, तो डीलर अपने लिए कार्ड इकट्ठा करता है, जिसके बाद अंकों की तुलना की जाती है।
 window.enough = !-> win=true;nothing=false while summ(dc) < 17 tod! log if summ(dc)>21 or summ(dc)<summ(mc) then " !" else if summ(dc)==summ(mc) then (nothing=true; "") else (win=false; " ") gid("g").disabled=false gid("e").disabled=true m.innerHTML = +m.innerHTML + (+bet.innerHTML)*(if nothing then 1 else if win then 2 else 0) 

Source: https://habr.com/ru/post/In202906/


All Articles