วันอังคารที่ 25 กันยายน พ.ศ. 2561

XO update


   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 ลงไปแล้ว 
     OUTPUT จะแสดงค่าตอรการกดครั้งที่...      

     และนำสัญลักษณ์ไปแทนลงในตำแหน่ง



ถ้าเรียงตรงกันตามเงื่อนไข จะ print ฝ่านที่ชนะลงบนช่องแสดง output

ไม่มีความคิดเห็น:

แสดงความคิดเห็น