Skip to content

Commit

Permalink
Collaborative gaming now works!!!
Browse files Browse the repository at this point in the history
  • Loading branch information
codeincontext committed Feb 10, 2011
1 parent 73a3075 commit 3659844
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 28 deletions.
11 changes: 8 additions & 3 deletions js/comms.js
@@ -1,4 +1,5 @@
var socket;
var gotBalls = false;

function setup(){
connect();
Expand All @@ -18,10 +19,14 @@ function connect(){
socket = new WebSocket('ws://127.0.0.1:8080');
socket.onmessage = function(mess) {
var data = $.parseJSON(mess.data);
console.log(data);
balls = data['balls'];
if(data['balls']){
balls = data['balls'];
cue.x = data['cue'].x;
cue.y = data['cue'].y;
}
cue.vx = data['cue'].vx;
cue.vy = data['cue'].vy;
};

};

window.onload += setup();
12 changes: 6 additions & 6 deletions js/game.js
@@ -1,4 +1,4 @@
var cue = new Cue(100,100);
var cue = new Cue(-100,-100);

var context;
var mx;
Expand Down Expand Up @@ -101,16 +101,16 @@ function dist(x, y, X, Y){
}

$('canvas').mousedown(function(e){
mx = e.pageX - offset.left
my = e.pageY - offset.top
if (dist(mx,my, cue.x, cue.y) < 20){
mx = e.pageX - offset.left - 10
my = e.pageY - offset.top - 10
if (dist(mx,my, cue.x, cue.y) < 40){
shooting = true;
}
});
$('canvas').mouseup(function(e){
if (shooting){
mx = e.pageX - offset.left
my = e.pageY - offset.top
mx = e.pageX - offset.left - 10
my = e.pageY - offset.top - 10
calculateCuePull();

var distX = cue.x-mx;
Expand Down
15 changes: 12 additions & 3 deletions rb/cue.rb
@@ -1,7 +1,16 @@
class Cue
attr_accessor :x, :y
attr_accessor :x, :y, :vx, :vy
def initialize
self.x = 200
self.y = 200
self.x = 300
self.y = 300
self.vx = 0
self.vy = 0
end
def to_json(*a){
:x=>x,
:y=>y,
:vx=>vx,
:vy=>vy
}.to_json(*a)
end
end
3 changes: 2 additions & 1 deletion rb/game.rb
Expand Up @@ -55,6 +55,7 @@ def generate_ball
end

def other_players(player)
players.reject{|p| p==player}
r = players.reject{|p| p==player}
r
end
end
43 changes: 28 additions & 15 deletions rb/server.rb
Expand Up @@ -29,34 +29,47 @@ def dist(x1, y1, x2, y2)
# player = Player.new
player = Player.new(socket)
@players << player
game = Game.new(player)
@games << game
socket.send({:balls=>game.balls}.to_json)
if @games.empty?
game = Game.new(player)
@games << game
else
game = @games.first
game.players << player
end
socket.send({:balls=>game.balls, :cue=>game.cue}.to_json)

puts @games.first.players.count
rescue Exception => e
puts e.inspect
puts e.backtrace
end
end
socket.onmessage do |mess|
puts "move received"
puts "socket in #{socket.object_id}"
array = mess.split '/'
# puts array
player = @players.find{|p| p.socket = socket }
game = @games.find{|g| g.players.include? player }
# game.move(socket, array[0], array[1])
game.other_players(player).each do |s|
s.send mess

player = @players.find{|p| p.socket == socket }
# game = @games.find{|g| g.players.include? player }
game = @games.first

game.cue.vx = array[0]
game.cue.vy = array[1]
# # game.move(player, array[0], array[1])
game.other_players(player).each do |p|
p.socket.send({:cue=>game.cue}.to_json)
puts "socket out #{p.socket.object_id}"
end
end
socket.onclose do
# puts @games.inspect
# player = @players.find{|p| p.socket = socket }
# game = @games.find{|g| g.players.include player}
# game.players.delete player
# @players.delete player
player = @players.find{|p| p.socket = socket }
game = @games.find{|g| g.players.include? player}
game.players.delete player
@players.delete player
puts 'user left'
puts @games.first.players.count
end
end

`open /Users/skattyadz/code/couronne/game.html`
# `open /Users/skattyadz/code/couronne/game.html`
end

0 comments on commit 3659844

Please sign in to comment.