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

CAT & RAT [java]

            ทำเกม แมวจับหนู ด้วยการเขียนภาษา java โดยการแบ่งออกเป็น class
รูปแบบของเกม
- สร้างตารางขนาด n ช่องขึ้นมา
- ให้หนูเดินอยู่ภายในตาราง
- ให้ผู้เล่นบังคับแมวด้วนแ้นตัวเลขเพื่อเดินไปจับหนู
- เมื่อจับหนูได้แล้ว คะแนนจะเพิ่มขึ้น 1 คะแนน ต่อหนู 1 ตัว
- จะสุ่มหนูมาเกิดที่ตำแหน่งใหม่ให้แมวได้จับต่อไป

====class board=====ทำการสร้างบอร์ด ส่งค่าบอร์ดออกไปและรับค่ามาใส่ลงบอร์ด

public class board {
  private int row;
  private int col;
  private char board[][];
  private char player = 'C';
   public board (int row,int col) {
      this.row = row;
      this.col = col;
      this.board= new char[this.row][this.col];
    }
   
   public char getBoard(int row,int col) {
       return this.board[row][col];   
    }
    public void setBoard(int row,int col,char player) {
      this.board[row][col] = player ;
    }

}

====class display===== 
ทำการแสดงบอร์ดออกมาในส่วนผลลัพธ์ของโปรแกรม

public class Display {
private floor board;
  public Display(Board board) {
  this.board = board;
  }
   
    public void display() {
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.print("\t" + this.board.getBoard(i,j));
            }
            System.out.println();           
        }     
}  

====class MAIN====
เรียกใช้งาน class ต่าง ๆ

public class MAIN {
    public static void main(String[]args){
      Board board = new Board(3,3);
      Display show = new Display(board);
   
       while(true) {
           show.display();
           break;
           }
    }
}       

                                      ====================================
สร้างบอร์ดและแสดงบอร์ดได้แล้ว

วันจันทร์ที่ 29 ตุลาคม พ.ศ. 2561

update XO [JAVA]

ทำการแก้ไข นำ การ checkwin ไปใส่ไว้ใน class Board
แก้ไข นำตัวแปร ออกจาก Main
update to bitbucket  :  https://bitbucket.org/Wanvipa/tictactoe/src/default/

===========Class Board=============

public class Board {
private int row;
private int col;
private int x = 1;
private int draw = 0;
private char board[][];
private boolean game_run;
char player = 'X';


    public Board (int row,int col) {
    this.row = row;
    this.col = col;
    this.board= new char[this.row][this.col];
     
    }
 
 
    public char getBoard(int row,int col) {
    return this.board[row][col];   
   
    }
 
    public void setBoard(int row,int col) {
    this.board[row][col] = player ;
   
    }
    public char changeplayer() {
    if (player=='X') {
    return player = 'O';
}
    else {
    return player = 'X';
}
    }
 
public void check_win(int draw){

//check lick
int check_lick = 0;
int r = 2;
System.out.println();
for(int q = 0; q < 3; q++) {
if(this.board[q][q] == 'X')check_lick += 1;
if(this.board[q][q] == 'O')check_lick -= 1;
}
lick_win(check_lick);
check_lick = 0;
for(int p = 0; p < 3; p++) {
if(this.board[p][r] == 'X')check_lick += 1;
if(this.board[p][r--] == 'O')check_lick -= 1;

}
lick_win(check_lick);

//check row and column
for(int i = 0; i < 3; i++) {
int check_row = 0; 
int check_col = 0;
for(int j = 0; j < 3; j++) {
if(this.board[i][j] == 'X')check_row += 1;
if(this.board[i][j] == 'O')check_row -= 1;
if(this.board[i][j] == 'X')check_col += 1;
if(this.board[i][j] == 'O')check_col -= 1;

}

//print result
if(check_row == 3 || check_col == 3) {
System.out.println("X is winner");
x = 0; run_game();
}else if(check_row == -3 || check_col == -3) {
System.out.println("O is winner");
x = 0; run_game();
}else if(draw == 9) {
System.out.println("Draw both");
x = 0; run_game();
}
}
draw += 1;
}
public void lick_win(int check_lick) {
if(check_lick == 3) {
System.out.println("X is winner");
x = 0; run_game();
}
if(check_lick == -3) {
System.out.println("O is winner");
x = 0; run_game();
}

}

public boolean run_game() {
if(x==0)game_run = false;
else if(x==1)game_run = true;
return game_run;
}
}

 
===========Class Main=============
public class MAIN {

