Skip to content

Commit 6913b02

Browse files
committed
game is playable
1 parent c157cf5 commit 6913b02

File tree

8 files changed

+270
-13
lines changed

8 files changed

+270
-13
lines changed

game.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ var init = function(){
213213

214214
var start = null;
215215
ball = new Ball(10, 10, width/2 - 5, height/2-5, canvas.width, canvas.height);
216-
ball.k = initialBallK;
216+
ball.k = 0;
217217

218218
platformR = new Platform(
219219
100, // Height

gamestarter.js

+10-11
Original file line numberDiff line numberDiff line change
@@ -31,36 +31,35 @@ var checkIfPlayable = function(){
3131
if(NUM_CONNECTED == 3){
3232
startBtn.style.opacity = 1;
3333
startBtn.style.cursor = "pointer";
34-
startBtn.onclick = startGameFunction();
34+
startBtn.onclick = startGameFunction;
3535
}
3636
}
37-
startBtn.onclick=function(){
38-
startGameFunction();
39-
}
4037

4138
var ws = new WebSocket(WS_START + ip + ":" + port);
4239
ws.addEventListener("open", function(event){
4340
NUM_CONNECTED++
44-
startBtn.style.opacity = 1;
41+
checkIfPlayable();
42+
littleConsole.innerHTML = "Connected to websocket!";
4543
});
4644

4745
ws.addEventListener("message", function(event){
48-
if(event.message == portP1 + " " + connectMessage){
46+
console.log(event.data);
47+
if(event.data == portP1 + " " + connectMsg){
4948
p1Text.innerHTML = "P1 Connected!";
5049
NUM_CONNECTED++;
5150
checkIfPlayable();
5251
}
53-
else if(event.message == portP2 + " " + connectMessage){
52+
else if(event.data == portP2 + " " + connectMsg){
5453
p2Text.innerHTML = "P2 Connected!";
5554
NUM_CONNECTED++;
5655
checkIfPlayable();
5756
}
58-
else if(/\d{4} \d{0,}[.]\d{0,}/.test(event.message)){
57+
else if((/\d{4} .\d*\.\d*/g).test(event.data)){
5958
// First get first four digits
60-
var inPort = /\d{4}/.match(event.message);
61-
var angle = event.message.substring((inPort + " ").length);
59+
var inPort = parseInt(event.data.substring(0,4));
60+
var angle = parseFloat(event.data.substring((inPort + " ").length));
6261

63-
var speedRad = 20/(Math.PI/2);
62+
var speedRad = 20/(90);
6463

6564
var speed = angle * speedRad;
6665

server/apiToInternal.js

+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
function connectToUser(request){
2+
var connection = request.accept();
3+
var user = new ConnectedUser();
4+
user.connection = connection;
5+
//user.id = generateUUID();
6+
console.log("A user connected");
7+
8+
user.connection.on("message", function (message){
9+
handleMessage(message);
10+
});
11+
return user;
12+
}
13+
function ConnectedUser() {
14+
this.connection;
15+
this.id;
16+
17+
this.send = function (message){
18+
this.connection.sendUTF(message);
19+
}
20+
}
21+
22+
function handleMessage(message){
23+
if(message.type === "utf8"){
24+
console.log("handling message: " + message.utf8Data);
25+
var string = message.utf8Data;
26+
var commands = string.split(";");
27+
for (var a = 0; a < commands.length; a++) {
28+
var inputs = commands[a].split(":");
29+
var method = inputs[0];
30+
31+
//This is the actual api
32+
33+
if(method === "chat"){
34+
35+
console.log("chatting!");
36+
var params = [];
37+
38+
for (var i = 1; i < inputs.length; i++) {
39+
params.push(inputs[i]);
40+
};
41+
42+
chat(params);
43+
}
44+
45+
}
46+
}
47+
}
48+
49+
function chat(params){
50+
var activeUsers = require("./backend").activeUsers;
51+
var recipiants = params[0].split(",");
52+
var message = params[1];
53+
54+
console.log(message);
55+
56+
for (var a = 0; a < recipiants.length; a++) {
57+
console.log("in loop 1, recipiants: " + recipiants[a]);
58+
for (var i = 0; i < activeUsers.length; i++) {
59+
console.log("activeUser: " + activeUsers[i].id);
60+
if(recipiants[a] == activeUsers[i].id){
61+
console.log("sending message: " + message + ", to: " + activeUsers[i].id);
62+
activeUsers[i].send(message);
63+
}
64+
}
65+
}
66+
}
67+
68+
69+
exports.handleMessage = handleMessage;
70+
exports.connectToUser = connectToUser;

server/backend.js

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
var WebSocketServer = require('websocket').server;
2+
var APIInternal = require("./apiToInternal");
3+
var httpServerFactory = require("./server");
4+
var constants = require("./settings");
5+
var httpServer1 = httpServerFactory.startAndGetServer(constants.PORT);
6+
var httpServerL = httpServerFactory.startAndGetServer(constants.PORT_L);
7+
var httpServerR = httpServerFactory.startAndGetServer(constants.PORT_R);
8+
9+
var wsServer1 = new WebSocketServer({
10+
httpServer: httpServer1,
11+
autoAcceptConnections: false
12+
});
13+
var wsServerL = new WebSocketServer({
14+
httpServer: httpServerL,
15+
autoAcceptConnections: false
16+
});
17+
var wsServerR = new WebSocketServer({
18+
httpServer: httpServerR,
19+
autoAcceptConnections: false
20+
});
21+
22+
var client = null;
23+
var left = null;
24+
var right = null;
25+
26+
wsServer1.on("request", function(request){
27+
if(!client) client = request.accept();
28+
29+
client.sendUTF("Hello! :) ");
30+
31+
if(left) client.sendUTF(constants.PORT_L + " connected")
32+
if(right) client.sendUTF(constants.PORT_L + " connected")
33+
34+
client.on("close", function(reasonData, description) {
35+
//Remove user from active users
36+
client = null;
37+
});
38+
});
39+
40+
wsServerL.on("request", function(request){
41+
if(!left) left = request.accept();
42+
43+
left.sendUTF("Hello! :) left");
44+
45+
left.on("message", function(message){
46+
var newMsg = constants.PORT_L + " " + message.utf8Data;
47+
if(client) client.sendUTF(newMsg);
48+
console.log(newMsg);
49+
});
50+
51+
left.on("close", function(reasonData, description) {
52+
//Remove user from active users
53+
left = null;
54+
});
55+
});
56+
57+
wsServerR.on("request", function(request){
58+
if(!right) right = request.accept();
59+
60+
right.sendUTF("Hello! :) right");
61+
62+
right.on("message", function(message){
63+
var newMsg = constants.PORT_R + " " + message.utf8Data;
64+
if(client) client.sendUTF(newMsg);
65+
console.log(newMsg);
66+
});
67+
68+
right.on("close", function(reasonData, description) {
69+
//Remove user from active users
70+
right = null;
71+
});
72+
});
73+

server/backend2.js

+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
var WebSocketServer = require('websocket').server;
2+
var APIInternal = require("./apiToInternal");
3+
var httpServer = require("./server").startAndGetServer();
4+
5+
var wsServer = new WebSocketServer({
6+
httpServer: httpServer,
7+
autoAcceptConnections: false
8+
});
9+
10+
var activeUsers = [];
11+
var ids = [];
12+
wsServer.on("request", function(request){
13+
var user = APIInternal.connectToUser(request);
14+
user.id = generateUUID();
15+
activeUsers.push(user);
16+
user.send("connection established. Currently " + activeUsers.length + " users connected");
17+
user.send("Your id is: " + user.id);
18+
19+
20+
21+
user.connection.on("close", function(reasonData, description) {
22+
//Remove user from active users
23+
for (var i = 0; i < activeUsers.length; i++) {
24+
var idOfActiveUser;
25+
if(activeUsers[i].id === user.id) {
26+
idOfActiveUser = activeUsers[i].id;
27+
activeUsers.splice(i, 1);
28+
}
29+
var index = ids.indexOf(idOfActiveUser);
30+
ids.splice(index, 1);
31+
};
32+
});
33+
});
34+
35+
36+
37+
function generateUUID(){
38+
ids.sort(function(a, b){return a-b});
39+
if(activeUsers.length > ids.length){
40+
//Take empty slot
41+
ids = [];
42+
console.log("There are more active users than ids. Taking empty slot");
43+
for (var i = 0; i < activeUsers.length; i++) {
44+
ids.push(activeUsers[i].id);
45+
};
46+
ids.sort(function(a, b){return a-b});
47+
48+
if (ids[0] >= 2) {
49+
ids.push(1);
50+
ids.sort(function(a, b){return a-b});
51+
return 1;
52+
}
53+
else {
54+
for (var i = 1; i < ids.length; i++) {
55+
if (ids[i] - ids[i-1] >= 2){
56+
ids.push(ids[i-1] + 1);
57+
ids.sort(function(a, b){return a-b});
58+
return ids[i-1] + 1;
59+
}
60+
};
61+
console.log("Never more than one space between two ids. Giving top id");
62+
ids.push(ids[ids.length - 1] + 1);
63+
console.log("ids length: " + ids.length);
64+
return ids[ids.length - 1];
65+
}
66+
67+
68+
}
69+
else {
70+
71+
if(ids.length === 0){
72+
ids.push(1);
73+
return 1;
74+
}
75+
else {
76+
var heighestId = ids[ids.length - 1];
77+
ids.push(heighestId + 1);
78+
return heighestId + 1;
79+
}
80+
}
81+
}
82+
83+
exports.ids;
84+
exports.activeUsers = activeUsers;

server/server.js

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
var http = require("http");
2+
var constants = require("./settings");
3+
function startAndGetServer(port){
4+
5+
var httpServer = http.createServer(onRequest).listen(port, function(){
6+
console.log((new Date()) + ' HTTP server is listening on port ' + port);
7+
});
8+
9+
function onRequest(request, response){
10+
console.log((new Date()) + " Recieved request for " + request.url)
11+
response.writeHead(200, {"Content-Type": "text/plain"});
12+
response.write("Hello World");
13+
response.end();
14+
}
15+
console.log("Server kör");
16+
17+
return httpServer;
18+
}
19+
exports.startAndGetServer = startAndGetServer;
20+
21+

server/settings.js

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
function define(name, value) {
2+
Object.defineProperty(exports, name, {
3+
value: value,
4+
enumerable: true
5+
});
6+
}
7+
8+
define("PORT", 1337);
9+
define("PORT_L", 1338);
10+
define("PORT_R", 1339);

style.css

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ body{
3636
}
3737
.logo {
3838
display: inline-block;
39-
margin-top: 1em;
39+
margin-top: 0.5em;
4040
color:white;
4141
font-family: "8bit";
4242
font-size: 10em;

0 commit comments

Comments
 (0)