หน่วยที่ 11 : Game over

ถ้าไม่มีหน้า Game over เกมจะเล่นไปจนกว่า live จะหมด ซึ่งอาจใช้เวลาเกินกว่าเวลาที่กำหนด ฉะนั้นเวลาจะแสดงผลเป็นค่าลบ (ดังภาพ) ดังนั้นเราจึงต้องกำหนดเงื่อนไขให้จบเกม Game over ด้วยเงื่อนไขให้เงื่อนไขหนึ่ง

    • เวลาหมด 30 วินาที --> Game over

    • live หมด -> Game over

Concept Game over

มีเหตุการณ์เกิดขึ้น ดังนี้

    • เวลาหรือชีวิตหมด -- ทุกอย่างจะหยุดนิ่ง

    • มีหน้าต่าง Game over ปรากฏขึ้นมา

      • สรุปคะแนนที่ได้

      • มีปุ่ม Restart เพื่อเล่นเกมอีกครั้ง

    • ระบบ ลบค่าตัวแปรจากเกมที่แล้วให้หมด

    • ระบบ เริ่มเล่นเกมอีกครั้ง

จัดการ layout

  • เพิ่ม 1 layer ตั้งชื่อว่า game over

  • * Layer ไหนเสร็จแล้วให้ล็อกไว้ *

  • Insert new object --> Sprite --> ตั้งชื่อ black --> เทสีดำลงไป

  • ขยาย black สี่เหลี่ยมสีดำหน้าครอบคลุมทั้ง layout

  • ปรับค่า Opacity ของ black เป็น 60 หรือตามแต่เห็นเหมาะสม

  • Insert new object --> Sprite --> ตั้งชื่อ popup --> เรียกภาพ สรุปคะแนน เข้ามา

  • จัดวางไว้กลางหน้าเกม


  • Insert new object --> Sprite --> ตั้งชื่อ restart --> เรียกภาพ ปุ่ม restart เข้ามา


  • กลับไปที่ layer Game

  • ก็อปปี้ text ชื่อ score ออกมา

  • กลับไปที่ layer Game Over

  • วางลงบน popup

  • ปรับแต่งฟอนต์ตามต้องการ

จัดการ Event sheet



ซ่อน layer game over

  • สั่งให้ระบบซ่อน layer game over ไว้ก่อน มิฉะนั้น เริ่มเกมมาจะเจอ layer game over ก่อน และจะเล่นเกมไม่ได้

    • Add Event --> System --> Next --> On start of layout

    • Add action --> System --> Set layer visible

      • เลือก layer ที่ต้องการซ่อนไว้ก่อน ในที่นี้ตือ layer 2 (game over)

      • เลือก Invisible คือ ไม่แสดง

Event sheet


สร้างเงื่อนไขที่จะ game over

มี 2 เงื่อนไข

1. ชีวิตหมด

2. เวลาหมด

ถ้าชีวิตหมด จะเกิดอะไรขึ้น

    • Add Event --> System --> Next --> Compare variable --> Next

      • Variable - เลือกตัวแปร live

      • Comparison - Less or equal น้อยกว่าหรือเท่ากับ

      • Value - 0

      • ถ้าตัวแปร live มีค่าน้อยกว่าหรือเท่ากับ 0


  • Add action จะเกิดอะไรขึ้น

      • System --> Wait --> 0.5 second

      • System --> Set layer visible (สั่งให้ layer 2 แสดงออกมา)

        • Layer --> 2

        • Visibility --> Visible

ถ้าเวลาหมด จะเกิดอะไรขึ้น

    • Add Event --> System --> Next --> Compare variable --> Next

      • Variable - เลือกตัวแปร numTime

      • Comparison - equal to (เท่ากับ)

      • Value - 0

      • ถ้าตัวแปร numTime มีมากกว่าหรือเท่ากับ 0


  • Add action จะเกิดอะไรขึ้น

        • System --> Set layer visible (สั่งให้ layer 2 แสดงออกมา)

          • Layer --> 2

          • Visibility --> Visible

สั่งระบบให้เริ่มเล่นใหม่

  • เมื่อผ่าน event จากข้างบนมาหมดแล้ว

  • สั่งระบบแสดง layer game over ออกมา

    • กลับไปที่ Layout

      • Insert new object --> เลือก Mouse


    • กลับมาที่หน้า Event sheet

    • Add Event --> System --> Layer is Visible --> เลือก layer ที่ต้องการแสดง คือ 2 หรือ layer "game"

  • คลิกขวาหน้ารูปฟันเฟือง

      • Add --> Add Sub-event

        • Mouse --> On object clicked

          • Mouse button - Left (คลิกเม้าส์ข้างไหน)

          • Click type - Clicked (ประเภทของการคลิก)

          • Object clicked - เลือกภาพปุ่ม restart (เลือก object ที่ต้องการคลิก)


      • Add action

        • System --> Restart Layout (เริ่ม layout ใหม่ทั้งหมด)

        • System --> Restart golbol variables to default (ล้างค่าคัวแปรจากเกมที่ผ่านมาหมด)


ในกรณีที่ Layout game ของเรา ยาวมาก จะเกิดปัญหาคือ หน้า Game over ไม่ปรากฏ หรือปรากฏในตำแหน่งที่ไม่ตรงกลางหน้าจอ....

ให้เราจัดวางหน้า Game over ก่อน จากนั้นให้ใช้คำสั่ง set position เพื่อบังคับให้หน้า Game over ไปหยุดที่ตำแหน่งที่เราต้องการ

ตัวอย่าง :