วันอังคารที่ 9 ตุลาคม พ.ศ. 2555

โค้ด[ภาษาซี] เกมส์ xo

เกมส์ xo โคยจะมีผู้เล่นสอนคนสลับกันเล่น โดย x คือผู้เล่นคนแรกจะเริ่มก่อน แล้วคนต่อไปก็ตมา จะสลับไปมาจนกว่าจะมีผู้ชนะตรงตามเงื่อนไขของเกมส์


Code:

#include "stdio.h"
#include "conio.h"

void main(){
     int i = 0;
     int player = 0;
     int go = 0;
     int row = 0;
     int column = 0;
     int line = 0;
     int winner = 0;
     char board[3][3] = {
         {'1','2','3'},
         {'4','5','6'},
         {'7','8','9'}
       };
     for( i = 0; i<9 && winner==0; i++)
     {
     clrscr();
     printf("\n\n");
     printf("\t\t\t\t %c | %c | %c\n", board[0][0], board[0][1], board[0][2]);
     printf("\t\t\t\t---+---+---\n");
     printf("\t\t\t\t %c | %c | %c\n", board[1][0], board[1][1], board[1][2]);
     printf("\t\t\t\t---+---+---\n");
     printf("\t\t\t\t %c | %c | %c\n", board[2][0], board[2][1], board[2][2]);
     player = i%2 + 1;

     do{
          printf("\n\t\tPlayer %d, please enter the number [your] %c: ", player,(player==1)?'X':'O');
          scanf("%d", &go);
     row = --go/3;
     column = go%3;
     }while(go<0 || go>9 || board[row][column]>'9');
     board[row][column] = (player == 1) ? 'X' : 'O';

     if((board[0][0] == board[1][1] && board[0][0] == board[2][2]) ||
          (board[0][2] == board[1][1] && board[0][2] == board[2][0]))
          winner = player;
     else
     for(line = 0; line <= 2; line ++)
     if((board[line][0] == board[line][1] && board[line][0] == board[line][2])||
          (board[0][line] == board[1][line] && board[0][line] == board[2][line]))
          winner = player;
      }
     clrscr();
     printf("\n\n");
     printf("\t\t\t\t %c | %c | %c\n", board[0][0], board[0][1], board[0][2]);
     printf("\t\t\t\t---+---+---\n");
     printf("\t\t\t\t %c | %c | %c\n", board[1][0], board[1][1], board[1][2]);
     printf("\t\t\t\t---+---+---\n");
     printf("\t\t\t\t %c | %c | %c\n", board[2][0], board[2][1], board[2][2]);
     if(winner == 0)
     printf("\n\t\t\tHow boring, it is a draw\n");
     else
          printf("\n\t\tCongratulations, player %d, YOU ARE THE WINNER!\n", winner);
}

Output:

เริ่มต้นเกมส์ ฝ่าย x
เริ่มต้นเกมส์ ฝ่าย o
ถ้า x เป็นฝ่ายชนะ
ถ้า o  เป็นฝ่ายชนะ

32 ความคิดเห็น:

  1. ไม่ระบุชื่อ13 พฤษภาคม 2556 09:23

    พี่ค่ะ ทำไมมันรันไม่ได้อ่า

    ตอบลบ
  2. DEV C++ ครับ เวอชั่น 4.9.9.2 ครับ run ไม่ได้ครับ

    ตอบลบ
    คำตอบ
    1. ไม่ระบุชื่อ16 กันยายน 2556 00:38

      ลองลบ void ออกดูน่ะ

      ลบ
    2. ไม่ระบุชื่อ29 กันยายน 2559 21:27

      ลบ clrscr(); ออก ครับ แล้วก้อ void ออกด้วย DEV C++ เวอชั่น 4.9.9.2 จะรันได้ครับ

      ลบ
  3. ไม่ระบุชื่อ24 พฤษภาคม 2556 16:22

    ใช้ devc ครับ รันไม่ได้ เขาบอกว่าผิดที่บรรทัด void main() { และบรรทัด clrscr(); อ่ะครับ แก้ยังไงดีครับ

    ตอบลบ
    คำตอบ
    1. ใช่ครับมันจะมีปัญหาแบบนี้ละครับของ dev คือมันใส่ไม่ตรองที่นั้นและครับลอง turbo cดีกว่าครับ

      ลบ
    2. ใช่ครับมันจะมีปัญหาแบบนี้ละครับของ dev คือมันใส่ไม่ตรองที่นั้นและครับลอง turbo cดีกว่าครับ

      ลบ
    3. ไม่ระบุชื่อ10 กรกฎาคม 2556 01:27

      ของผมใช้ codeblock อยู่ ลองแก้บรรทัดนั้นเป็น system("cls"); ได้ไหมหนอออ

      ลบ
    4. ไม่ระบุชื่อ11 พฤศจิกายน 2556 09:31

      ถ้าใช้ devc ลองลบ clrscr(); กับ void ที่ void main() ดูครับ ของผมทำเเล้วrunได้ปกติดี

      ลบ
  4. ผมรันได้แล้วต้องลบบางตัวออกนิดหน่อย ขอบคุณมากๆครับ

    ตอบลบ
    คำตอบ
    1. ไม่ระบุชื่อ9 กันยายน 2556 22:49

      ลบตัวไหนบ้างอ่าครับ

      ลบ
  5. พี่ค้ะอธิบายแต่ล่ะบรรทัดให้หน่อยได้มั้ย อยากทราบว่าแต่ล่ะบรรทัดมันทำงานยังไง

    ตอบลบ
  6. ความคิดเห็นนี้ถูกผู้เขียนลบ

    ตอบลบ
  7. ความคิดเห็นนี้ถูกผู้เขียนลบ

    ตอบลบ
  8. แก้ clrscr(); เป็น system("cls"); ต้องเขียน #include "stdlib.h" ด้วยนะครับ

    ตอบลบ
  9. ไม่ระบุชื่อ19 กรกฎาคม 2557 16:42

    อยากรุ้ว่าเเต่ละบรรทัด แปลว่าอะไรมั่งคับ

    ตอบลบ
  10. ไม่ระบุชื่อ23 กุมภาพันธ์ 2558 12:27

    ช่วยทำแผนผัง XO ให้ดูหน่อยได้ป่าวค่ะ

    ตอบลบ
  11. ไม่ระบุชื่อ5 มีนาคม 2558 08:31

    Devc++
    #include "stdlib.h" ตัวเปิดคำสั่งลบจอภาพของDevc++
    Void mainเปลี่ยนเป็น int main
    clrscr(); (turboc++)เปลี่ยนเป็น system("cls"); ใช้ลบจอภาพ
    อย่าลืมgetch(); ปิดท้าย

    ตอบลบ
  12. ไม่ระบุชื่อ8 เมษายน 2558 16:39

    อยากทราบความหมายของแตาล่ะบรรทัด ค่ะ
    พอดีสนใจ โค้ดนี่อยากศึกษาค่ะ รบกวนผู้รู้ช่วยหน่อยน่ะค่ะ

    ตอบลบ
  13. ไม่ระบุชื่อ31 กรกฎาคม 2558 19:33

    บอกผมหน่อยครับ ทำไหมมันขึ้น
    C:\Users\Pc\Desktop\Untitled2.cpp `main' must return `int'
    C:\Users\Pc\Desktop\Untitled2.cpp In function `int main(...)':
    C:\Users\Pc\Desktop\Untitled2.cpp `clrscr' undeclared (first use this function)
    Each undeclared identifier is reported only once for each function it appears in.)

    ตอบลบ
    คำตอบ
    1. ความคิดเห็นนี้ถูกผู้เขียนลบ

      ลบ
  14. ไม่ระบุชื่อ17 สิงหาคม 2558 21:59

    พอเขียนโปรแกรมเสร็จ รันโปรแกรม .exe ไม่ได้ ทำยังใงดี

    ตอบลบ
  15. ผมขอคำอธิบายหนอย คร้าบ ว่า จะรู้ได้ไงว่า โค้ดตัวไหน ที่ทำให้เป็นเกมชนะ
    อย่างเช่น 357 123 อ่ะรัยบบนี้อ่ะคร้าบ ขอคำอธิบาย โค้ด

    ตอบลบ
  16. ตัวแปร go และตัวแปร line หมายถึงอะไรค่ะ

    ตอบลบ
  17. เกือบดีแล้วครับ อีกนิดเดียวคือ ป้อน 10 เข้าไป โปรแกรมจะผิดพลาดนะครับ แก้เป็น go>8 น่าจะครอบคลุมขึ้น เพราะว่าเราไป --go เอาไว้

    ตอบลบ
  18. ไม่ระบุชื่อ13 มีนาคม 2561 10:09

    ผมรันไม่ใด้

    ตอบลบ