Construct 2 : สร้างแบบทดสอบให้เป็นเกมต่อสู้ (ตอนที่ 2)

ในบทความก่อนหน้านี้ เราได้จัดเตรียมทรัพยากรต่างๆ ไว้พร้อมแล้ว วันนี้เราจะมาทำกำการเขียนคำสั่งเพื่อควบคุมวัตถุต่างๆ ให้ทำงานตามความต้องการของเรา ก่อนอื่น เราต้องเพิ่มวัตถุอื่นๆ ที่จำเป็นลงในโครงการของเราเสียก่อน ได้แก่ Array, Function, AJAX, Audio, Mouse หรือ Touch นำเข้าไฟล์เสียงทั้งหมดที่ใช้ไปเก็บไว้ในโฟลเดอร์ Sound ของ Construct 2  และนำเข้าไฟล์ข้อสอบ (questions.txt) ไปไว้ใน โฟลเดอร์ File (ตัวอย่างไฟล์ข้อสอบ)

เมื่อดำเนินการเรียบร้อยเรามาเริ่มกันเลยครับ

1. เปิด Event Sheet ขึ้นมา

2. เพิ่ม Global Variable จำนวน 4 ตัวแปร ดังนี้

  • score เป็นตัวแปรประเภท number ตั้งค่าเริ่มต้น เป็น 0
  • timer เป็นตัวแปรประเภท number ตั้งค่าเริ่มต้น เป็น 10
  • selectChoice เป็นตัวแปรประเภท text ตั้งค่าเริ่มต้น เป็น ว่าง
  • ans  เป็นตัวแปรประเภท text ตั้งค่าเริ่มต้น เป็น ว่าง

3. เพิ่ม Event ->  System -> On start of layout

  • เพิ่ม Action -> System -> Set layer visible -> Layer = “attack” -> Visibility = Invisible
  • เพิ่ม Action -> System -> Set layer visible -> Layer = “questions” -> Visibility = Visible
  • เพิ่ม Action -> Array -> Set size ->  Width = 10 -> Height = 1 -> Depth = 1
  • เพิ่ม Action -> AJAX -> Request project file -> Tag = “loader” -> File = questions.text

4. เพิ่ม Event ->  AJAX -> On Completed -> Tag = “loader”

  • เพิ่ม sub Event ->  System -> for -> Name = “loader” -> Start index = 0 -> End index = 9
    • เพิ่ม Action -> Array -> Set at x ->  x = loopindex(“index”) -> Value = trim(tokenat(AJAX.LastData,loopindex(“index”),”|”))
  • เพิ่ม sub Event ว่าง (เพิ่มหลังจากสรา้งฟังก์ชั่น “loadQuestion” แล้ว)
    • เพิ่ม Action -> Function -> Call function ->  Name = “loadQuestion”

5. เพิ่ม Event ->  Function -> On function -> Name = “loadQuestion”

  • เพิ่ม Action -> System -> Set layer visible -> Layer = “questions” -> Visibility = Visible
  • เพิ่ม Action -> System -> Set layer visible -> Layer = “attack” -> Visibility = Invisible
  • เพิ่ม Action -> System -> Set value -> Variable = selectChoice -> Value = “”
  • เพิ่ม Action -> hero -> Set position -> X= 110 -> Y = 401 (ปรับตามตำแหน่งของท่าน)
  • เพิ่ม Action -> monster -> Set mirrored -> State = mirrored
  • เพิ่ม Action -> monster -> Set position -> X= 705 -> Y = 399 (ปรับตามตำแหน่งของท่าน)
  • เพิ่ม Action -> hero -> Set animation -> Animation = “stand” -> From = beginning
  • เพิ่ม Action ->monster -> Set animation -> Animation = “stand” -> From = beginning
  • เพิ่ม Action ->Audio -> Stop -> Tag = “feedback”

  • 5.1 เพิ่ม sub Event ->  Array -> Is empty
    • เพิ่ม Local variable -> Name = rand -> Type = Number -> Initial value = 0
    • เพิ่ม Action -> System -> Set value -> Variable = rand -> Value = int(random(Array.Width))
    • เพิ่ม Action -> TextQ -> Set text -> Text = trim(tokenat(Array.At(rand),0,”;”))
    • เพิ่ม Action -> Text1 -> Set text -> Text = trim(tokenat(Array.At(rand),1,”;”))
    • เพิ่ม Action -> Text2 -> Set text -> Text = trim(tokenat(Array.At(rand),2,”;”))
    • เพิ่ม Action -> Text3 -> Set text -> Text = trim(tokenat(Array.At(rand),3,”;”))
    • เพิ่ม Action -> Text4 -> Set text -> Text = trim(tokenat(Array.At(rand),4,”;”))
    • เพิ่ม Action -> System -> Set value -> Variable = ans -> Value = trim(tokenat(Array.At(rand),5,”;”))
    • เพิ่ม Action -> Array -> Delete -> Index = rand -> Axis = X

  • 5.2 เพิ่ม Event ->  System -> Else
    • เพิ่ม Action -> System -> Go to layout -> Layout = finish

