สคริปต์ Delicious Fish ตอน 3

ทดลองเล่นเกม Delicious Fish ในเว็บไซต์ Scratch หรือดาวน์โหลดมาเล่นที่เครื่องคุณเอง ได้ ที่นี้ ปลาทอง 1 และเพื่อนมัน ปลาตัวสีเขียว ซึ่งถูกเพิ่มขึ้นมา เพื่อเพิ่มสีสัน และทำให้เกมท้าทายมากขึ้น โดยมันจะพยายามว่ายอยู่ใกล้ๆ ปลาทอง 1 ตลอดเวลา และที่ทำให้เกมน่าท้าทายมากขึ้น เพราะถ้ากินปลาทอง 1 จะได้โบนัส 2 คะแนน แต่ถ้ากินเพื่อนมัน จะถูกหัก 3 คะแนน สคริปต์ปลาทอง 1 คล้ายกับปลาทองตัวอื่นๆ เมื่อรับรหัส "setup" ก็จะเตรียมตัวเข้าสู่การเล่นด้วยการซ่อนตัวก่อน ในระดับแรก ปลาทอง 1 จะมีหน้าตาเหมือนปลาทองตัวอื่นๆ โดยใช้บล็อกเปลี่ยนชุดแต่งกาย (switch to costume "costume L1") แต่ในระดับสอง สคริปต์จะต่างออกไปเล็กน้อย คือใช้ชุดแต่งกาย "costume L2" ซึ่งตั้งใจให้ต่างจากปลาทองตัวอื่นๆ ช่วยให้ผู้เล่นรู้ว่าปลาทองตัวไหน เป็นตัวที่ 1 นอกจากนั้น เมื่อมันถูกกิน มันจะส่งรหัส "got 1" แทนที่จะส่ง …

Advertisements

สคริปต์ Delicious Fish ตอน 2

ทดลองเล่นเกม Delicious Fish ในเว็บไซต์ Scratch หรือดาวน์โหลดมาเล่นที่เครื่องคุณเอง ได้ ที่นี้ เดิมทีปลาทองทุกตัวเหมือนกันหมดในโปรเจก FishChomp ปลาทองจะว่ายส่ายไปมา และเมื่อชนขอบเวทีก็จะเด้งกลับ ถ้าโดยกินก็จะหายตัวไปสักพักก่อนจะโผล่มา ณ ตำแหน่งใหม่แบบสุ่ม แต่ในโปรเจกนี้ปลาทองต่างไป ทั้งพฤติกรรม และจำนวนที่มากขึ้น โปรเจกนี้มีสองระดับต่อเนื่องกัน โดยมีตัวควบคุมเกมคอยสั่งการ ให้ปลาแต่ละตัวทำงานในแต่ละเหตุการณ์ เหมือนกันบ้าง ต่างกันบ้าง มาดูสคริปต์ของปลาทองตัวที่ 2-4 ซึ่งคล้ายกันมากยกเว้นตอนจบเกม เริ่มจากรับรหัส "setup" เป็นการเตรียมตัวก่อนการเล่นเกมในแต่ละระดับ ซึ่งทำเพียงแค่ซ่อนตัว (hide) และเมื่อได้รหัส "level1" เริ่มต้นเกมระดับแรก ปลาทองก็จะโผล่ออกมา จากนั้นจะทำงานไปเรื่อยๆ ในบล็อก forever เมื่อยังอยู่ในระดับนี้ โดยเช็กตัวแปร "level=1" หรือไม่ ถ้าใช่มันก็จะเคลื่อนไปข้างหน้า 2 หน่วย ส่ายหน้าไปทางซ้ายหรือขวาจากค่าสุ่มระหว่าง -20 ถึง 20 องศา แล้วเช็กตัวเอง ถ้าชนขอบเวทีก็เด้งกลับ ต่อด้วยการเช็กว่าตัวเองถูกกินหรือเปล่า โดยเช็กที่สีส้มของตัวเอง สัมผัสกับสีน้ำเงินของปากปลาตัวใหญ่หรือไม่ ถ้าถูกกินก็จะส่งรหัส "got-me" ให้ปลาตัวใหญ่ จากนั้นซ่อนตัว …

สคริปต์ Delicious Fish ตอน 1