    public static void main(String[]args){
    Board board = new Board(3,3);
    Display show = new Display(board);
    InputXO input = new InputXO(board);
   
    while(board.run_game()) {
    show.display();
    input.Inputboard();
    board.changeplayer();
}
        }

}

วันเสาร์ที่ 27 ตุลาคม พ.ศ. 2561

ศึกษา kivy animation

      จากการลองไปศึกษา kivy animation พบว่า kivy animation เป็น ส่วนที่ช่วยให้การทำอนิเมชั่นเป็นเรื่องที่ง่ายขึ้น ด้วยการใช้คำสั่ง
            ชื่อตัวแปร.Animation(ตำแหน่งสุดท้ายที่ต้องการให้ตัวแปรอยู่)
และเมื่อเรียก ชื่อตัวแปร.start(widget) ตัวแปรที่เรากำหนดไว้จะเคลื่อนที่จากจุดเริ่มต้นที่อยู่ไปยังจุดสุดท้ายที่ระบุไว้ ทำให้เราสามารถสร้างอนิเมชั่นได้สะดวกขึ้น แต่หากไม่ใช้ kivy animation ก็สามารถสร้างอนิเมชั่น ได้โดยการใช้คำสั่ง clock  และเรียกใช้ด้วย  clock.schedule(ฟังก์ชันที่ต้องการ,ระยะเวลาที่ต้องการให้เกิดซ้ำ) ก็สามารถทำให้เกิดอนิเมชั่นได้เหมือนกันเช่นตัวอย่าง


class PongApp(App):
    def build(self):
        game = PongGame()
        game.serve_ball()
        Clock.schedule_interval(game.update, 1.0 / 60.0)
        return game

จะมีการเรียกใช้ฟังก์ชัน update ทุกๆ 1/60 วินาที

วันอาทิตย์ที่ 21 ตุลาคม พ.ศ. 2561

XO JAVA [ แยก class ]

        หลังจากที่ทำเป็น method และเรียกใช้งานใน class และ ก็นำ ฟังก์ชันนั้นๆ แยกมาเขียนเป็น class แต่ละ class ดังนี้

===class Board===

เป็นส่วนของการสร้างบอร์ด โดยมี method คือ
สร้างบอร์ด
ส่งค่า board ออกไปใช้งานใน class อื่น
รับค่า จาก class อื่น มาใช้ในการเปลี่ยนค่าข้อมูลในบอร์ด



public class Board {
private int row;
private int col;
private char board[][];
char player = 'X';

    //สร้างบอร์ด
    public Board (int row,int col) {
    this.row = row;
    this.col = col;
    this.board= new char[this.row][this.col];
     
    }
 
    //ส่งค่าบอร์ด
    public char getBoard(int row,int col) {
    return this.board[row][col];   
   
    }
 
    //set ค่าของบอร์ดเป็น X หรือ O
    public void setBoard(int row,int col,char player) {
    this.board[row][col] = player ;
   
    }

    //เปลี่ยนค่า player จาก X เป็น O
    public char changeplayer() {
    if (player=='X') {
    return player = 'O';
}
    else {
    return player = 'X';
}
    }
   }


===class Display===

เป็นส่วนของการแสดงบอร์ดออกมาให้ผู้ใช้เห็นผ่านทาง console
attribute คือ ค่าบอร์ดที่รับมาจาก class Board
method คือ แสดงบอร์ด



public class Display {
private Board board;

public Display(Board board) {
this.board = board;
}
 
    public void display() {
//show board
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.print("\t" + this.board.getBoard(i,j));
            }
            System.out.println();         
        }   
}


}



===class InputXO===

คือ class ที่รับค่า X หรือ O จากผู้เล่นเข้ามาใส่ในกระดาน โดยรับตำแหน่งที่ผู้เล่นต้องการลง X หรือ O มาตรวจสอบ array และรับค่า Board มาจาก class Board แล้วส่งค่า X หรือ O กลับไปให้ method setBoard ที่อยู่ใน class Board เพื่อใส่ X หรือ O ลงในตำแหน่งนั้นๆ



