web analytics

แนะนำเกม ชักเย่อเรือ จากโปรเจควิชา Concurrent Programming พร้อม Source Code

1

 

สวัสดีครับ บทความนี้เป็นบทความสั้นๆ ที่จะมาแนะนำเกี่ยวกับเกมที่ผมได้ทำกับเพื่อนๆ เป็นโปรเจคในวิชา Concurrent Programming ครับ ผมได้ตกลงกับเพื่อนๆแล้วว่าจะนำเกมนี้แจกเป็น open source ไปเลย เผื่อมีคนสนใจ และสามารถเอาไปเป็นแนวทางได้ ในวิชา Concurrent Programming เป็นวิชาที่น่าสนใจอยู่นะ เกี่ยวกับการทำงาน โปรเซสพร้อมๆกันที่มีทรัพยากรจำกัด มีทฤษฏีอยู่พอสมควรเลยละ ใครที่สนใจ และมีโอกาสสามารถเรียนได้ ก็แนะนำให้ลงเรียนวิชานี้เลยจ้า

 

ดาวน์โหลด

ดาวน์โหลดโปรแกรม

 

เริ่มต้น

เกม JAW MA JAW JUM JUK  เป็นเกมแข่งชักเย่อเรือ คล้ายๆ ที่คนแข่ง แต่เอาเรือมาให้คนพายๆๆๆ ต้านกันแทน น่าสนุกใช่มัยละ โดยเกมนี้จะจำลองการแย่งชิงทรัพยากรในเซิฟเวอร์ โดยให้ผู้เล่นแย่งกันกดปุ่มบนคีบอร์ด ในช่วงเวลาหนึ่งใครกดได้มากที่สุด เรือจะขยับไปทางผู้เล่นฝ่ายนั้นนิดนึง กดค้างไม่ได้นะ โดยเล่นได้ 6 คน แบ่งเป็นฝ่ายละ 3 คน (6 คนเท่านั้นนะ)

 

แย่งกันใช้ server ในช่วงเวลาหนึ่ง

2

การพัฒนา

การทำเกมลักษณะนี้ ที่ต้องใช้ network ด้วยจะต้องเข้าใจเรื่อง Thread และก็เรื่องที่เกี่ยวกับ Socket โดยโปรเจคนี้พัฒนาด้วย C# เป็น Visual studio project ในโปรเจค แบ่งเป็น 3 ส่วนคือ

  1. Client ที่ทำงานเบื้องหลัง โดยใช้ 1 Thread ต่อ 1 ผู้เล่น
  2. Client ที่เป็น Windows Form (GUI ส่วนตัวประสาน)
  3. Server โดยมี 6 threads สำหรับผู้เล่น 6 คน และมีอีก 1 Thread คอยจัดการการคำนวณ

หลักๆคร่าวมีเท่านี้ครับ เดี๋ยวเราจะมาลองเล่นกันครับ

4

 

รันเซิฟเวอร์

ก่อนอื่นต้องรัน server ขึ้นมาก่อน พอเปิดขึ้นมาจะเป็นจอดำๆ แบบนี้

เข้าที่ server/bin/debug/consoleApplication2.exe

5-1

 

รันตัวเกม

เปิดตัวเกมขึ้นมา ที่ Client_WF\bin\Debug\Client_WF.exe 

จะพบกับหน้าจอที่มีคนเชียร์แบบนี้ ฮ่าๆ

6

 

เชื่อมต่อกับเซิฟเวอร์

พอเปิดเกมขึ้นมาแล้ว ก็ใส่ ip ของ server ลงไปในช่อง IP Address server ในกรณีที่เล่นเครื่องตัวเอง (เครื่องเดียวกับ server) ให้ใส่ localhost แทน แต่ถ้าเพื่อนเปิด server เครื่องอื่น ก็ให้ใส่ ip เพื่อนลงไปครับ (เอา ip จาก ipconfig) พอใส่ไปแล้วกด connect ถ้าถูกต้อง มันก็จะขึ้นว่า connected (ต้องอยู่ในเครือข่ายเดียวกัน) และที่ server ก็จะขึ้นด้วยเช่นกันว่ามีคนมาเชื่อมต่อแล้ว 1 คนนะ

7

 

 

ทีนี้ก็ทำให้ครบ 6 คน (ข้อเสียคือต้องมีให้ครบ 6 ผู้เล่นนี่แหละ) ถ้าลองเล่นคนเดียวก็เปิดเกมซ้อนๆได้เลย

พอดีผมมีอยู่คนเดียว ผมจะเปิดทีเดียว 6 คนเลยนะ และพอเข้าเกมครบแล้ว ก็จะสามารถเลือกฝ่ายได้ มีฝ่ายแดงกับฝ่ายน้ำเงิน

8

 

แต่ถ้ามีคนเลือกสีนึงครบ 3 คนแล้วคนที่ 4 จะเลือกอีกไม่ได้ ต้องไปเลือกอีกสีนึง

9

 

ลองเล่นกัน

พอเลือกครบหมดแล้ว เกมก็จะนับถอยหลัง 5 วินาที 5..4..3..2..1..Go!! ก็จะแย่งกันกดปุ่มครับ

ปุ่มที่กดได้คือ Z และ X ต้องกดแบบสลับไปมาเท่านั้นนะ zx zx zx zx zx zx zx zx

10

 

เกมเริ่มแล้ว ฝีพาย พายได้ ก็จะจั้มๆๆๆ  จะเห็นว่าที่ฝั่ง server จะรอรับผลที่กด แล้วจะคำนวณฝั่งไหนกดได้มากกว่าก็จะไปฝั่งนั้น ถ้าเท่ากันก็จะไม่ขยับ

11

 

เล่นไปเล่นมา กดๆๆ จนสามารถพายข้ามไปได้ ก็จะได้ผู้ชนะแล้ว เหนื่อยเลยน่ะสิ

12

 

พอเกมจบก็จะขึ้น WIN และ LOSE ในแต่ละหน้าจอ

13

จบแล้ว

หวังว่าโปรเจคนี้จะเป็นประโยชน์และแนวทางสำหรับผู้ที่สนใจการทำ เกี่ยวกับ concurrent ลักษณะนี้ หรือเกี่ยวกับ socket ครับ สามารถดาวน์โหลด source code ไปศึกษาได้เลยครับ

 

ดาวน์โหลด source code

https://github.com/benznest/jawmajawjumjuk

 

ขอขอบคุณอาจารย์ รัศมีทิพย์ วิตา อาจารย์ผู้สอนวิชา Concurrent Programming ที่ปรึกษาและให้คำแนะนำ