กลับไปหน้ารวมไฟล์
the-reflex-game-cloudgames2022-45345d.md

โปรเจกต์ **The Reflex Game #cloudgames2022** นี้เป็นเกมสำหรับ 2 ผู้เล่น ผ่าน [Arduino](https://s.shopee.co.th/7fUgFAWSki) IoT Cloud นะน้อง โดยผู้เล่นคนนึงจะอยู่ฝั่งตัวบอร์ด (Carrier) อีกคนอยู่ฝั่ง Cloud อยากรู้กติกาและวิธีเล่น ไปดูที่หัวข้อ "เล่น" ได้เลยจ้า

เริ่มต้นกันเลย:

พอเปิดตัว Carrier ขึ้นมา มันควรจะโชว์หน้าตาประมาณนี้:

กำลังหาเครือข่าย WiFi อยู่นะจ๊ะ

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

เมื่อเชื่อมต่อกับ [Arduino](https://s.shopee.co.th/7fUgFAWSki) IoT Cloud สำเร็จ หน้าจอควรเปลี่ยนเป็นแบบนี้:

เชื่อมต่ออินเทอร์เน็ตแล้ววว

ปุ่ม 0 ใช้เปิด/ปิดเสียง ส่วนปุ่ม 4 ไว้ดูกติกา สำหรับผู้เล่นฝั่ง Cloud ให้พิมพ์คำว่า "rules" ในช่องแชทแทน ส่วนถ้าจะเริ่มเกม ให้กดปุ่ม 2 เลยจ้า

เริ่มเล่นได้แล้ว:

หลังจากกดปุ่ม 2 แล้ว เราต้องรอให้ผู้เล่นฝั่ง Cloud พิมพ์คำว่า "ready" เพื่อเริ่มเกมจริงๆ

เล่นเลย:

ในรอบแรก ผู้เล่นฝั่ง Carrier ต้องกดปุ่ม 0, 1, 3 และ 4 ให้ครบ 10 ครั้ง ส่วนผู้เล่นฝั่ง Cloud ก็ต้องกดปุ่มที่ตรงกันตามที่เห็นบนหน้าจอ

หน้าจอฝั่ง Cloud จะประมาณนี้:

หลังจากเล่นครบ 10 รอบ ระบบจะเข้าสู่ช่วง "interval" หน้าจอจะเปลี่ยนเป็นแบบนี้:

เมื่อช่วง interval จบ หน้าจอจะเปลี่ยนอีกที:

หลังจาก interval จบ เกมจะสลับฝั่ง! ตอนนี้ผู้เล่นฝั่ง Cloud ต้องเป็นฝั่งกดปุ่มให้ครบ 10 ครั้งแทน ส่วนระบบจะจับเวลาว่าผู้เล่นฝั่ง Carrier ใช้เวลากดปุ่มตอบโต้กลับมาเร็วแค่ไหน

จบเกม:

เมื่อเกมจบ ผลลัพธ์มีได้ 3 แบบ: ชนะ, แพ้, หรือในบางกรณีที่หายากมาก (หรือถ้าจงใจทำให้เสมอกัน) ก็จะได้ผลเสมอ หน้าจอจะประมาณนี้:

ตั้งค่าสำหรับผู้เล่นฝั่ง Cloud:

ในการตั้งค่า Dashboard สำหรับผู้เล่นฝั่ง Cloud น้องต้องสร้าง Cloud Thing ใหม่ขึ้นมา ตั้งชื่ออะไรก็ได้ เช่น "The Reflex Game" และสร้าง Variables ตามนี้:

  • DownB; read/write
  • UpB; read/write
  • LeftB; read/write
  • RightB; read/write
  • Down; read only
  • Up; read only
  • Left; read only
  • Right; read only
  • texts; read/write

จากนั้นก็เอาโค้ดที่ด้านล่างสุดของหน้านี้ไปใส่ แล้วสร้าง Dashboard ใหม่ ตั้งชื่อสักชื่อ เช่น "PINEAPPLES" แล้วจัดวางปุ่ม, สถานะ LED, และช่องแชทให้เรียบร้อย มี 2 รูปแบบให้เลือก: แบบสำหรับ Desktop/Laptop กับแบบสำหรับ Phone/Tablet หน้าตาประมาณนี้:

แค่นี้ก็ตั้งค่าเสร็จแล้ว เล่นได้เลย!

อธิบายโค้ดแบบย่อ:

พูดสั้นๆ ก็คือ ทุกครั้งที่ผู้เล่นซึ่งเป็นฝั่งต้องกดปุ่ม (รอบ 1 คือ Carrier, รอบ 2 คือ Cloud) กดปุ่มครบ 1 ครั้ง ระบบจะเพิ่มค่าให้ตัวแปร Integer ชื่อ `countRound` ขึ้น 1 พอครบ 10 ระบบจะเปลี่ยนค่า Boolean `round1` เป็น false และ `gameInterval` เป็น true

การเปลี่ยนค่านี้จะทำให้โค้ดส่วนที่รันรอบ 1 ถูกปิดการทำงาน และเปิดส่วน interval ขึ้นมาแทน พอ interval นับถึง 0 ค่า `gameInterval` จะถูกตั้งเป็น false ซึ่งจะทำให้รอบ 2 เริ่มต้นขึ้น

การจับเวลาระหว่างที่ผู้เล่นคนนึงกดปุ่ม กับอีกคนปล่อยปุ่ม เราใช้ฟังก์ชัน `millis()` มาช่วย

เรามีตัวแปร `unsigned long` ชื่อ `stopWatchStart` ที่เก็บค่าเวลาตอนที่ปุ่มถูกกด จากนั้นเมื่ออีกฝั่งปล่อยปุ่ม ก็จะมี `unsigned long` อีกตัวชื่อ `stopWatch` มาบันทึกเวลาตอนปล่อย แล้วเอามาคำนวณหาค่าเวลาใช้ไปของแต่ละผู้เล่นแบบนี้:player1Time=stopWatchStart-=stopWatch หรือสำหรับผู้เล่น 2 ก็จะเป็น player2Time=stopWatchStart-=stopWatch นั่นเอง

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

สรุป:

และนั่นคือ **The Reflex Game**! หวังว่าน้องๆ จะชอบกันนะ

ถ้าเจอบั๊กหรือมีคำแนะนำอะไร ก็บอกพี่มาได้เลย

อ้อ! แล้วก็คอมเมนต์มาด้วยถ้าน้องเจอและทำ "ความลับ" สำเร็จนะ 🤔🤔

ข้อมูล Frontmatter ดั้งเดิม

title: "The Reflex Game #cloudgames2022"
description: "The Reflex Game is a two player speed and reflex game."
author: "fivetimesdog"
category: "Gadgets, Games & Toys"
tags:
  - "arduinocloudgames"
  - "acg2022"
  - "games"
  - "acg2022"
  - "arduinocloudgames"
views: 2232
likes: 1
price: 1499
difficulty: "Intermediate"
components:
  - "1x Arduino Oplà IoT Kit"
tools: []
apps:
  - "1x Arduino Web Editor"
  - "1x Arduino IDE"
  - "1x Arduino IoT Cloud"
downloadableFiles:
  - "https://create.arduino.cc/editor/fivetimesdog/0d3966e5-f3f3-45ac-8392-659489826fe2/preview"
documentationLinks: []
passwordHash: "c748d58d711b958f5eeb4d824bb12592760ee0509bc2791c801568de4a27be2c"
encryptedPayload: "U2FsdGVkX1+CWafCEGKpkBz4IBPkRjvMFLtNuIfTdKPe5pdEkyhz5ZsA9zzd6EnQl91scb/MqoHIWDG28AI40RlAzT0tzT3sHGBmgT/3euHo1VQyOj8gm9V5V2xfC3CKf/oWk1rZ9e6dC1SI8UK413RpmDNOJ5GcSCBNf5AV+M0="
seoDescription: "The Reflex Game: A fast-paced two-player speed and reflex game built with Arduino. Challenge your friends today!"
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/the-reflex-game-cloudgames2022-45345d_cover.jpg"
lang: "th"