Download Documentation API Reference Samples Asset Store Donate

Tic Tac Toe

https://github.com/pokepetter/ursina/blob/master/samples/tic_tac_toe.py


from ursina import * if __name__ == '__main__':     app = Ursina() camera.orthographic = True camera.fov = 4 camera.position = (1, 1) Text.default_resolution *= 2 player = Entity(name='o', color=color.azure) cursor = Tooltip(player.name, color=player.color, origin=(0,0), scale=4, enabled=True) cursor.background.color = color.clear bg = Entity(parent=scene, model='quad', texture='shore', scale=(16,8), z=10, color=color.light_gray) mouse.visible = False # create a matrix to store the buttons in. makes it easier to check for victory board = [[None for x in range(3)] for y in range(3)] for y in range(3):     for x in range(3):         b = Button(parent=scene, position=(x,y))         board[x][y] = b         def on_click(b=b):             b.text = player.name             b.color = player.color             b.collision = False             check_for_victory()             if player.name == 'o':                 player.name = 'x'                 player.color = color.orange             else:                 player.name = 'o'                 player.color = color.azure             cursor.text = player.name             cursor.color = player.color         b.on_click = on_click def check_for_victory():     name = player.name     won = (     (board[0][0].text == name and board[1][0].text == name and board[2][0].text == name) or # across the bottom     (board[0][1].text == name and board[1][1].text == name and board[2][1].text == name) or # across the middle     (board[0][2].text == name and board[1][2].text == name and board[2][2].text == name) or # across the top     (board[0][0].text == name and board[0][1].text == name and board[0][2].text == name) or # down the left side     (board[1][0].text == name and board[1][1].text == name and board[1][2].text == name) or # down the middle     (board[2][0].text == name and board[2][1].text == name and board[2][2].text == name) or # down the right side     (board[0][0].text == name and board[1][1].text == name and board[2][2].text == name) or # diagonal /     (board[0][2].text == name and board[1][1].text == name and board[2][0].text == name))   # diagonal \     if won:         print('winner is:', name)         cursor.text = ''         mouse.visible = True         Panel(z=1, scale=10, model='quad')         t = Text(f'player\n{name}\nwon!', scale=3, origin=(0,0), background=True)         t.create_background(padding=(.5,.25), radius=Text.size/2)         t.background.color = player.color.tint(-.2) if __name__ == '__main__':     app.run()