import java.util.Scanner;
public class InputXO {

private Board board;

public InputXO(Board board) {
this.board = board;    

}

public void Inputboard() {
System.out.print( this.board.player + " Enter : ");
System.out.println();
Scanner inPlayer = new Scanner(System.in);
int py = inPlayer.nextInt();
int k = 9;


if(py>0 && py<4)
k = 2;
else if(py<7)
k = 1;
else if(py<10)
k = 0;

this.board.setBoard(k,((py-1)%3),this.board.player);

}
}


ส่วนสุดท้ายคือ
===class checkWin===
ตรวจสอบเงื่อนไขการแพ้ชนะและเสมอกันของเกม โดยรับค่า Board ที่ส่งมาจาก class Board ทำการตรวจสอบตำแหน่งของ X และ O ในกระดานว่าตรงตามเงื่อนไขหรือไม่ หากตรงเงื่อนไขแล้ว  จะให้แสดงผลผู้ชนะ และหยุดเกมทันที



public class CheckWin {
private Board board;
private int x = 1;
private boolean game_run;
public CheckWin(Board board) {
this.board = board;
}
public void check_win(int draw){
//check lick
int check_lick = 0;
int r = 2;
for(int q = 0; q < 3; q++) {
if(this.board.getBoard(q,q) == 'X')check_lick += 1;
if(this.board.getBoard(q,q) == 'O')check_lick -= 1;
}
lick_win(check_lick);
check_lick = 0;
for(int p = 0; p < 3; p++) {
if(this.board.getBoard(p,r) == 'X')check_lick += 1;
if(this.board.getBoard(p,r--) == 'O')check_lick -= 1;
}
lick_win(check_lick);

//check row and column
for(int i = 0; i < 3; i++) {
int check_row = 0; 
int check_col = 0;
for(int j = 0; j < 3; j++) {
if(this.board.getBoard(i,j) == 'X')check_row += 1;
if(this.board.getBoard(i,j) == 'O')check_row -= 1;
if(this.board.getBoard(j,i) == 'X')check_col += 1;
if(this.board.getBoard(j,i) == 'O')check_col -= 1;
}
//print result
if(check_row == 3 || check_col == 3) {
System.out.println("X is winner");
x = 0; run_game();
}else if(check_row == -3 || check_col == -3) {
System.out.println("O is winner");
x = 0; run_game();
}else if(draw == 9) {
System.out.println("Draw both");
x = 0; run_game();
}

}
}

        //ถ้านับเงื่อนไขตรงแล้วจะแสดงผู้ชนะ
public void lick_win(int check_lick) {
if(check_lick == 3) {
System.out.println("X is winner");
x = 0; run_game();
}
if(check_lick == -3) {
System.out.println("O is winner");
x = 0; run_game();
}
}

        // true เล่นต่อได้ false หยุดเกม
public boolean run_game() {
if(x==0)game_run = false;
else if(x==1)game_run = true;
return game_run;
}
}

วันศุกร์ที่ 19 ตุลาคม พ.ศ. 2561

XO JAVA update [แยกฟังก์ชัน]

            นำเกม XO ที่ทำไว้มาทำเป็น class โดยมี attibute คือ row และ column ซึ่งอยู่ใน constructor และ มีฟังก์ชันการทำงาน 3 ส่วนคือ ส่วนที่แสดงบอร์ด ส่วนของการใส่ X หรือ O ลงในบอร์ด และ ส่วนของการตรวจสอบการแพ้ชนะ


------- กำหนดตัวแปรต่าง ๆ --------
import java.util.Scanner;
public class myGame {

private int row;
private int col;
boolean win = true ;
private char board[][];
        private char player = 'X';

------- Constructor  --------
 
    public myGame (int row,int col) {
    this.row = row;
    this.col = col;
    this.board= new char[this.row][this.col];
     
    }
 
-------  แสดงบอร์ด  --------
    public void display() {
// create and show board
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                System.out.print("\t" + board[i][j]);
            }
            System.out.println();         
        }   
   }
 
------- ใส่ X หรือ O ลงในบอร์ด --------
    public void inputXO() {     
        Scanner inPlayer = new Scanner(System.in);

        // player input       
        System.out.print( player + " Enter : ");
        int py = inPlayer.nextInt();
        int k = 9;
    if (player=='X') {
    player = 'O';
    }
    else {
    player = 'X';
    }

        if(py>0 && py<4)k = 2;
        else if(py<7)k = 1;
        else if(py<10)k = 0;
        board[k][(py-1)%3] = player;

    }

