เล่นเกม Dice Cricket


12

Dice Cricket เป็นเกมที่ฉันได้รับการแนะนำให้รู้จักกับเด็กและได้ใช้เป็นวิธีในการผ่านเวลาหลายปีตั้งแต่ ฉันไม่พบหน้า Wikipedia ดังนั้นฉันจะอธิบายกฎด้านล่าง

กฎของคริกเก็ตลูกเต๋า

หลักฐาน

Dice Cricket เป็นเกมที่คล้ายกับการให้คะแนนเกมคริกเกตในขณะที่คุณดู แต่แทนที่จะดูและบันทึกผลคุณจะกลิ้งลูกเต๋าและบันทึกผล

ผลลัพธ์จะถูกบันทึกในตารางตามที่ปรากฏที่ด้านล่าง

แสดง

Dice Cricket ใช้หน้าจอเฉพาะเพื่อแสดงข้อมูลทั้งหมดที่เกิดขึ้น

ตารางมี 11 แถว แต่ละแถวแสดงถึงการปะทะ โครงร่างของแถวอธิบายไว้ด้านล่าง

+------+------------------------------+---------+-----+
| Name |    Runs                      | How Out |Score|
+------+------------------------------+---------+-----+
  • ชื่อ: ชื่อจะต้องเป็นสตริงที่ประกอบด้วยตัวอักษรทั้งหมดตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก
  • วิ่ง: ปะทะสามารถเผชิญ 30 ลูก 1 2 4 6 . /ลูกแต่ละคนสามารถเป็นหนึ่งใน นี้จะอธิบายในรายละเอียดเพิ่มเติมด้านล่าง
  • How Out: วิธีการปะทะออก สามารถใด ๆ ของBowled, LBW (Leg Before Wicket), Caught, Retired or Not Out
  • คะแนน: ผลรวมของตัวเลขทั้งหมดใน Runs

เกมทำงานอย่างไร

ในเกมนั้นมีแบทเทอร์อยู่เสมอ 2 ลูกในสนาม ผู้เล่นคนแรกโดยค่าเริ่มต้นปะทะปัจจุบันและที่สองในการปะทะ "ปิด"

เกมนี้ประกอบด้วย "ลูกบอล": ลูกบอลแต่ละลูกในการแข่งขันคริกเกตจะแสดงเป็นลูกเต๋า แต่ละม้วนทำคำสั่งต่างกัน:

  • 1,2,4 และ 6 ทำคะแนนปะทะที่มาก หากมีการกลิ้ง 1 การปะทะปัจจุบันจะกลายเป็นการปะทะ "off" และการปะทะ "off" จะกลายเป็นปัจจุบัน
  • 3 คือ "dot ball" ซึ่งหมายความว่าไม่มีอะไรเกิดขึ้น มันถูกแสดงในRunsส่วนเป็น.และ 0 คะแนน A 0อาจไม่สามารถใช้เพื่อเป็นตัวแทนของมัน
  • 5 คือประตู ถ้ารีด 5 ครั้งการปะทะปัจจุบันคือ "ออก" ซึ่งหมายความว่า a /ถูกเพิ่มเข้ากับการวิ่งและหลังจากนั้นการปะทะไม่สามารถทำคะแนนการวิ่งได้อีกต่อไป ปะทะแล้วสลับกับการปะทะต่อไปที่ยังไม่ได้เข้ามาถี่ยิบ How Outส่วนเป็นทางเลือกที่สุ่มในวิธีที่เป็นไปได้ที่จะได้รับออก:Bowled, LBW, Caught

ตัวอย่างสำหรับประตู (นี่เป็นเพียงเพื่อความชัดเจนนี่ไม่ใช่วิธีของมันออกมา)

player a is on 4,6,2,6,4
player b is on 6,4,2,6,6
player c hasn't batted
player a is current batter

WICKET!!!

player a is on 4,6,2,6,4,/
player b in on 6,4,2,6,6
player c is on NOTHING
player c is current batter

