.
ถ้าผมเข้าใจคำถามไม่ผิดนะครับ คุณอยากให้ตอบผิดแล้ววนกลับไปถามใหม่เรื่อยๆ จนกว่าจะถูกแบบไม่มีกำหนดหรือเปล่า
เท่าที่ดูจากคลิป ถ้าผมเข้าใจถูกคือตอบรอบที่สอง ไม่ว่าจะผิดหรือถูกมันก็ไม่เช็คอีกครั้งใช่ไหมครับ
ปัญหาน่าจะเป็นเพราะ ท่านใช้คำสั่งให้เลือก choice จากนั้นเช็คตัวแปรว่าถูกหรือผิด
พอตอบผิด ท่านก็ใช้คำสั่งเลือก choice ใหม่ แต่หลังจากนั้นไม่ได้เช็คอีก จึงเป็นเหตุผลว่าทำไมเหตุการถึงตัดจบไปเลย และแน่นอนว่าถ้าเช็คถูกผิดไปเรื่อยๆ ต้องเช็คไปตลอดกาลไม่รู้จบแน่ๆ ประมาณนั้นไหมครับ
วิธีแก้ไข มีสองวิธีครับ
1. ใช้ Loop
คำสั่ง Loop จะเป็นการวนซ้ำ ซึ่งคำสั่งอยู่ใน Event Command หน้าแรก หัวข้อ Flow Control อันที่ 2 วิธีนี้จะเหมือน loop เวลาเขียนโปรแกรม เมื่อทำคำสั่งด้านใน Loop หมดแล้วก็จะย้อนขึ้นไปเริ่มใหม่ วนไปตลอดกาลไม่มีวันจบ เช่นจากภาพ
จากตัวอย่างผมมีข้อความ Hello! และใช้คำสั่ง Loop ครอบข้อความ 123 และ 456 (คำสั่งมันจะเป็น Loop ... Repeat Above แล้วครอบด้วยของข้างใน) และนอก Loop จบด้วยข้อความ Bye!
เมื่อรันก็จะเป็นการแสดงข้อความ Hello! และเมื่อเข้า Loop ก็จะแสดงข้อความ 123 ตามด้วย 456 กลับไป 123 และ 456 วนไปอย่างนี้ตลอดกาล และเกมก็จะดำเนินการต่อไปไหนไม่ได้อีกเลย แม้ด้านล่างจะมีคำสั่ง Bye! ก็จะไม่มีวันปรากฎขึ้นเพราะไม่ได้ออก Loop
ทีนี้วิธีการจาก Loop ทำยังไง ต้องใช้คำสั่ง Break Loop (Event Command อันถัดจาก Loop) ซึ่งคำสั่งนี้จะออกจาก Loop ทันทีโดยไม่สนใจคำสั่งใน Loop ที่เหลือ
เมื่อเรารู้ดังนี้แล้วก็สามารถเขียน Event ที่คุณต้องการได้ดังนี้
จากภาพ เมื่อตอบผิดก็จะวนขึ้นไปเรียก Common Event ถามใหม่ไปเรื่อยๆ จนกว่าจะตอบถูก และเมื่อตอบถูกและเจอคำสั่ง Break Loop ก็จะหลุดพ้นบ่วงกรรม
2. ใช้ Label
วิธีนี้เป็นวิธีที่ท่านอาจจะเข้าใจง่ายกว่า loop
วิธีนี้ตรงไปตรงมามากครับ ใช้คำสั่ง Label และ Jump to Label (อยู่ใน Event Command หน้าแรกตรง Flow Control เช่นกัน)
จากภาพ เราสร้าง Label ชื่อ "กลับมาถามใหม่" จากนั้นในเงื่อนไขที่ตอบผิด เราก็ใช้คำสั่ง Jump to Label ให้กระโดดไป Label ที่เราสร้างไว้ข้างบน ให้กลับไปบรรทัดด้านบนเรียก Common Event และเช็คใหม่
ตัวอย่างจากทั้งสองวิธีได้ผลลัพธ์เหมือนกันทุกประการ
แต่วิธี Label น่าจะดูง่ายกว่าและเหมือนจะไม่งง แต่อย่างไรก็ตาม ผมแนะนำให้ใช้วิธี Loop มากกว่า เพราะ
1. ถ้าสมมุติมี Label ใน Event เดียวกันเป็นจำนวนมาก ท่านจะงงและสับสันแน่นอนว่าอะไรกระโดดไปไหนกันแน่
2. การใช้ Loop เป็นหลักการเขียนโปรแกรมที่ดีกว่าครับ
ปล. ผมมีข้อสงสัยอยู่ครับ
Quote:คือจะทำเป็นชอยส์ให้เลือกน่ะครับ
ซึ่งกรณีที่ทำเป็นให้เลือกชอยส์โดยตรงเลยประเภท
--------------------------------------
Show Choice 1 ไปต่อได้
Choice 2 บังคับเลือกใหม่
Choice 3 บังคับเลือกใหม่
Choice 4 บังคับเลือกใหม่
Choice 5 บังคับเลือกใหม่
--------------------------------------
อันนี้ไม่มีปัญหา
ถ้าไม่ใช้ Loop หรือ Label ท่านทำอย่างไรให้ไม่มีปัญหาหรือครับ ผมมองว่าแม้จะเป็นชอยส์ธรรมดา มันก็เกิดปัญหาทำนองเดียวกันอยู่ดีนะ *0*
---