ทดลองเล่นเกม Delicious Fish ในเว็บไซต์ Scratch หรือดาวน์โหลดมาเล่นที่เครื่องคุณเอง ได้ ที่นี้ การควบคุมเกมเป็นกลไกอันสำคัญที่ขับเคลื่อนเกมไปข้างหน้า ตั้งแต่ต้นเกมจนกระทั้งจบเกม ตัวควบคุมเกมทำหน้าที่เชื่อมโยงตัวละครต่างๆ จัดลำดับการทำงาน และติดต่อกับผู้เล่นผ่านหน้าจอของเกม รูปตัวอย่างจากเกม Delicious Fish ด้านล่างนี้ เป็นลำดับของการเล่นเกม (เรียงจากซ้ายไปขวา บนลงล่าง) เริ่มจากบอกวิธีการเล่นสั้นๆ (ถ้าต้องการดูรายละเอียด ไปที่ Project notes) จากนั้นเข้าสู่ระดับแรก (level 1) ถัดไปเป็นฉากขณะเล่นในระดับแรก จากนั้นเข้าสู่ระดับสอง (level 2) ถัดไปเป็นฉากขณะเล่นในระดับสอง สุดท้ายเป็นฉากจบเกม (Game over) ซึ่งบอกคะแนนรวม และก็จำนวนปลาชนิดต่างๆ ที่กินได้ รวมทั้งสองระดับ สคริปต์ของตัวควบคุมเกม (game control) เริ่มเมื่อคลิกธงเขียวก็ส่งระหัส "setup" ให้ปลาทุกตัวเตรียมพร้อมก่อนเข้าสู่การเล่น จากนั้นตั้งค่าเริ่มต้นให้ตัวแปร คะแนน (score), เวลา (time), ระดับ (level), ปลาทอง (goldfish), ปลาทองตัวที่ 1 …

Delicious Fish

โปรเจก Delicious Fish เป็นการต่อยอดโปรเจก FishChomp ที่ผมพยายามอธิบาย แต่นึกขึ้นมาได้ว่ามันอยู่ในคอมๆ ของผมคนเดียว ดังนั้นผมได้ upload โปรเจกนี้ที่ scratch.mit.edu ซึ่งสามารถเล่น หรือ download ได้ ที่นี้ ลองดูนะครับ ช่วยแนะนำติชมด้วยจะดีมากเลย ขอบคุณล่วงหน้าไว้ ณ ที่นี้เลยครับ

ลงมือต่อยอดเกม FishChomp ตอน 2

การควบคุมเกมมีทั้งระหว่างตัวละครในเกม และระหว่างตัวเกมกับผู้เล่น มาดูว่าเราสามารถเพิ่มอะไรได้บ้างในเกม FishChomp การเพิ่มคะแนน (score) เข้าไปทำให้เกมดูท้าทายขึ้น ทำให้ผู้เล่นรู้ความสามารถของตัวเอง การใส่คะแนนบนเวที ทำได้โดยสร้างตัวแปร score ขึ้นมาก่อน ถ้าคลิกบล็อกหน้าตัวแปร (จะเห็นเครื่องหมายถูก) จะทำให้ตัวแปรนั้นแสดงอยู่บนเวที นอกจากนั้นยังสามารถปรับตำแหน่งตัวแปรบนเวทีได้ด้วย โดยใช้เมาส์ลากไปตำแหน่งที่ต้องการ ถ้าไม่มีเวลาจำกัดในการเล่นแต่ละระดับ ก็จะไม่รู้ว่าเกมจะจบเมื่อใด ยกเว้นแต่ว่าในแต่ละระดับมีเงื่อนไขอื่นกำหนด หรือมีเป้าหมายให้ทำ เช่น กินปลาให้ได้ 20 ตัวเป็นต้น ในการต่อยอดนี้เรากำหนดให้แต่ละระดับมีเวลาไม่เท่ากัน ระดับแรกง่ายหน่อย ใช้ 20 วินาที ระดับสองยากขึ้นมานิดหนึ่งเพิ่มเป็น 30 วินาที ใน Scratch ทำนาฬิกาจับเวลาได้ง่ายๆ โดยสร้างตัวแปร time ขึ้นมาแล้วตั้งค่าเวลาที่ต้องการให้มัน จากนั้นนับเวลาถอยหลังที่ละ 1 วินาที จนกระทั่งเป็น 0 เช่นในระดับแรก ตั้งเป็น 20 วินาทีด้วยบล็อกตั้งค่าตัวแปร จากนั้นเช็กว่าตัวแปร time ยังมากกว่า 0 หรือไม่ ถ้าใช่ จับเวลา 1 วินาทีด้วยบล็อก wait จากนั้นลดค่าตัวแปร time ที่ละ …