สารบัญ:

Battle City Remake บน GameGo ด้วย Makecode Arcade: 4 ขั้นตอน (พร้อมรูปภาพ)
Battle City Remake บน GameGo ด้วย Makecode Arcade: 4 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Battle City Remake บน GameGo ด้วย Makecode Arcade: 4 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Battle City Remake บน GameGo ด้วย Makecode Arcade: 4 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: MakeCode Arcade Advanced - Boss Battle 2024, พฤศจิกายน
Anonim
Image
Image

GameGo เป็นคอนโซลพกพาสำหรับเล่นเกมย้อนยุคที่เข้ากันได้กับ Microsoft Makecode พัฒนาโดย TinkerGen STEM education มันใช้ชิป STM32F401RET6 ARM Cortex M4 และสร้างขึ้นสำหรับนักการศึกษา STEM หรือเพียงแค่ผู้ที่ชอบสนุกกับการสร้างวิดีโอเกมย้อนยุค คุณสามารถทำตามบทช่วยสอนนี้และลองเล่นเกมในโปรแกรมจำลอง Makecode Arcade แล้วเรียกใช้บน GameGo

ในบทความนี้ เราจะพยายามสร้างเกมยิงรถถัง Battle City แบบคลาสสิก ซึ่งเดิมผลิตและเผยแพร่ในปี 1985 โดย Namco สำหรับ Nintendo Entertainment System (NES) ในเกมดั้งเดิม ผู้เล่นควบคุมรถถังและยิงขีปนาวุธเพื่อทำลายรถถังศัตรู รถถังศัตรูพยายามที่จะทำลายฐานของผู้เล่น เช่นเดียวกับรถถังของผู้เล่นเอง เราจะทำการปรับเปลี่ยนการเล่นเกมเพื่อให้เข้ากับแนวทางปฏิบัติในการเขียนโปรแกรมบล็อกด้วย GameGo ได้ดีขึ้น แต่การสร้างใหม่ของเราจะยังคงมีความคล้ายคลึงกันมากกับเกมดั้งเดิม เอาล่ะ!

เสบียง

GameGo

ขั้นตอนที่ 1: Alter-ego ของเรา - ถังสีเหลือง

Alter-ego ของเรา - ถังสีเหลือง
Alter-ego ของเรา - ถังสีเหลือง

เปิด Makecode Arcade ที่ https://arcade.makecode.com/ และคลิกที่โครงการใหม่ เราจะเริ่มสร้างอัตตาของเราให้กลายเป็นรถถังสีเหลือง เลือก Set mySprite เป็น sprite of kind player block และดึงรถถังสีเหลืองหงายขึ้นด้านบนเป็น sprite เริ่มต้นของเรา วางบล็อกนั้นไว้ด้านในของ start block เพิ่ม move mySprite พร้อมบล็อคปุ่ม ตอนนี้เรามีรถถังที่สามารถเคลื่อนที่ด้วยปุ่มในการจำลองได้! ดีแต่หันหน้าไปทางเดียวกันเสมอแม้เมื่อเราเลื่อนลงหรือไปด้านข้าง…

ในการแก้ไขนั้น ให้เพิ่มบล็อกอีกสี่บล็อก หนึ่งบล็อกสำหรับแต่ละปุ่มทิศทางสร้างตัวแปรใหม่ เรียกว่าทิศทาง - เราจะบันทึกทิศทางการเคลื่อนที่ของรถถังของเราในนั้น 100 จะสอดคล้องกับลง -100 จะสอดคล้องกับขึ้น 200 สำหรับขวาและ -200 สำหรับซ้าย ทำไมตัวเลขเหล่านี้? คุณจะเห็นในภายหลัง เมื่อเราเพิ่มโพรเจกไทล์ที่รถถังของเราจะยิง ตรรกะภายในบล็อกทั้งสี่นี้ง่ายมาก - เราตรวจสอบว่าทิศทางใหม่ (จากการกดปุ่ม) เหมือนกับทิศทางก่อนหน้านี้หรือไม่ หากเป็นเช่นนั้น โดยพื้นฐานแล้ว เราจะไม่ทำการเปลี่ยนแปลงใดๆ หากไม่ใช่ เราจะเปลี่ยนสไปรท์ของรถถัง และในกรณีที่ทิศทางลงและซ้าย เราจะพลิกภาพของสไปรท์เพื่อหลีกเลี่ยงการดึงสไปรต์เพิ่มเติม สุดท้าย มากำหนดทิศทางเริ่มต้นเป็น -100 (รถถังขึ้นไป) เพราะนี่คือวิธีที่รถถังของเราเริ่มเกม ลองย้ายถังสีเหลืองตอนนี้สไปรท์จะเปลี่ยนไปตามทิศทางของการเคลื่อนไหวทันที! ยอดเยี่ยม ตอนนี้ขอเพิ่มกระสุน

