Categories
Game

Desktop tower defense

ในศึกสงครามไม่ใช่ใช้แต่กำลังถึงจะชนะได้ แต่ต้องอาศัยกลยุทธ์ที่ดี เช่นเดียวกับในเกม Desktop tower defense เมื่อเล่นเกมในระดับสูงๆ ก็จะพบว่าต่อให้ป้อมปราการมีอาวุธร้ายแรงเพียงใด ก็มิอาจต้านทานคู่ต่อสู้ที่ทั้งอึดและเร็วขึ้นเรื่อยๆ

การนี้ต้องอาศัยหลายกลยุทธ์ผนวกเข้าด้วยกัน นั้นก็คือ

  • เขาวงกต (maze) ที่ต้องอาศัยการวางแผนสร้างเส้นทางเขาวงกตให้ได้ยาวที่สุด
  • การบริหารทรัพยากร ป้อมมีอยู่หลายชนิดต้องใช้ให้ถูกงาน ให้สัมพันธ์กับเงินที่มี ณ ขณะนั้น ป้อมที่มีประสิทธิภาพสูงก็แพง แต่ถ้าจำเป็นก็ต้องใช้ เมื่อใดควรปรับปรุงก็ควรทำ และที่สำคัญต้องเน้นที่ตำแหน่งการวางป้อมเป็นสำคัญ
  • การบริหารจัดการให้มีประตูหลายๆบานเปิดปิดเป็นจังหวะให้ศัตรูเคลื่อนที่ไปมาให้นานที่สุด (juggling) นานพอที่จะให้ป้อมปราการสามารถสยบพวกมันได้
Categories
Scratch

ผีเสื้อกับนางฟ้า

ผีเสื้อเป็นผู้นำดอกไม้มาที่สวนแห่งนี้โดยปกติมันจะซ่อนตัว และรอคำสั่งจากผู้ใช้ว่าจะให้ปลูกดอกไม้ตรงไหน เมื่อใดที่ผีเสื้อรู้แล้วว่าจะปลูกดอกไม้ตรงไหน มันก็จะบินไปที่นั้นและเลือกว่าจะปลูกดอกไม้ชนิดใด ดอกไม้ที่ได้รับเลือกก็จะบานออกและถ้าดอกไหนโชคดีก็จะมีนางฟ้าลงมาเชยชม

สคริปต์ของผีเสื้อเริ่มต้นด้วยการซ่อนตัว (hide) และทำตัวเล็กๆ (set size to 25%) และก่อนที่มันจะวาดดอกไม้ในสวนมันจะลบ (clear) ค่าต่างๆของปากกา (pen) และสแตมป์ (stamp) ซึ่งเป็นอุปกรณ์ใช้วาด ผีเสื้อจะรอ (wait until) การชี้ตำแหน่งจากผู้ใช้ (mouse down?) ซึ่งไม่มีทางรู้ล่วงหน้าว่าผู้ใช้จะกดเมาส์เมื่อใด ดังนั้นผีเสื้อต้องรอปลูกดอกไม้ไปเรื่อยๆในบล็อกตลอดเวลา (forever)

เมื่อใดที่เมาส์ถูกคลิก ตำแหน่งของเมาส์จะถูกเก็บไว้ในตัวแปรภายใน (built-in variables) ของ Scratch นั่นก็คือ mouse x, mouse y ผีเสื้อจะไปยังตำแหน่ง x ของเมาส์ และ y ที่ -200 ซึ่งอยู่ด้านล่างนอกกรอบเวที ก่อนจะปรากฏตัว (show) และส่งเสียง “Chimes1” โดยบล็อกเล่นเสียง (play sound) ก่อนจะเริ่มต้นวาดดอกไม้ เพื่อความหลากหลายสีสันต้องตั้งค่าสีของปากกาโดยสุ่มค่าสีระหว่าง 20 ถึง 80 และเปลี่ยนเชดสีโดยสุ่มค่าระหว่าง -20 ถึง 20 กำหนดขนาดของปากกาโดยสุ่มค่าระหว่าง 2 ถึง 6 จากนั้นจรดปากกา (pen down) หลังจากนี้ถ้าผีเสื้อเคลื่อนที่ไปที่ใดก็จะวาดลายเส้นไปด้วย ดังนั้นเมื่อมันเคลื่อนที่ไปยังตำแหน่งของเมาส์ภายใน 1 วินาที (glide 1 secs to x: mouse x y: mouse y) ก็จะเป็นการวาดก้านของดอกไม้ เมื่อมันยกปากกา (pen up) มันก็จะหยุดวาด

ผีเสื้อจะสุ่มเลือกดอกไม้ที่มีอยู่ 5 ชนิดแล้วเก็บไว้ที่ตัวแปร “flower” แล้วส่งรหัสสัญญาณ “draw-flower” เพื่อให้ดอกที่ได้การสุ่มเลือกวาดดอกนั้นๆ ก่อนที่มันจะจากไป (hide) มันยังเชิญชวนให้นางฟ้ามาชมดอกไม้นี้ โดยสุ่มค่ามาค่าหนึ่ง (lucky) ถ้าโชคดีนางฟ้าก็จะมาเยือน

จะรู้ได้อย่างไรว่านางฟ้าจะมาเยือนหรือไม่ ในสคริปต์ของนางฟ้า ปกตินางฟ้าจะไม่ปรากฎกาย (hide) แต่ว่านางฟ้าจะคอยเช็คว่าค่าความโชคดี (lucky) มากกว่า 95 เมื่อใด (ค่าสุ่มสูงขนาดนี้ ต้องโชคดีจริงๆ) นางฟ้าก็จะปรากฎกาย ณ ตำแหน่งของดอกไม้ (ตำแหน่งเมาส์คลิก) โดยที่นางฟ้าจะหันไปยังทิศตะวันตก (-90) ถ้าค่าตำแหน่งเมาส์ x > 0 (x=0 คือตรงกึ่งกลางเวที) มิฉะนั้นจะหันไปยังทิศตะวันออก (90) โดยใช้บล็อกชี้ไปยังทิศ (point to direction) เป็นตัวกำหนดการหัน นางฟ้าจะปรากฎกายเพียง 1 วินาทีก่อนจะหายตัวไปและตั้งค่าโชคดีกลับเป็น 0 ใหม่