------- ตรวจสอบเงื่อนไขการแพ้ชนะ  --------
 
    public void checkwin() {

//check row
for (int i=0; i<=2;i++) {
if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && (board[i][0] == 'X' || board[i][0] == 'O')) {
System.out.println( player + " Win");
}
//check column
else if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && (board[0][i] == 'X' || board[0][i] == 'O')) {
System.out.println( player + " Win");
}

} //check diagonal
if ((board[0][0] == board[1][1] && board[1][1] == board[2][2]) && (board[1][1] == 'X' || board[1][1] == 'O')) {
System.out.println( player + " Win");
}
if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && (board[0][2] == 'X' || board[0][2] == 'O')) {
System.out.println( player + " Win");
}

------- เรียกใช้ฟังก์ชัน  --------
 
public  void start() {
        System.out.println("XO Game");
        System.out.println("Start game with O player ");
        this.board= new char[this.row][this.col];
        display();
        inputXO();
  }
}   


จากนั้น นำ class XOGame ไปเรียกใช้ใน class สำหรับ run

public class MAIN { public static void main(String[]args){ myGame xo = new myGame(3,3); xo.start(); } }


ตัวอย่างจากการเล่นเกม


วันพฤหัสบดีที่ 18 ตุลาคม พ.ศ. 2561

็Hello JAVA

            JAVA คือภาษาสำหรับการเขียนโปรแกรมคอมพิวเตอร์ภาษาหนึ่งซึ่งนิยมนำมาใช้ในการพัฒนาแอพลิเคชัน Android และอื่น ๆ

การทำงานของภาษา JAVA
- เขียนโปรแกรม ด้วยภาษา JAVA และบันทึกไฟล์นามสกุล .java
- คอมไพล์โปรแกรม
- run program

สำหรับการเขียนโปรแกรมภาษาจาวา ได้เลือกใช้ Eclipse เป็น IDE โดยการใช้งาน eclipse มีงั้นตอนง่ายๆ ดังนี้

download JDK from link
download Eclipse SimReal 2018-09 from 
https://www.eclipse.org/downloads/

ทำการลง โปรแกรมตามปกติ 
เมื่อลงเสร็จแล้วสามารถใช้งานได้เลย

ตัวอย่างการ sort และ search

public class MainClass {
   public static void main(String args[]) throws Exception {
      int array[] = { 2, 5, -2, 6, -3, 8, 0, -7, -9, 4 };
      // sort
      Arrays.sort(array);
      printArray("Sorted array", array);   
      // search     
      int index = Arrays.binarySearch(array, 2);
      System.out.println("Found 2 @ " + index);
   }
   private static void printArray(String message, int array[]) {
      System.out.println(message + ": [length: " + array.length + "]");
     
      for (int i = 0; i < array.length; i++) {
         if(i != 0) {
            System.out.print(", ");
         }
         System.out.print(array[i]);                   
      }
      System.out.println();
   }
}

ผลลัพธ์ที่ได้คือ

      Sorted array: [length: 10]
      -9, -7, -3, -2, 0, 2, 4, 5, 6, 8
      Found 2 @ 5

วันพุธที่ 17 ตุลาคม พ.ศ. 2561

xo [by java]

—- code —-



import java.util.Scanner;
public class Game {
private int row;
private int col;
//private char board[][] = new char[row][col];
    private char player = 'X';
 
