Skip to content

Instantly share code, notes, and snippets.

@8th-Light-Blog
Created June 29, 2011 16:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 8th-Light-Blog/1054218 to your computer and use it in GitHub Desktop.
Save 8th-Light-Blog/1054218 to your computer and use it in GitHub Desktop.
Blog Title: Limelight Tutorial: Tic Tac Toe Example (Part 4)
Author: Paul Pagel
Date: September 29th, 2008
it "should make first move in a game" do
@id = "cell_0_0"
@cell_one = Limelight::Prop.new
@scene = MockScene.new
@scene.register("cell_0_0", @cell_one)
self.stub!(:scene).and_return(@scene)
game = mock('game')
Game.should_receive(:current).and_return(game)
game.should_receive(:move).with(0, 0)
game.should_receive(:mark).and_return("X")
mouse_clicked(nil)
@cell_one.text.should == "X"
end
module Cell
def mouse_clicked( event)
game = Game.current
x, y = get_coordinates
game.move(x, y)
cell_prop = scene.find(id)
cell_prop.text = game.mark
end
private ################################
def get_coordinates()
x = id[(id.length - 1)..(id.length - 1)].to_i
y = id[(id.length - 3)..(id.length - 3)].to_i
return x, y
end
end
it "should have message center for feedback to the user" do
@scene.find("message_center").should_not be(nil)
end
main do
board do
3.times do |row|
3.times do |col|
cell :id => "cell_#{row}_#{col}"
end
end
end
end
message_center :id => "message_center"
it "should display in the message center if the space is occupied." do
@id = "cell_0_0"
@cell_one = Limelight::Prop.new
@message_center = Limelight::Prop.new
@scene = MockScene.new
@scene.register("cell_0_0", @cell_one)
@scene.register("message_center", @message_center)
self.stub!(:scene).and_return(@scene)
game = mock('game')
Game.should_receive(:occupied?).with(0, 0).and_return(true)
mouse_clicked(nil)
@message_center.text.should == "This space is occupied, please move in an unoccupied square"
end
module Cell
def mouse_clicked( event)
game = Game.current
x, y = get_coordinates
if game.occupied?(x, y)
message_center = scene.find("message_center")
message_center.text = "This space is occupied, please move in an unoccupied square"
else
game.move(x, y)
cell_prop = scene.find(id)
cell_prop.text = game.mark
end
end
private ################################
def get_coordinates()
x = id[(id.length - 1)..(id.length - 1)].to_i
y = id[(id.length - 3)..(id.length - 3)].to_i
return x, y
end
end
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
require 'cell'
describe Cell do
include Cell
attr_accessor :id
before(:each) do
@id = "cell_0_0"
@cell_one = Limelight::Prop.new
@scene = MockScene.new
@message_center = Limelight::Prop.new
@scene.register("message_center", @message_center)
@scene.register("cell_0_0", @cell_one)
self.stub!(:scene).and_return(@scene)
@game = mock('game', :occupied? => false)
Game.should_receive(:current).and_return(@game)
end
it "should make first move in a game" do
@game.should_receive(:move).with(0, 0)
@game.should_receive(:mark).and_return("X")
mouse_clicked(nil)
@cell_one.text.should == "X"
end
it "should display in the message center if the space is occupied." do
@game.should_receive(:occupied?).with(0, 0).and_return(true)
mouse_clicked(nil)
@message_center.text.should == "This space is occupied, please move in an unoccupied square"
end
end
it "should display there was a winner in the message center" do
@game.should_receive(:move).with(0, 0)
@game.should_receive(:is_winner?).and_return(true)
mouse_clicked(nil)
@message_center.text.should == "Player X has won the game, congratulations"
end
module Cell
def mouse_clicked( event)
game = Game.current
x, y = get_coordinates
if game.occupied?(x, y)
message_center.text = "This space is occupied, please move in an unoccupied square"
else
game.move(x, y)
cell_prop = scene.find(id)
cell_prop.text = game.mark
message_center.text = "Player #{game.mark} has won the game, congratulations" if game.is_winner?
end
end
private ################################
def get_coordinates()
x = id[(id.length - 1)..(id.length - 1)].to_i
y = id[(id.length - 3)..(id.length - 3)].to_i
return x, y
end
def message_center
return scene.find("message_center")
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment