In this video we’ll start to build out a Tic Tac Toe game with Kivy and Python!
Tic Tac Toe is a simple game, but it’ll allow us to learn how to use basic logic with Kivy.
In this video we’ll build out the GUI for our game, as well as the restart button functionality.
#kivy #codemy
Python Code: toe.py
GitHub Code: toe.py
from kivy.lang import Builder
from kivymd.app import MDApp
class MainApp(MDApp):
def build(self):
self.theme_cls.theme_style = "Dark"
self.theme_cls.primary_palette = "BlueGray"
return Builder.load_file('toe.kv')
# Define Who's turn it is
turn = "X"
def presser(self, btn):
if self.turn == 'X':
btn.text = "X"
btn.disabled = True
self.root.ids.score.text = "O's Turn!"
self.turn = "O"
else:
btn.text = "O"
btn.disabled = True
self.root.ids.score.text = "X's Turn!"
self.turn = "X"
# Check To See if won
self.win()
def restart(self):
# Reset Who's Turn It Is
self.turn = "X"
# Enable The Buttons
self.root.ids.btn1.disabled = False
self.root.ids.btn2.disabled = False
self.root.ids.btn3.disabled = False
self.root.ids.btn4.disabled = False
self.root.ids.btn5.disabled = False
self.root.ids.btn6.disabled = False
self.root.ids.btn7.disabled = False
self.root.ids.btn8.disabled = False
self.root.ids.btn9.disabled = False
# Clear The Buttons
self.root.ids.btn1.text = ""
self.root.ids.btn2.text = ""
self.root.ids.btn3.text = ""
self.root.ids.btn4.text = ""
self.root.ids.btn5.text = ""
self.root.ids.btn6.text = ""
self.root.ids.btn7.text = ""
self.root.ids.btn8.text = ""
self.root.ids.btn9.text = ""
# Reset The Score Label
self.root.ids.score.text = "X GOES FIRST!"
MainApp().run()
Kivy Design Code: toe.kv
GitHub Code: toe.kv
MDFloatLayout:
MDGridLayout:
size_hint: .5, .5
pos_hint: {'center_x': .5, 'center_y': .7}
cols: 3
rows: 3
Button:
id: btn1
text: ""
font_size: "45sp"
on_release: app.presser(btn1)
Button:
id: btn2
text: ""
font_size: "45sp"
on_release: app.presser(btn2)
Button:
id: btn3
text: ""
font_size: "45sp"
on_release: app.presser(btn3)
Button:
id: btn4
text: ""
font_size: "45sp"
on_release: app.presser(btn4)
Button:
id: btn5
text: ""
font_size: "45sp"
on_release: app.presser(btn5)
Button:
id: btn6
text: ""
font_size: "45sp"
on_release: app.presser(btn6)
Button:
id: btn7
text: ""
font_size: "45sp"
on_release: app.presser(btn7)
Button:
id: btn8
text: ""
font_size: "45sp"
on_release: app.presser(btn8)
Button:
id: btn9
text: ""
font_size: "45sp"
on_release: app.presser(btn9)
MDLabel:
id: score
font_size: "32sp"
text: "X GOES FIRST!"
halign: "center"
pos_hint: {"center_y": .3}
MDRaisedButton:
id: restart
text: "Restart The Game"
pos_hint: {'center_x': .5, 'center_y': .15}
on_release: app.restart()

Add comment