ทุก ๆ 6 ลูกแป้งสองลูกจะสลับ การปะทะปัจจุบันกลายเป็นการปะทะ "ปิด" และการปะทะ "ปิด" จะกลายเป็นการปะทะปัจจุบัน

ถ้าRunsส่วนที่เต็มไป (30 ลูก) แป้งจะออกและส่วนที่มีการตั้งค่าHow Out ไม่ได้วางไว้ในตอนท้ายของกล่องRetired/ Runs

การท้าทายจริง (ใช่ทุกอย่างที่เป็นกฎของเกม)

ความท้าทายของคุณคือการส่งออกตารางที่เสร็จสมบูรณ์ (เช่นตัวอย่างท้าย) ได้รับรายชื่อ เนื้อหาของผลลัพธ์ควรมีเฉพาะตารางและ / หรือช่องว่างนำหน้าหรือต่อท้าย

กฎระเบียบ

  • ช่องโหว่มาตรฐานไม่ได้รับอนุญาต
  • ผู้เล่นทั้ง 11 คนควรมีบางอย่างในRunsส่วนนี้
  • เพียง 1 Not Outผู้เล่นสามารถ ผู้เล่นที่ไม่ได้เกษียณทุกคนควรออกจากตัวเลือก[Bowled, LBW, Caught]
  • ชื่อสามารถมีความยาวระหว่าง 1 ถึง 6 ที่ตรงกับ regex A-Za-z
  • บรรทัดสุดท้ายในตารางควรเป็นบรรทัดทั้งหมด (ดูตัวอย่าง)
  • คุณไม่จำเป็นต้องจัดแนวข้อความในตาราง แต่อย่างใด แต่ตัวคั่นแถวและคอลัมน์จะต้องจัดตำแหน่ง

ตัวอย่าง

Input:
['Fred', 'Sonya', 'David', 'Ben', 'Cody', 'Hazel', 'Nina', 'Kim', 'Cath', 'Lena', 'Will']
Output:
+------+------------------------------+---------+-----+
| Name | Runs                         | How Out |Total|
+------+------------------------------+---------+-----+
|Fred  |.662/                         | Caught  | 14  |
+------+------------------------------+---------+-----+
|Sonya |1164/                         | Caught  | 12  |
+------+------------------------------+---------+-----+
|David |/                             |   LBW   |  0  |
+------+------------------------------+---------+-----+
|Ben   |424/                          |   LBW   | 10  |
+------+------------------------------+---------+-----+
|Cody  |62/                           | Bowled  |  8  |
+------+------------------------------+---------+-----+
|Hazel |/                             |   LBW   |  0  |
+------+------------------------------+---------+-----+
|Nina  |161.6226166..44261442/        | Caught  | 64  |
+------+------------------------------+---------+-----+
|Kim   |11/                           | Caught  |  2  |
+------+------------------------------+---------+-----+
|Cath  |6.21/                         |   LBW   |  9  |
+------+------------------------------+---------+-----+
|Lena  |/                             | Bowled  |  0  |
+------+------------------------------+---------+-----+
|Will  |2                             | Not Out |  2  |
+------+------------------------------+---------+-----+
|               Total Runs                      | 121 |
+-----------------------------------------------+-----+


เฮ้ฉันเคยเล่นเกมประเภทเดียวกันนี้เรียกว่า "คริกเก็ตมือ"
สิ้นเชิงมนุษย์

สิ่งที่กำหนดเมื่อเกมจบลง? มันเป็นเมื่อปะทะออกและไม่มีใครเหลือที่จะมาแทนที่เขา?
KSmarts

@KSmarts ถูกต้อง
caird coinheringaahing

1
@JanathanAllan ใช่มันไม่ใช่ความต้องการที่ดี นำออก
caird coinheringaahing

คำตอบ:


2

Python 3 , 650 621 582 572 588 ไบต์

from random import*
h=str
c=h.center
a='+'.join(map('-'.__mul__,[0,6,30,9,5,0]))+'\n'
b=lambda x,r=6:x.ljust(r,' ')
j=''.join
t=lambda a:sum(map(int,a[:-1].replace(*'.0')))
P=print
def s(i=30):
 while i:x=choice('12.4/6');yield x;i=('/'!=x)*~-i
