Sha256: 1d42dbead12d198b5cfb0075a022fe62025a1a7f2a426d7c873dc28635bbf9e3
Contents?: true
Size: 1.76 KB
Versions: 3
Compression:
Stored size: 1.76 KB
Contents
require_relative "../../lib/glimmer" require_relative "tic_tac_toe_board" class TicTacToe include_package 'org.eclipse.swt' include_package 'org.eclipse.swt.widgets' include_package 'org.eclipse.swt.layout' include Glimmer def initialize @tic_tac_toe_board = TicTacToeBoard.new @main = @shell = shell { text "Tic-Tac-Toe" composite { layout GridLayout.new(3,true) (1..3).each { |row_number| (1..3).each { |column_number| button { layout_data GridData.new(:fill.swt_constant, :fill.swt_constant, true, true) text bind(@tic_tac_toe_board.box(row_number, column_number), :sign) enabled bind(@tic_tac_toe_board.box(row_number, column_number), :empty) on_widget_selected { @tic_tac_toe_board.mark_box(row_number, column_number) } } } } } } @tic_tac_toe_board.extend(ObservableModel) #make board an observable model @tic_tac_toe_board.add_observer("game_status", self) end def update(game_status) display_win_message if game_status == TicTacToeBoard::WIN display_draw_message if game_status == TicTacToeBoard::DRAW end def display_win_message() display_game_over_message("Player #{@tic_tac_toe_board.winning_sign} has won!") end def display_draw_message() display_game_over_message("Draw!") end def display_game_over_message(message) message_box = MessageBox.new(@shell.widget) message_box.setText("Game Over") message_box.setMessage(message) message_box.open @tic_tac_toe_board.reset end def open @main.open end end TicTacToe.new.open
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
glimmer-0.1.5.470 | samples/tictactoe/tic_tac_toe.rb |
glimmer-0.1.4.470 | samples/tictactoe/tic_tac_toe.rb |
glimmer-0.1.4.swt.pre.4.7.0 | samples/tictactoe/tic_tac_toe.rb |