- การสร้างตาราง
- การเลือกใส่ค่า 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() # สั่งให้โปรแกรมทำงาน
ไม่มีความคิดเห็น:
แสดงความคิดเห็น