    public Game(int row,int col) {
    this.row = row;
    this.col = col;
    char board[][] = new char[this.row][this.col];
    }
    public void inputXO() {
    boolean win = true ;
     
        Scanner inPlayer = new Scanner(System.in);

        while (win) {
        // player input
       
        System.out.print("Enter : ");
        int py = inPlayer.nextInt();
        // choose board
        if(py==1)board[0][0]=player;
        else if(py==2)board[0][1]=player;
        else if(py==3)board[0][2]=player;
        else if(py==4)board[1][0]=player;
        else if(py==5)board[1][1]=player;
        else if(py==6)board[1][2]=player;
        else if(py==7)board[2][0]=player;
        else if(py==8)board[2][1]=player;
        else if(py==9)board[2][2]=player;
    }
public  void main(String[] args) {
// array
System.out.println("XO Game");

        display();
     
     
        display();
        checkwin();
        if (player=='X') {
        player = 'O';
        }
        else {
        player = 'X';
        }
        }  
    }

public static void display() {
// array
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                System.out.print("\t" + board[i][j]);
            }
            System.out.println();
         
        }
     
     
}
public void checkwin() {
//check row
for (int i=0; i<=2;i++) {
if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && (board[i][0] == 'X' || board[i][0] == 'O')) {
System.out.println("Win");
}
else if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && (board[0][i] == 'X' || board[0][i] == 'O')) {
System.out.println("Win");
}
else if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && (board[0][0] == 'X' || board[0][0] == 'O')) {
System.out.println("Win");
}
else if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && (board[0][2] == 'X' || board[0][2] == 'O')) {
System.out.println("Win");
}
}
}

}



ปัญหาปัจจุบัน
-ชนะแล้วสามารถเล่นต่อได้
-ตอนชนะไม่บอกชื่อฝ่ายที่ชนะ
-ตรวจสอบการชนะแนวทะแยงไม่ได้

วันพฤหัสบดีที่ 11 ตุลาคม พ.ศ. 2561

ครอบครัวกระต่าย

จากโจทย์ที่ได้รับมาคือ
มีกระต่าย 1 คู่
1 เดือนต่อมา กระต่ายจะโตพร้อมผสมพันธุ์
1 เดือนต่อมา กระต่ายจะออกลูก 1 คู่ ตัวผู้และตัวเมียอย่างละ 1 ตัว
เดือนต่อๆไปกระต่ายก็จะโตและออกลูกไปเรื่อยๆ
คำถามคือ...ในเดือนที่ 12 จะมีกระต่ายทั้งหมดกี่คู่

เดือนที่1  กระต่าย 1 คู่
เดือนที่2  กระต่าย 1 คู่
เดือนที่3  กระต่าย 2 คู่  ( คู่แรกออกลูก 1 คู่)
เดือนที่4  กระต่าย 3 คู่  (คู่แรกออกลูก 1 คู่ ลูกในเดือนที่แล้วโตพร้อมผสมพันธุ์)
เดือนที่4  กระต่าย 5 คู่  (คู่แรกออกลูก 1 คู่ ลูกในเดือนที่แล้วโตพร้อมผสมพันธุ์ ตัวพร้อมผสมพันธุ์                                                  ออกลูก 1 คู่ ลูกในเดือนที่แล้วโตพร้อมผสมพันธุ์)
เดือนที่5  กระต่าย 8 คู่  (ตัวเต็มวัยออกลูกคู่ละ 1 คู่ ลูกในเดือนที่แล้วโตพร้อมผสมพันธุ์ ตัวพร้อมผสม                                            พันธุ์ออกลูก 1 คู่ ลูกในเดือนที่แล้วโตพร้อมผสมพันธุ์)

จะเห็นได้ว่า การเพิ่มขึ้นของกระต่ายเป็นการเพิ่มแบบลำดับ fibonacci ทำให้เราสามารถเขียนโปรแกรมคำนวณจำนวณของกระต่ายได้ดังนี้

month = 12                     #จำนวนเดือนที่ต้องการนับจำนวนกระต่าย
# first two terms
rabb1 = 0                        #กระต่ายเริ่มต้น
rabb2 = 1                        #กระต่ายเดือนที่1
count = 0                        #จำนวนเดือนที่ผ่านไป
rabbit_month = []           #list ของจำนวนกระต่าย

while count < month :
    rabbit_month.append(rabb2)
    nowrabbit = rabb1 + rabb2
    # update values
    rabb1 = rabb2
    rabb2 = nowrabbit
    count += 1
print(rabbit_month)

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

XO Tutorial [การสร้างเกม XO ด้วย Python]

              ส่วนประกอบของเกม XO นั้น มีด้วยกัน 3 ส่วนหลัก คือ 
 - การสร้างตาราง
 - การเลือกใส่ค่า X หรือ O ลงในช่องตาราง
 - การตัดสินแพ้ชนะ

ซึ่งวันนี้จะมาอธิบายเป็นส่วนๆ

