$table = null state = { card_types: [ {text: "Rusty Camel"} {text: "Angry Ocelot"} {text: "Unruly Parsnip"} ], # values are indexes into card_types array my_cards: [0, 0, 0, 1, 1, 2], your_cards: [0, 1, 1, 2, 2, 2], auto_shuffle: true } unless Array::shuffle? Array::shuffle = -> return if @length is 0 top = @length while --top current = Math.floor(Math.random() * (top + 1)) tmp = @[current] @[current] = @[top] @[top] = tmp return add_card = (text, x, y) -> card = $ $ "
#{text}
 
" $table.append card card.draggable() card.bind 'dragstop', (event, ui) -> p = card.position() card.children().html("(#{p.left}, #{p.top})") # FIXME tell server init = -> if state.auto_shuffle state.my_cards.shuffle() state.your_cards.shuffle() # FIXME have the server or other player do this state.auto_shuffle = false left = 15 top = 450 for card in state.my_cards add_card state.card_types[card].text, left, top left += 120 left = 15 top = 250 for card in state.your_cards add_card state.card_types[card].text, left, top left += 120 $ -> $table = $ '#table' init()