สำหรับรูปภาพต่างๆที่ใช้ในการสร้างสามารถโหลดได้ใน assest เลยนะครับ ผมเตรียมไว้ให้แล้ว :D
วิธีการสร้าง
- สร้าง Canvas ชื่อว่า Canvas1 เป็นพื้นที่สำหรับเล่นเกม
- กำหนด Properties ของ Canvas1 ได้แก่ Width เป็น Fill parent และ Height เป็น 300 pixel กำหนด BackgroundColor เป็น None
- สร้าง ImageSprite ตั้งชื่อว่า Rocket เป็นฐานยิงจรวด
- อัพโหลดภาพฐานยิงจรวดกำหนดค่า Picture ใน Properties ของ Rocket เป็นรูปฐานยิงจรวดที่เราอัพโหลด และ ลากไปไว้ด้านล่างข้างใน Canvas1 เพื่อที่จะได้เป็นฐานยิงจรวด
- สร้าง ImageSprite ตั้งชื่อว่า Flying เป็นยานบินที่เราต้องการจะยิง
- อัพโหลดภาพยานบินกำหนดค่า Picture ใน Properties ของ Flying เป็นรูปยานบินที่เราอัพโหลด และ ลากไปไว้ด้านบนข้างใน Canvas1 เพื่อที่จะได้เป็นยานบินที่เราต้องการจะยิง
- สร้าง BallSprite ตั้งชื่อว่า Bullet เปลี่ยน PaintColor เป็นสีเขียว ตั้งค่า Radius เป็น 5 เป็นกระสุนจรวดไว้สำหรับยิง
- สร้าง Clock ตั้งชื่อว่า RandPosFlying กำหนด TimeInterval เป็น 3000 ไว้สำหรับกำหนดเวลาการสุ่มตำแหน่งของยานบิน
- สร้าง HorizontalArrangement ไว้ข้างล่างถัดจาก Canvas1 กำหนด Width เป็น Fill Parent และ BackgroundColor เป็น None
- สร้าง Label ชื่อว่า Label1 เปลี่ยน Text เป็น **Score : **
- สร้าง Label ตั้งชื่อว่า LabelScore เปลี่ยน Text เป็น 0
- สร้าง Button ตั้งชื่อว่า Reset เปลี่ยน Text เป็น Reset
- นำ Label1 LabelScore และ Reset ไปไว้ใน HorizontalArrangement ที่สร้างไว้
- เริ่มการกำหนดการทำงานของโปรแกรมโดยไปที่หน้า Blocks
- สร้างบล็อก Rocket.Dragged สำหรับทำให้ฐานยิงเคลื่อนที่ได้ โดยใช้คำสั่ง set Rocket.X to และนำ get currentX มาต่อเข้าด้วยกัน
- การกำหนดการยิงกระสุนจากฐานยิง เมื่อยานบินโดนยิงจะทำให้ยานบินหายไปและเพิ่มคะแนน 1 คะแนน ให้เริ่มจากคำสั่ง Screen1.initialize เมื่อเปิดโปรแกรมจะให้กระสุนมีค่าเป็น invisible หรือมองไม่เห็นก่อน
- กำหนดให้กระสุนยิงออกไปจากฐานยิง เมื่อยานถูกแตะให้กระสุน Moveto มาที่ยานแล้วทำการยิง
อธิบายโค้ดนิดนึง คือตัว Bullet.Speed เนียคือการกำหนดความเร็วของกระสุน ส่วน Bullet.Heading คือ ทิศทางของกระสุน โดย 90 คือ 90 องศา
- เมื่อยานบินโดนยิง ให้กระสุนมีสถานะเป็น invisible โดยใช้ when Flying.CollidedWith เพื่อตรวจสอบว่ายานบินได้โดยวัตถุอื่นชน หรือก็คือ โดนยิงนั้นเอง และ เพิ่มคะแนน 1 คะแนน โดยนำ LabelScore มา +1 และ set LabelScore.Text to เพื่ออัพเดทคะแนน และทำการ Moveto มาที่ฐานและทำการยิงอีกครั้ง
- กำหนดการทำงานให้ปุ่ม Reset เมื่อกดปุ่ม คะแนนจะกลับไปเป็น 0 โดยการ when Reset.Click ให้ set LabelScore.Text to เป็น 0
- สามารถกำหนดเวลาการเคลื่อนไหวของยานบินให้เคลื่อนที่ตลอดเวลาได้โดยการใช้ Clock ที่ชื่อว่า RandPosFlying ที่สร้างไว้ โดยนำบล็อก when RandPosFlying.Timer ให้ set Flying.X to เป็น random integer from 0 to Canvas1.Width - Flying.Width
- เมื่อกระสุนโดนขอบจอให้ set Bullet.Visible to false และทำการ Moveto มาที่ฐานและทำการยิงอีกครั้ง
- ไปที่หน้า Designer ที่ Properties ของ Screen1 และอัพโหลดรูปภาพฉากพื้นหลังทำการกำหนด BackgroundImage เป็นรูปภาพฉากพื้นหลัง
เพิ่มเติมสำหรับคนที่ต้องการกระสุนสมจริงขึ้นด้วยการนำกระสุนมาติดกับบอล
- สร้าง ImageSprite ตั้งชื่อว่า ImgBullet อัพโหลดรูปกระสุนและกำหนด Picture เป็นรูปกระสุน
- สร้าง Clock ตั้งชื่อว่า TicBullet กำหนด TimeInterval เป็น 20
- ไปที่หน้า Blocks สร้างบล็อกชื่อ TicBullet.Timer และให้ภาพกระสุน(ImgBullet) MoveTo ตาม Bullet ไป
- เมื่อหน้าจอเริ่มทำงานให้กำหนด Visible ของ ImgBullet เป็น false ก่อนเพราะเมื่อหน้าจอเริ่มทำงานกระสุนยังไม่ถูกยิงออกจากยาน
- นำ if ที่ตรวจสอบตอน Rocket.Touched ออก เพราะจะทำการกำหนดค่า Visible ของ Bullet เป็น false ดังนั้นถ้าไม่นำ if ออกจะทำให้ไม่เข้าเงื่อนไข หรือ เงื่อนไขไม่ถูกต้องและกระสุนจะไม่ถูกยิง
- นำ Visible ของ Bullet ที่ถูกกำหนดเป็น true จากทุกๆบล็อกออก เพื่อไม่ให้มีการแสดงผลกระสุน จะแสดงผลแค่รูปกระสุนเท่านั้น