ผู้เล่น 2 คน โดยในส่วนของขนาดของตารางก็แล้วแต่ว่าตัวผู้เล่นจะกำหนดขึ้นมาว่า
จะใช้ขนาดเท่าไหร่คูณเท่าไหร่ก็ขึ้นอยู่กับตัวผู้เล่นเลือกใช้แล้วตามสะดวก
ในส่วนของตัวกติกาในการเล่นและวิธีการชนะก็ขึ้นอยู่กับการเล่นการกำหนด
ของผู้เล่นเช่นเดียวกันอาจจะมีการลูกเล่นพิเศษๆแปลกไปตามแต่ละกรณี
งั้นเดะเราไปดูการเขียนเกม XO โดยใช้ภาษา C คร่าวๆกันเลยนะครับ
ขั้นตอนการทำมีคร่าวๆประมาณนี้ครับ
- กำหนดตัวตารางสำหรับเกมก่อนแล้วแต่คนเล่น ในส่วนนี้ขอกำหนด เป็น 4*4
เนื้องจากให้ข้อมูลในตารางว่างก่อน เลยกำหนดเป็นตัวว่างมาก่อนจะได้โค้ด: เลือกทั้งหมด
char Table[4][4]= { {' ',' ',' ',' '}, {' ',' ',' ',' '}, {' ',' ',' ',' '}, {' ',' ',' ',' '} };
- ส่วนของการกำหนดผู้เล่นว่าฝ่ายไหนจะได้เล่นก่อน ส่วนตัวจะให้ผู้เล่น เริ่มก่อน
โดยใช้ตัวของรอบการเล่นเป็นตำกำหนด จะได้คร่าวๆประมาณนี้ครับโค้ด: เลือกทั้งหมด
int round =0; round = round + 1; if(round%2!=0)//Player 1
- ส่วนต่อมาก็จะเป็นวิธีการเล่นของเกมก็อยู่ที่ว่าจะมีการกำหนดการเล่นแบบไหน
ในส่วนของตัวเกม ผมสมมติขึ้นมาคร่าวๆว่าจะมีการใส่ xo ปกติ แต่จะมีการใส่ XO
ตัวใหญ่ได้ 3 ครั้ง ซึ่งจะสามารถใส่ทับได้แค่ตัวเล็กของ xo ที่มีการใส่ในตารางเท่านั้น
ส่วนวิธีการเช็คโค้ดส่วนนี้ จะมีการเก็บค่าจะได้โค้ด: เลือกทั้งหมด
//ในส่วนของ การรับค่า xo scanf("%c",&Ans1); while(Ans!='x')//เป็นการเช็คว่าไม่ได้มีการใส่ทับรอบการเล่นของคนอื่น { scanf("%c",&Ans); }
โค้ด: เลือกทั้งหมด
//ในส่วนของการรับค่า XO if (countX >0) { printf("You select x or X ???\n"); canf("%c",&Ans); while(Ans!='x'&& Ans!='X')//เป็นการเช็คว่าไม่ได้มีการใส่ทับรอบการเล่นของคนอื่น { scanf("%c",&Ans); } }
- ต่อมาก็จะเป็นการเลือกพื้นที่ จะได้
เป็นการเช็คตำแหน่งว่าใส่ได้หรือป่าว มีการเลือกแกนตามแหน X แกน Y
โค้ด: เลือกทั้งหมด
//ตัวอย่างการเลือกพื้นที่ while (x1<1||x1>4) { printf("Enter a number of Landscape(1-4)\n"); scanf("%d",&x1); } while(y1<1||y1>4) { printf("Enter a number of Vertical(1-4)\n"); scanf("%d",&y1); } if(Table[x1-1][y1-1]=='x'||Table[x1-1][y1-1]=='o'||Table[x1-1][y1-1]=='X'||Table[x1-1][y1-1]=='O') { while(Table[x1-1][y1-1]=='x'||Table[x1-1][y1-1]=='o'||Table[x1-1][y1-1]=='X'||Table[x1-1][y1-1]=='O') { x1=0; y1=0; while (x1<1||x1>4) { printf("Enter a number of Landscape(1-4)\n"); scanf("%d",&x1); } while(y1<1||y1>4) { printf("Enter a number of Vertical(1-4)\n"); scanf("%d",&y1); } } } Table[x1-1][y1-1]=Ans1;
- ส่วนของการเช็คชนะ ก็เช็คตำแนวตั้งแนวนอนให้เป็นแถวเหมือนกันหรือหลักเหมือนกันคร่าวๆจะได้
ตัวอย่างที่ชนะ
โค้ด: เลือกทั้งหมด
//เช็คชนะ if(Table[0][0]=='x'||Table[0][0]=='X') { if(Table[1][1]=='x'||Table[1][1]=='X') { if(Table[2][2]=='x'||Table[2][2]=='X') { if(Table[3][3]=='x'||Table[3][3]=='X') { printf("X win!"); R=R+1; } } } }
ที่สามารถประยุกต์เล่นได้หลากมากมาย แล้วแต่ผู้จะเลือกวิธีการเล่น
และกำวิธีการเล่นต่างๆ วิธีการชนะได้มากมายหลากรูปแบบ
อ้างอิง
https://www.w3schools.com/c/index.php
https://www.w3schools.com/c/c_syntax.php
https://www.w3schools.com/c/c_output.php