เราจะยิงกระสุนที่มีกระสุนนัดไปยังโพรเจกไทล์ (วาดสี่เหลี่ยมเงินเล็กๆ สำหรับสไปรท์นั้น) จาก mySprite ด้วยความเร็ว vx vy ด้านในของปุ่มเปิด A บล็อกกดเราต้องตรวจสอบค่าสัมบูรณ์ของทิศทางเพื่อดูว่าถังสีเหลืองหงายขึ้น / ลงซ้าย / ขวาหรือไม่ จากนั้นเราดำเนินการยิงกระสุนปืนด้วยความเร็วของตัวแปรทิศทาง - นั่นคือสาเหตุที่เรามี -100/100/-200/200 สำหรับค่าทิศทาง

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

ขั้นตอนที่ 2: นำศัตรูออกมา

ดึงศัตรูออกมา
ดึงศัตรูออกมา
ดึงศัตรูออกมา
ดึงศัตรูออกมา

เราจะเริ่มขั้นตอนนี้โดยการสร้างตัวแปรใหม่จำนวนหนึ่ง: อาร์เรย์สองชุด (ชุดหนึ่งสำหรับเก็บภูตผีศัตรูและอีกชุดหนึ่งสำหรับควบคุมทิศทางของศัตรู) ตัวแปรเวลาวางไข่สำหรับเก็บช่วงเวลาระหว่างการวางไข่ จำนวนศัตรูสำหรับเก็บจำนวนศัตรูสูงสุด ในเวลาเดียวกัน. นอกจากนี้เรายังจะเพิ่มโพรเจกไทล์สองอัน (โพรเจกไทล์และโพรเจกไทล์ของศัตรู) ที่ยิงเข้าในบล็อกเริ่มต้น ซึ่งจะช่วยให้เราหลีกเลี่ยงข้อผิดพลาดได้ในภายหลัง

ต่อไปเราจะสร้างในการอัปเดตเกมทุกๆ … ms บล็อก ใส่ตัวแปร spawn_time ที่นั่น ตรรกะภายในบล็อกนั้นง่าย - หากจำนวนศัตรูทั้งหมดในสนามรบน้อยกว่าจำนวนศัตรูสูงสุดที่อนุญาต ให้เพิ่มศัตรูลงในศัตรู_sprite_list แล้วเพิ่ม 200 (ไปทางขวา) ทิศทางสำหรับศัตรูนั้น

ถัดไป ในบล็อกของศัตรูที่สร้างบนสไปรต์ เราเพิ่มเอฟเฟกต์กราฟิก วางไว้บนไทล์ว่างแบบสุ่ม และเรียกใช้ฟังก์ชัน pick_direction สำหรับสไปรต์นี้ ในสไปรท์ชนิดศัตรูชนกำแพง เราเรียกฟังก์ชันเดียวกันว่า pick_direction

มีอะไรอยู่ในหน้าที่นั้น? นี่คือสิ่งที่เริ่มซับซ้อนเล็กน้อย ดังนั้นเดี๋ยวก่อน มีโอกาส 50 เปอร์เซ็นต์ที่รถถังศัตรูจะเพิ่มขึ้นและ 50 เปอร์เซ็นต์จะลดลง - เราเปลี่ยนสไปรท์ตามนั้น เคล็ดลับเดียวที่นี่คือ เราต้องเปลี่ยนค่าที่สอดคล้องกับรถถังศัตรูนั้นในศัตรู_directions_list ให้เป็นทิศทางใหม่ ดังนั้นเราจึงต้องให้มันยิงกระสุนไปในทิศทางที่ถูกต้อง เพื่อที่เราจะพบดัชนีของสไปรท์ของศัตรูในศัตรู_sprite_list และเปลี่ยนค่าของไอเท็มนั้นในรายการศัตรู_directions

สุดท้าย มาเพิ่มการยิงกัน เราเพิ่มรายการอื่นในการอัปเดตเกมทุกๆ 500 ms บล็อกและใส่ a สำหรับรายการในศัตรู_sprite_list ด้วยโอกาส 30% สไปรต์ของศัตรูจะยิงกระสุนของศัตรูในทิศทางการเคลื่อนที่ของมัน

หากเราเปิดเกมในการจำลองตอนนี้ เราจะสามารถเห็นรถถังสีเหลืองและรถถังศัตรูของเราปรากฏในจุดเดียวกันและเข้าสู่พื้นที่ว่าง เราสามารถยิงและพวกเขาก็สามารถยิงรถถังสีเหลืองของเราได้ แต่ไม่มีอะไรเกิดขึ้น ยังคงให้ความรู้สึกไร้ความหมาย:) มาเพิ่มการตกแต่งและกลไกของเกมเป็นขั้นตอนสุดท้ายกัน

