หน่วยที่ 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 ไปหยุดที่ตำแหน่งที่เราต้องการ

ตัวอย่าง :