6. เพิ่ม Event ->  Function -> On function -> Name = “check”

  • เพิ่ม Action -> System -> Set value -> Variable = selectChoice -> Value = Function.Param(0)
  • เพิ่ม Action -> System -> Set layer visible -> Layer = “questions” -> Visibility = Invisible
  • เพิ่ม Action -> System -> Set layer visible -> Layer = “attack” -> Visibility = Visible

7. เพิ่ม Event ->  Touch -> On tap object -> Object -> Text1

  • เพิ่ม Action -> Function -> Call function ->  Name = “check” -> Parameter 0 = Text1.Text

8. เพิ่ม Event ->  Function -> On tap object -> Object -> Text2

  • เพิ่ม Action -> Function -> Call function ->  Name = “check” -> Parameter 0 = Text2.Text

9. เพิ่ม Event ->  Function -> On tap object -> Object -> Text3

  • เพิ่ม Action -> Function -> Call function ->  Name = “check” -> Parameter 0 = Text3.Text

10. เพิ่ม Event ->  Function -> On tap object -> Object -> Text4

  • เพิ่ม Action -> Function -> Call function ->  Name = “check” -> Parameter 0 = Text4.Text

11.  เพิ่ม Event ->  thunder -> On destroyed

  • เพิ่ม sub Event ->  System -> Compare variable -> Variable = ans -> Comparison = Equal to  -> Value = selectChoice
    • เพิ่ม Action -> monster -> Set animation -> Animation = “stand” -> From = beginning
    • เพิ่ม Action -> hero -> Set animation -> Animation = “die” -> From = beginning
    • เพิ่ม Action -> System -> Add to -> Variable = score -> Value = 1
  • เพิ่ม sub Event ->  System -> Else
    • เพิ่ม Action -> monster -> Set animation -> Animation = “die” -> From = beginning
    • monster -> Set mirrored -> State = Not mirrored
    • เพิ่ม Action -> hero -> Set animation -> Animation = “stand” -> From = beginning

12.  เพิ่ม Event ->  System -> Every tick

  • Add another Condition -> hero -> Is overlap another object -> Object = monster
    • Set invert
  • Add another Condition -> System -> Layer is visible -> Layer = “attack”
    • เพิ่ม Action -> hero -> Set X -> X =Self.X+150*dt
    • เพิ่ม Action -> monster -> Set X -> X =Self.X-150*dt
    • เพิ่ม Action -> hero -> Set animation -> Animation = “walk” -> From = beginning
    • เพิ่ม Action -> monster -> Set animation -> Animation = “walk” -> From = beginning

12. เพิ่ม Event ->  hero -> Is overlap another object -> Object = monster

  • Add another Condition ->System -> Trigger once while true
    • เพิ่ม Action -> monster -> Spawn another object -> Object = thunder -> Layer = 2 -> Image point = 1
    • เพิ่ม Action -> hero -> Set animation -> Animation = “attack” -> From = beginning
    • เพิ่ม Action -> monster -> Set animation -> Animation = “attack” -> From = beginning
    • เพิ่ม Action -> System -> Wait -> Seconds = 3.71 (เวลาของการแสดงการต่อสู้ตั้งได้ตามต้องการ)
    • เพิ่ม Action -> thunder -> Destroy

ในตอนนี้ขอจบการเขียนคำสั่งเกี่ยวกับตัวข้อสอบและการควบคุมภาพเคลื่อนไหวของตัวละครเพียงเท่านี้ก่อนนะครับ คอยพบกับการควบคุมเสียงและแถบเวลาในบทความต่อไปในตอนหน้านะครับ

สวัสดีครับ !