Skip to content

Instantly share code, notes, and snippets.

View nthx's full-sized avatar

Tomasz Nazar nthx

View GitHub Profile
class RunningABikeUseCase
def execute(player)
player.wakeUp
player.getTheBike
player.ride
player.rest
end
end
class RunningABikeUseCase
def execute(player)
player.wakeUpAndRide #looks nice to read, but hides important
player.rest #detail on what "wakeUpAndRide" really is
end
end
class RunningABikeAndFailingUseCase
def execute(player)
class Player
constructor: (@name, @age) ->
throw_a_dice: () =>
...
pick_a_card: () =>
...
class PlayingMonopolyUseCase
execute: (game, player, board) =>
game.player_throws_a_dice(player,
(field) ->
bonuses = game.apply_bonuses_from_field_cards(player, field)
game.take_other_players_bets_and_pick_best_and_apply(player)
if bonuses
sample_scenario = ->
game = new BoardGame('Arkham')
tom = new Player('tomasz')
game.generate_example_move(tom)
alert game.calculate_bonus_for_player(tom)
class BoardGame
constructor: () ->
@board_cells = []
/home/nthx/market/app/assets/javascripts/engine (4 usages)
engine.js.coffee (3 usages)
(56: 15) @services.appLoader.bind("components:loaded", => @eventBroker.trigger("assets:loaded"))
(57: 15) @services.appLoader.run()
(66: 15) @services.appLoader.componentsLoaded()
services.js.coffee (1 usage)
@nthx
nthx / gist:1680248
Created January 26, 2012 01:13
bootstrap
#= require ./engine/engine
$ ->
(new shooter.aspects.AppLoaderScreen()).execute()
gameboxedEngine = new engine.GameEngine()
gameboxedEngine.bootstrap(gameBasicDetails, null)
@nthx
nthx / gist:1680267
Created January 26, 2012 01:18
services
#= require ./init
class engine.Services
constructor: (eventBroker, gameBasicDetails, gameDetails) ->
@screenRenderer = new shared.views.ScreenRenderer("#{gameBasicDetails.template}/templates/game_screen")
@soundAdapter = new shared.sounds.SoundAdapter(
gameDetails.game.sounds_dir,
gameDetails.game.sound_names)
async.waterfall([
function(callback){
callback(null, 'one', 'two');
},
function(arg1, arg2, callback){
callback(null, 'three');
},
function(arg1, callback){
// arg1 now equals 'three'
callback(null, 'done');
@nthx
nthx / gist:1959208
Created March 2, 2012 15:36
god_systems_example
game = new MonopolyGame() #...
game.roll_dice()
game.invite_friend_to_a_game(friend)
game.buy_prize_for_points(prize)
...
ebay = new eBay()
ebay.try_to_list_item(item_definition)
ebay.buyer_bids(buyer, bid)
ebay.listing_ended(listing)