def f(n,T=0):
 n=[*map(b,n)]
 P(a+f'| Name | Runs{" "*25}| How Out |Total|')
 for x in n[:-1]:S=j(s());T+=t(S);P(a,x,b(S,30),c(choice(['Bowled','LBW','Caught']),9),c(h(t(S)),5),sep='|',end='|\n')
 S=j(s());P(a,n[-1],b(S,30),' Not Out ',c(h(t(S)),5),sep='|',end='|\n');P(a+f'|{15*" "}Total Runs{15*" "}       |{c(h(T),5)}|\n+{47*"-"}+{5*"-"}+')

ลองออนไลน์!

มันใช้เวลานานกว่า 24 ชั่วโมงและฉันใช้เวลาประมาณหนึ่งชั่วโมงในการชักขึ้นดังนั้นฉันหวังว่าฉันจะไม่เป็นใคร FGITW และฉันไม่ได้เล่นกอล์ฟกับงูใหญ่ในขณะนี้มันสนุก (แม้ว่านี่จะเป็น ครั้งที่สองที่ฉันตอบคำถามตัวเองด้วยคำตอบของหลามแบบยาว)

โปรดโพสต์ข้อเสนอแนะกอล์ฟ Python ไม่ใช่ภาษาที่ดีที่สุดของฉันสำหรับการเล่นกอล์ฟ

-68 ไบต์ขอบคุณFlipTack !

-8 ไบต์ขอบคุณMr. Xcoder

+16 ไบต์เนื่องจากข้อบกพร่อง


ได้อย่างรวดเร็วก่อนที่ฉันจะเห็นค่อนข้างไม่กี่โรงแรมพร้อมสนามกอล์ฟ ... 1) หนึ่งในตัวอย่างที่คุณยังคงใช้แทนprint P2) sumสามารถนำmapวัตถุโดยตรงไม่จำเป็นต้องแปลงเป็นรายการ 3) แทนที่จะเขียนyield xเป็นครั้งที่สองทำไมไม่yield xและแล้วแตกถ้าจำเป็น? 4) T=0สามารถวางไว้ภายในส่วนหัวของฟังก์ชั่น 5) ในฟังก์ชั่นสุดท้ายของคุณคุณได้ใช้การขึ้นบรรทัดใหม่หลายบรรทัดซึ่งคุณสามารถใช้หนึ่งบรรทัดกับอัฒภาคได้ตัวอย่างเช่นคำสั่งสามคำแรกคำสามคำสุดท้ายและคำสั่งในลูป
FlipTack

@FlipTack กอล์ฟที่ดีและขอบคุณ!
caird coinheringaahing

คุณสามารถกอล์ฟsมาก ... แล้วdef s(i=30): while i:x=choice('12.4/6');yield x;i=('/'!=x)*~-iนอกจากนี้คุณโทรo()ครั้งเดียวจึงไม่จำเป็นต้องประกาศเลยเพียงใช้คำสั่งโดยตรง
FlipTack

เช่นเดียวกับb^^
FlipTack

@FlipTack เพิ่มสนามกอล์ฟ ขอบคุณ!
caird coinheringaahing

0

ถ่าน , 277 255 ไบต์