ขั้นตอนที่ 3: 42 ของเกม

42 ของเกม
42 ของเกม
42 ของเกม
42 ของเกม
42 ของเกม
42 ของเกม

เราจะเริ่มขั้นตอนนี้โดยเพิ่มชีวิตและคะแนนจากแท็บข้อมูลและตั้งค่าชีวิตเป็น 10 และให้คะแนนเป็นศูนย์ จากนั้นเราเพิ่ม block set tile map ไปที่ …. วาดแผนผังไฟล์ให้ดูเหมือนที่คุณเห็นในภาพหน้าจอด้านบน อย่าลืมเพิ่มกำแพง!

มาเพิ่มสไปรท์ชนิดโปรเจกไทล์ทับซ้อนกับสไปรท์ชนิดอื่นๆ ของผู้เล่นกันเถอะ - นี่คือเวลาที่กระสุนของศัตรูพุ่งเข้าใส่รถถังสีเหลืองของเรา เราจำเป็นต้องตรวจสอบให้แน่ใจว่าโพรเจกไทล์เหล่านี้เป็นกระสุนของศัตรู ไม่ใช่ของเรา ดังนั้นเราจะเพิ่มว่าหากเงื่อนไขภายในบล็อกและหากประเมินว่าเป็นจริง เราจะลบหนึ่งอันออกจากจำนวนชีวิต ในทำนองเดียวกัน ในบล็อกอื่นบนสไปรท์ชนิด Projectile ซ้อนทับกับศัตรูประเภท Sprite อื่นๆ เราตรวจสอบให้แน่ใจว่าโพรเจกไทล์นั้นเป็นโพรเจกไทล์จากรถถังสีเหลือง และหากเงื่อนไขนี้ประเมินว่าเป็นจริง เราจะทำลาย otherSprite(รถถังศัตรู) ให้ลบออกจากรายการ ของศัตรู_sprite_list และเพิ่มหนึ่งรายการเพื่อทำคะแนน

สิ่งสุดท้ายคือเงื่อนไขชัยชนะและความพ่ายแพ้ - สำหรับชัยชนะ เราจะตรวจสอบว่าคะแนนสูงกว่าหรือเท่ากับ 10 ในบล็อกตลอดกาลหรือไม่ ถ้าใช่ เราจะแสดงหน้าจอชัยชนะ และในบล็อกศูนย์ชีวิต เราจะแสดงหน้าจอเกมโอเวอร์

ตอนนี้ลองใช้ในการจำลองเพื่อดูว่าเกมทำงานตามที่คาดไว้หรือไม่ จากนั้นอัปโหลดไปที่ GameGo และสนุกไปกับการทำลายรถถังศัตรู!

ขั้นตอนที่ 4: เกมและการปรับปรุงที่ไม่มีที่สิ้นสุด

เกมและการปรับปรุงที่ไม่มีที่สิ้นสุด
เกมและการปรับปรุงที่ไม่มีที่สิ้นสุด

ในที่เก็บ GitHub ของเรา คุณสามารถดาวน์โหลดไฟล์สองไฟล์สำหรับ Makecode Arcade ไฟล์หนึ่งจะเหมือนกันทุกประการที่คุณจะได้รับหากคุณทำตามคำแนะนำนี้ และอีกไฟล์หนึ่งเป็นเวอร์ชันอัปเกรด ซึ่งสร้างระดับความก้าวหน้าแบบสุ่ม มี 10 ระดับ โดยแต่ละระดับจะถูกสร้างขึ้นแบบสุ่มด้วยจำนวนศัตรูที่เพิ่มขึ้นในแต่ละระดับที่ต่อเนื่องกัน

และแน่นอนว่ายังมีอีกหลายสิ่งที่คุณหรือนักเรียนของคุณสามารถเพิ่มลงในเกมได้ มีเพลงที่ดีกว่า กำแพงที่แตกหักได้ เงื่อนไขชัยชนะที่แตกต่างกัน และอื่นๆ!

หากคุณสร้างเกมเวอร์ชันที่ปรับปรุงแล้ว แบ่งปันในความคิดเห็นด้านล่าง! สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ GameGo และฮาร์ดแวร์อื่นๆ สำหรับผู้ผลิตและผู้ให้การศึกษา STEM โปรดเยี่ยมชมเว็บไซต์ของเรา https://tinkergen.com/ และสมัครรับข้อมูลจากบล็อกของเรา

TinkerGen ได้เริ่มแคมเปญ Kickstarter สำหรับ MARK (Make A Robot Kit) ซึ่งเป็นชุดหุ่นยนต์สำหรับสอนการเขียนโค้ด หุ่นยนต์ AI!

แนะนำ: