code ปัจจุบัน
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
class Table(GridLayout) :
def __init__(self, **kwargs):
super(Table, self).__init__(**kwargs)
self.cols = 3
self.padding = 50
self.spacing = 2
self.round = 0 #count round for change player
self.arrayXO = [] #collect position
#add button to the layout
for item in range(1,10) :
btn = Button(text= " ", id = str(item))
btn.bind(on_press = self.btn_pressed)
self.add_widget(btn)
self.arrayXO.append(btn.id)
def btn_pressed(self,btn) :
self.round += 1
if self.i%2 == 0 :
btn.text = "O"
self.arrayXO[int(btn.id)-1] = "O"
elif self.i%2 == 1 :
btn.text = "X"
self.arrayXO[int(btn.id)-1] = "X"
print(btn.id)
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.i%2 == 0 :
print(" O win")
elif self.i%2 == 1 :
print(" X win")
class xo(App):
def build(self):
return Table()
xo().run()
โดยหลังจากเปลี่ยนมาใช้ Visual Studio แล้ว มีปัญหาคือ เมื่อกด run ไปแล้ว และกลับมาแก้ไข code หากไม่กด save โปรแกรมจะจำค่า code เดิม ไม่ run ไในส่วนที่แก้ไข ทำให้ต้อง save ทุกครั้งที่แก้ไข code
และในส่วนของปุ่มกด ได้ใช้คำสั่ง bind เป็นการเชื่อมโยงปุ่มเข้ากับฟังก์ชัน btn_pressed โดยการใช้คำสั่ง on_press ที่จะไปเรียกใช้ฟังก์ชัน btn_pressed ในขณะที่กดปุ่ม ซึ่งจะแตกต่างกับคำสั่ง on_release ที่จะทำงานหลังจากที่กดปุ่มและปล่อยแล้ว
การใส่ค่า X O ลงใน list เพื่อนำไปตรวจสอบการชนะ
หน้าต่างเกม ในขณะที่กด X และ O ลงไปแล้ว
และนำสัญลักษณ์ไปแทนลงในตำแหน่ง
ถ้าเรียงตรงกันตามเงื่อนไข จะ print ฝ่านที่ชนะลงบนช่องแสดง output
ไม่มีความคิดเห็น:
แสดงความคิดเห็น