สวัสดีและยินดีต้อนรับกลับ
ในการบรรยายครั้งนี้ ฉันต้องการ ให้ความท้าทายอื่นแก่คุณ
มันเกี่ยวข้องกับหน้าที่แต่ ความท้าทายนี้จะเน้นไปที่การแบ่งแยกและพิชิต
กำลังไป
เพื่อเป็นการเพิ่มเติมเกี่ยวกับการจัดระเบียบโปรแกรมของคุณโดยใช้โมดูลต่างๆ ต่อไป ที่จะเพิ่มเติมเกี่ยวกับการแก้ปัญหา
สิ่งที่ฉันต้องการให้คุณทำคือฉันต้องการ คุณเขียนเกมโอเอกซ์
สิ่งนี้จะช่วยคุณได้เพียง เป็นนักแก้ปัญหาที่ดีขึ้น และมันจะช่วยคุณจัดระเบียบ
โปรแกรมของคุณรอบการทำงาน
คุณจะต้องใช้อาร์เรย์ด้วย
คุณจะต้องคิด วิธีจัดรูปแบบข้อมูลบางอย่าง
แต่มันจะเป็น การจำลองเกมโอเอกซ์
เราจะไม่เขียนคอมพิวเตอร์
มันจะเป็นผู้เล่น 1 กับผู้เล่น 2
ดังนั้นฉันต้องการให้คุณเขียน a โปรแกรมที่เล่น tic-tac-toe
หวังว่าทุกคนคงจะ คุ้นเคยกับโปรแกรมนี้หรือเกมนี้ฉันควรจะพูด
มันเป็นแค่เกมที่เล่น บนตาราง 3 x 3 พร้อมผู้เล่นสองคน
คุณผลัดกัน
X เป็นจมูก
หวังว่าเสียงระฆัง
ฉันไม่ต้องการที่จะไปและ อธิบายเกมนี้ แต่หวังว่าคุณจะคุ้นเคยกับ
tic-tac-toe
จัดให้หน่อยครับ การสาธิตวิธีการทำงานและวิธีที่ฉันคาดหวังว่าผลลัพธ์จะออกมา
แต่มันเป็นเกม tic tac toe พื้นฐาน
สิ่งที่ฉันต้องการจะทำคือคุณ อาจจะต้องสร้างอาร์เรย์เพื่อเป็นตัวแทนของ
กระดานจริง ตาราง 3 x 3
ฉันคิดว่าคุณสามารถหนีไปได้เพียงแค่ การสร้างอาร์เรย์มิติเดียว
คุณสามารถสร้าง a . ได้จริง อาร์เรย์ 2 มิติ เพื่อแสดงแถวและคอลัมน์
2D น่าจะมากกว่า ใช้งานง่าย แต่การแสดงภาพในโค้ดของคุณอาจยากขึ้นเล็กน้อย
แต่วิธีใดวิธีหนึ่งก็ใช้ได้
ข้อดีของการเขียนโปรแกรมคือ มีวิธีแก้ไขปัญหามากมาย
ฉันจะบอกคุณหนึ่งของฉัน โซลูชันและแนวทางการออกแบบของฉัน แต่อย่าลังเลที่จะเปลี่ยนการออกแบบ
ตราบใดที่คุณใช้ โครงสร้าง c ถูกต้อง นั่นคือทั้งหมดที่ฉันสนใจ
ฉันต้องการให้คุณเรียนรู้วิธีใช้ค
ตราบใดที่โปรแกรมของคุณถูกปรับให้เหมาะสม เป็นระเบียบและดูแลรักษาง่าย
เป็นโค้ดคุณภาพ นั่นคือสิ่งที่ฉันกังวล
ดังนั้นวิธีหนึ่งที่จะปฏิบัติได้เพียงวิธีเดียวเท่านั้น เป็นตัวแทนของกระดานเป็นอาร์เรย์มิติเดียวที่มีองค์ประกอบสิบประการ
เหตุผลที่ฉันมีสิบองค์ประกอบที่นี่ คือฉันไม่ต้องการให้คุณใช้ศูนย์
ธาตุทั้งสิบนี้กำลังเกิดขึ้น เพื่อเป็นตัวแทนของคณะกรรมการ
แต่พวกเขาก็จะเป็นตัวแทน พิกัดบนกระดาน
ฉันจะสาธิตสิ่งนี้และแสดง คุณคิดอย่างไรกับการทำงาน
แต่ทางที่คุณจะไป ที่จะเลือกกล่องที่คุณต้องการวาดจริงๆจะไป
จะขึ้นอยู่กับจำนวนองค์ประกอบ
นอกเหนือจากการสร้างอาร์เรย์สำหรับ บอร์ดนี้ต้องพยายามคิดว่าจะแก้ปัญหานี้ยังไง
ลงว่าคุณจะจัดระเบียบอย่างไร
ฉันกำลังคิดอย่างน้อยที่สุด ว่าคุณจะต้องมีฟังก์ชันอย่างน้อยสามอย่าง
หรือมากกว่านั้น
แต่อย่างน้อยต้องมีสักอย่าง ฟังก์ชั่นที่ตรวจสอบผู้ชนะ
โดยพื้นฐานแล้วจะเห็นว่า หากบุคคลใดชนะเกมหรือพวกเขาอาจตรวจสอบการเสมอกัน
คุณควรมีฟังก์ชั่น ที่ดึงกระดาน
เพราะคุณกำลังจะวาดรูป กระดานหลังจากเทิร์นของผู้เล่นทุกคน
และคุณกำลังจะ -- ดังนั้น คุณจะนำสิ่งนี้กลับมาใช้ใหม่
ฟังก์ชันอื่นสำหรับการทำเครื่องหมาย
บอร์ดนี้จะเกิดขึ้นเมื่อผู้ใช้ต้องการวางจริงๆ x หรือ o ในกล่องบางช่อง
คุณต้องมีฟังก์ชันเพื่อตั้งค่า กล่องนั้นเป็น x หรือ o
สิ่งที่จะเกิดขึ้นคือคุณคงจะเป็น เติมอาร์เรย์ด้วย x หรือ o นั้น
และด้วยวิธีนี้คุณสามารถมองไปที่ อาเรย์เพื่อดูว่าคุณชนะหรือแพ้
และในกระดานเครื่องหมาย มัน จะช่วยให้คุณสามารถตรวจสอบการเลือกที่ไม่ถูกต้อง
ดังนั้นหากการเลือกที่ถูกต้องคือ หนึ่งถึงเก้าและผู้ใช้ป้อนสิบ
คุณจะพูดว่า เฮ้ คุณทำไม่ได้ ลองอีกครั้ง
เกมควรเป็นมิตรกับผู้ใช้ ควรสัญชาตญาณในการใช้งานเท่าที่มุมมองของผู้ใช้และ
ควรจัดระเบียบเท่ามุมมองของการเขียนโปรแกรม
คิดถึงเรื่องนี้จริงๆ
วางแผน วางแผน ออกเอกสาร เริ่มเขียนการออกแบบเกี่ยวกับวิธีที่คุณจะโจมตีปัญหานี้และอะไร
ฟังก์ชันต่างๆ ที่คุณจำเป็นต้องใช้
แบบที่ฉันคิด ของการดำเนินการนี้ ให้ฉันแสดงให้คุณเห็นเล็กน้อย
ฉันจะไม่แสดงให้คุณเห็นแหล่งที่มาใด ๆ รหัส แต่นี่คือสิ่งที่ฉันคิดว่าเกมจะดูเหมือนเมื่อเราเรียกใช้
อาจจะเป็นชื่อเล็กน้อย ที่บอกว่าเฮ้เกม
แล้วก็นิดหน่อย ข้อมูลเกี่ยวกับผู้เล่น
ผู้เล่น 1 จะเป็น x, ผู้เล่น 2 จะเป็น o
จำไว้ว่าสิ่งนี้ไม่มี ที่จะเล่นคอมพิวเตอร์
คุณสามารถใส่ในแต่ละเทิร์น
เลยต้องมาเล่นเกมนี้ กับเพื่อนที่นั่งข้างคุณและเขาจะต้อง
บอกตำแหน่งที่จะใส่หมายเลข
ถ้าได้จริง ทะเยอทะยานคุณสามารถเขียนเกมเพื่อเล่นกับคอมพิวเตอร์
แต่คุณจะสังเกตได้ว่า 3 x 3 กริดมีตัวเลขในตอนแรก
คุณสามารถใช้ตัวเลขเหล่านี้เพื่อป้อน
ดังนั้นหากคุณเป็นผู้เล่นที่ต้องการ เพื่อผลัดกันและเป็นตัวแทนของ
x ขึ้นอยู่กับว่า ตัวเลขที่ป้อน นั่นคือตำแหน่งที่จะวาง
x
ดังนั้นเราจึงพิมพ์ตารางเราแสดง กระดานแล้วเราก็บอกผู้ใช้ด้วยว่าถึงคราวไหนและ
เราบอกให้ป้อนหมายเลข
ในกรณีนี้ฉันจะไปข้างหน้า และป้อนหมายเลขสองแล้วกดย้อนกลับ
แล้วจะเกิดอะไรขึ้นหลังจากที่ฉันโดน สองแล้วกลับ
จะไปดูว่ามีใครชนะจริงหรือไม่ มันจะล้างหน้าจอและจะวาดกระดานใหม่
ดังนั้น หลังจากที่ฉันกด 2 และเข้าไป คุณจะ สังเกตว่าฉันยังมีชื่ออยู่ ฉันยังมีผู้เล่นที่
1 และผู้เล่นที่ 2
แต่ตอนนี้ในกล่อง 2 ฉันมี x
แล้วฉันควรทำอะไรอีกล่ะ มีฉันควรจะตรวจสอบก่อนที่จะแสดงกระดานว่า
หรือไม่เรามีผู้ชนะหรือเสมอกัน
และแน่นอนว่านั่นเป็นครั้งแรก เข้าดังนั้นเราจึงไม่มี
เพราะเราไม่มีผู้ชนะ หรือเสมอกัน ตอนนี้ผมจะให้ผู้เล่นใส่ตัวเลขแล้ว
พวกเขาสามารถเลือกหมายเลขใดก็ได้ที่นี่
ตอนนี้ถ้าฉันป้อนไม่ถูกต้อง หมายเลขเช่น 10 มันควรจะบอกฉันว่ามันไม่ถูกต้อง
และมันควรจะอนุญาตให้ฉัน อาจจะทำอย่างอื่น
ถ้าฉันป้อน 2, 2 ควรเป็นโมฆะด้วย
ดังนั้นหากฉันป้อน 2 ก็บอกว่าไม่ถูกต้อง เพราะ 2 ถูก x เอาไปแล้ว
ดังนั้นหากโปรแกรมอนุญาติให้ ลองอีกครั้ง คุณสามารถกำจัดตาของพวกเขาได้
แต่นั่นไม่ยุติธรรมเลย
ตอนนี้ฉันแค่จะบอกว่า ฉันต้องการวาง o ที่ไหน? ฉันจะบอกว่า
5 ฉันจะใส่ ย้ายไม่ถูกต้อง มันจะวาดกระดานใหม่
และมี o และ 5
และตอนนี้มันบอกว่าผู้เล่นที่ 1
และคุณทำสิ่งนี้ต่อไปจนกว่า คุณมีผู้ชนะหรือเสมอกัน
ผมแค่จะบอกว่า 9
ตอนนี้ฉันมี x ตรงนั้นถูกต้อง รายการคือ 1 3 4 6 7 และ 8
จะบอกว่า 3
แล้วลองหา x ถึง ชนะ ดังนั้นตอนนี้ x จะไปหารแปด และฉันจะใส่
o และ 6 เพื่อแสดงให้คุณเห็น ที่เกมทำงานร่วมกับผู้ชนะ
แล้วผมก็ใส่ 7 สำหรับ x เกม ตอนนี้ควรจะจบลงแล้ว ฉันตีกลับ
มันบอกว่าผู้เล่นคนหนึ่งชนะ และมัน แม้แต่เล่นเสียงเล็กน้อยสำหรับฉัน ฉันทำสิ่งแฟนซีเล็กๆ
น้อยๆ ที่นั่น
เกมจบลง ผู้เล่นหนึ่งชนะ
และมันควรจะเกิดขึ้นด้วยถ้า ผู้เล่น 2 ชนะหรือถ้าเสมอกัน
ลองคิดดูว่าคุณต้องการแบบไหน เพื่อโจมตีปัญหานี้
โปรแกรมเล็ก ๆ ที่ดี
ฉันจะดำเนินการแก้ไขและจัดหาให้ ซอร์สโค้ดในการบรรยายครั้งต่อไป ขอขอบคุณ.