Here is a skeleton for Tic Tac Toe. It is far from complete, but illustrates subclassing the widget, and handling keyboard presses, and adding children to app.App.
If you have any questions on any part, just post them in the comments below and I'll try to answer them.
Anyone want to take a crack at finishing this game??
#/usr/bin/env python
from levelstar.sbtk import *
class TicTacToeWidget(widget.Widget):
def __init__(self,id=None,title=None, brailleTitle=None):
widget.Widget.__init__(self,id=id,title=title,brailleTitle=brailleTitle)
self.board=[["Empty","Empty","Empty"],["Empty","Empty","Empty"],["Empty","Empty","Empty"]]
self.ClearBoard()
self.setKeySetHandler('select',self.setpiece)
self.setKeySetHandler('left',self.left)
self.setKeySetHandler('right',self.right)
self.setKeySetHandler('up',self.up)
self.setKeySetHandler('down',self.down)
self.posx=0
self.posy=0
def Speak(self):
self.app.say(self.board[self.posx][self.posy])
out=" Position: " + str(self.posx) + "," + str(self.posy)
self.app.say(out)
def ClearBoard(self):
for i in range(0,3):
for j in range(0,3):
self.board[i][j]="Empty"
def setpiece(self):
if self.board[self.posx][self.posy]=="Empty":
self.board[self.posx][self.posy]="X"
elif self.board[self.posx][self.posy]=="X":
self.board[self.posx][self.posy]="O"
else:
self.board[self.posx][self.posy]="X"
self.Speak()
def left(self):
self.posx=self.posx-1
if self.posx<0:
self.posx=0
self.Speak()
def right(self):
self.posx=self.posx+1
if self.posx==3:
self.posx=2
self.Speak()
def up(self):
self.posy=self.posy-1
if self.posy<0:
self.posy=0
self.Speak()
def down(self):
self.posy=self.posy+1
if self.posy==3:
self.posy=2
self.Speak()
class TicTacToe(app.App):
def __init__(self):
app.App.__init__(self,title='Tic Tac Toe',id='tictactoe')
self.__initMenus__()
self.ttt=TicTacToeWidget()
self.addChild(self.ttt)
self.setKeySetHandler("cancel",self.quit)
def onActivate(self):
self.app.say("Tic Tac Toe")
self.ttt.activate()
def quit(self):
self.stop()
return True
def __initMenus__(self):
self.setAppMenuTitle('Tic Tac Toe')
self.appendAppMenuItem('New Game',self.MenuItem)
def MenuItem(self):
self.app.say("Start New Game")
self.ttt.ClearBoard()
if __name__ == "__main__":
TicTacToe().start('Tic Tac Toe')