≔E¹¹⟦⟦⟧⁰S⟧θ≔⮌θηW⊖Lη«≔⊟ηι≔‽12.4/6ζ⊞υζ⊞§ι⁰ζ≔⎇⁼ζ/⁺²‽³⁼³⁰L§ι⁰ζ¿ζ§≔ι¹ζ⊞ηι¿⊖Lη¿⁼¬﹪Lυ⁶¬εF⟦⊟η⊟η⟧⊞ηκ»”|⁴B\[⎇⁻℅↧T`⁵·5KMK⟲M≦»→´⁶_⭆∨R▷↥l⁹KG…≦”Fθ«◨⊟ι⁷◨Σ§ι⁰¦³²§⪪”(3⪪⪫⧴πZJL:∨XI±URD↗Σ9⟦FZ∕↖l⪪”⁷⊟ι◧IΣE⊟ιΣκ⁶⸿⸿»”|QºWPD⟧zNφ[v?Π'vG”◧IΣEυΣι²⁸J±¹±¹FE¹³⁻²⁷⊗ι«B⁵⁵ιB⁴⁹ι¿‹ι²⁷«B³⁹ιB⁸ι

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

≔E¹¹⟦⟦⟧⁰S⟧θ

อ่านใน 11 ชื่อ (อินพุตมีความยืดหยุ่น: JSON, คั่นด้วยช่องว่างหรือขึ้นบรรทัดใหม่) และสร้างอาร์เรย์qของ 11 บัตเตอร์แสดงโดยลูกของพวกเขา (เป็นอาร์เรย์) สถานะ (เป็นจำนวนเต็ม) และชื่อ

≔⮌θη

สร้างสำเนาของแบ็ตเตอร์ที่hกลับด้าน สิ่งนี้แสดงถึงแป้งที่ไม่ได้ออกมา องค์ประกอบสองรายการสุดท้ายคือปิดและปิดแป้งปัจจุบัน

W⊖Lη«

ทำซ้ำในขณะที่มีแป้งอย่างน้อยสองก้อน

≔⊟ηι

iสารสกัดจากแป้งปัจจุบัน

≔‽12.4/6ζ

zสร้างลูกสุ่ม

⊞υζ

uเพิ่มไปยังรายการโดยรวมของลูกที่กำหนดไว้ล่วงหน้าโดยใช้รายการที่ว่างเปล่า

⊞§ι⁰ζ

เพิ่มไปยังลูกบอลของแป้งปัจจุบัน

≔⎇⁼ζ/⁺²‽³⁼³⁰L§ι⁰ζ

ถ้าลูกเป็น/แล้วสร้างสถานะสุ่ม2..4มิฉะนั้นถ้าเป็นลูกที่ 30 ปะทะของจากนั้นตั้งค่าสถานะเป็นอย่างอื่น10

¿ζ§≔ι¹ζ⊞ηι

หากปะทะออกแล้วเก็บสถานะของแป้งเป็นอย่างอื่นให้ใส่แป้งกลับเข้าไปในไม้ตี

¿⊖Lθ¿⁼¬﹪ΣEηLκ⁶¬ζ

หากมีเหลืออย่างน้อยสอง batters และปะทะถูกออก xor 6 ลูกได้เล่นแล้ว ...

F⟦⊟η⊟η⟧⊞ηκ»

... ถอดแป้งและแป้งออกแล้วใส่กลับเข้าไปในลำดับย้อนกลับ

”|⁴B\[⎇⁻℅↧T`⁵·5KMK⟲M≦»→´⁶_⭆∨R▷↥l⁹KG…≦”

พิมพ์ส่วนหัว

Fθ«

วนรอบแป้ง

◨⊟ι⁷

พิมพ์ชื่อแป้ง

◨Σ§ι⁰¦³²

พิมพ์ลูกบอลของแป้ง

§⪪”(3⪪⪫⧴πZJL:∨XI±URD↗Σ9⟦FZ∕↖l⪪”⁷⊟ι

พิมพ์สถานะของแป้งโดยการทำดัชนีลงในสตริงที่Not OutRetiredBowled Caught LBWแบ่งออกเป็นสตริงย่อยของความยาว 7

◧IΣE⊟ιΣκ⁶

พิมพ์คะแนนของแป้ง

⸿⸿»

ย้ายไปที่จุดเริ่มต้นของบรรทัดถัดไป

”|QºWPD⟧zNφ[v?Π'vG”◧IΣEυΣι²⁸

พิมพ์ผลรวม

J±¹±¹FE¹³⁻²⁷⊗ι«B⁵⁵ιB⁴⁹ι¿‹ι²⁷«B³⁹ιB⁸ι

วาดกล่องรอบ ๆ ทุกสิ่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.