1 เริ่มด้วยการสร้างตาราง
            ในการทำเกมในครั้งนี้เราจะใช้ library ที่มีชื่อว่า kivy มาช่วยในส่วนที่เป็น GUI โดยสามารถเข้าาไป download ได้ที่ https://kivy.org/  แล้วมาเริ่มสร้างเกมกันได้เลย

- import สิ่งที่จะนำมาใช้


from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.uix.layout import Layout

โดยใช้ Gridlayout ในการสั่งให้สร้างช่อง 9 ช่อง และใช้ Button ในการระบุช่องทั้ง 9

class Table(GridLayout) :

def __init__(self, **kwargs):
super(Table, self).__init__(**kwargs)

self.arrayXO = []
for item in range(1,10) :
btn = Button(text= " ", id = str(item)) # สร้าง button
self.add_widget(btn) # นำ button ไปใส่ไว้ใน Grid
self.arrayXO.append(btn.id) # นำ id หรือค่าประจำตำแหน่งของปุ่ม
ไปเก็บใน list


2 เมื่อสร้างตารางได้ครบทั้ง 9 ช่องแล้ว ขั้นตอนต่อไปก็คือการใส่ X หรือ O ลงในตาราง
ให้สร้างฟังก์ชันขึ้นมาใหม่ 1 ฟังกืชันสำหรับการกดปุ่ม โดยใช้แนวคิดว่า ตารางมี 9 ช่อง
สามารถเลือกใส่ได้ 9 ครั้ง ก็คือ หากครั้งที่เล่นเป็นเลขคู่ ให้ใส่ ตัว O ถ้าเป็นเลขคี่ ให้ใส่ตัว X

class Table(GridLayout) :

def __init__(self, **kwargs):
super(Table, self).__init__(**kwargs)
self.count = 0 # ให้รอบการเล่นเป็น 0
self.arrayXO = []
for item in range(1,10) :
btn = Button(text= " ", id = str(item))
btn.bind(on_pressed=self.btn_pressed) # หากกดที่ปุ่มให้เรียกใช้ฟังก์ชัน
self.add_widget(btn) btn_pressed
self.arrayXO.append(btn.id)

สร้างฟังก์ชันการกด

def btn_pressed(self,btn) :
self.count += 1
if self.count%2 == 0 : # เป็นเลขคู่
btn.text = "O" # แสดงข้อความ O บนปุ่มที่กด
self.arrayXO[int(btn.id)-1] = "O"
elif self.count%2 == 1 : # เป็นเลขคี่
btn.text = "X"
self.arrayXO[int(btn.id)-1] = "X" # เก็บค่า X เข้าไปแทนที่ค่าประจำตำแหน่ง
ใน list arrayXO


3 ตรวจสอบการแพ้ชนะ
ใช้การตรวจสอบ index ของ X และ O ที่นำไปเก็บใน list หากเรียงกันครบ 3 ตัว ก็ใช้ผู้เล่น
ที่เลือกวางตัวล่าสุดเป็นผู้ชนะ

if self.arrayXO[0]==self.arrayXO[1]==self.arrayXO[2] or
self.arrayXO[3]==self.arrayXO[4]==self.arrayXO[5] or
self.arrayXO[6]==self.arrayXO[7]==self.arrayXO[8] or
self.arrayXO[0]==self.arrayXO[3]==self.arrayXO[6] or
self.arrayXO[1]==self.arrayXO[4]==self.arrayXO[7] or
self.arrayXO[2]==self.arrayXO[5]==self.arrayXO[8] or
self.arrayXO[0]==self.arrayXO[4]==self.arrayXO[8] or
self.arrayXO[3]==self.arrayXO[5]==self.arrayXO[7] :
#condition for check win

if self.count%2 == 0 :
self.add_widget(Label(text=" O win"))
elif self.count%2 == 1 :
self.add_widget(Label(text=" X win"))
หลังจากที่เราใส่เงื่อนไขต่างๆเรียนร้อยแล้ว มีอีก 1 ฟังก์ชันที่เราจำเป็นจะต้องใส่ลงไป นั่นคือ
ฟังก์ชันสั่งให้โปรแกรมทำงาน โดยใช้คำสั่งดังนี้

class xo(App): # เรียกใช้ App
def build(self):
return Table() # เรียก class Table

xo().run() # สั่งให้โปรแกรมทำงาน