]> git.eli173.com Git - pong_br/commitdiff
lotta debugging, about to make structural changes
authorElijah Cohen <eli@eli173.com>
Tue, 30 Apr 2019 20:36:41 +0000 (15:36 -0500)
committerElijah Cohen <eli@eli173.com>
Tue, 30 Apr 2019 20:36:41 +0000 (15:36 -0500)
genendpoints should now produce both the space endpoints and the wall endpoints

server/constants.js
server/field.js
server/game.js
server/gamestate.js
server/player.js
web/constants.js
web/draw.js
web/field.js
web/main.js
web/play.html

index f01ff5934c27b07d6ee3de2bc54794b1c535bea2..539be0ff8221524e9c0ac314a0d72a9a9ae4ded3 100644 (file)
@@ -4,7 +4,7 @@ var c = {
     // matchmaker
     WS_PORT: 6789,
     NUM_PLAYERS: 3,
-    MS_PER_FRAME: 500,
+    MS_PER_FRAME: 100,
     WAIT_TIME: 60000, // 1 minute
     MAX_GAMES: 5, // the most games allowed to go on at once, to be tweaked as needed for purposes
     // gamestate
@@ -14,8 +14,8 @@ var c = {
     ANGLE_THRESH: 0.2, //radians, needs to acct for various rotatings going on... can prolly wing it
     PADDLE_MVT_BONUS: 0.1, // why this value? who knows. the extra speed from paddles in motion
     // ball
-    MIN_INIT: 3,
-    MAX_INIT: 5, // initial speed constraints
+    MIN_INIT: 0.1,
+    MAX_INIT: 1, // initial speed constraints
     BALL_RADIUS: 0.5,
     MAX_SPEED: 15,
     SPEED_BUMP: 0.2,
index abd312490fb5c91178aa064db3aa3c6da05882ce..dbcf103d2f10e34c05f2c7100072d41e18428c46 100644 (file)
@@ -20,8 +20,9 @@ var genEndpoints = function(n ,dead) {
        players_length += d.time/c.DYING_TIME_IN_FRAMES;
     }
     var theta = 0;
-    var dtheta = players_length/(2*Math.PI);
-    var coord = new Coord(c.BOARD_RADIUS,0);
+    var dtheta = (2*Math.PI)/players_length;
+    // so my dumb ass forgot that 'r' isn't a thing, so I'm setting it from a proper place here...
+    var r = c.BOARD_RADIUS;
     for(var i=0; i<n; i++) {
        var deadStatus = dead.find(e=>(e.id==i));
        if((deadStatus !== undefined) && (deadStatus.time > 0)) {
index ac85f31adf5ce7570b29cf418816d9a36ef03301..34895ae3e12b7978c00b4087b0864bc4b01863fa 100644 (file)
@@ -23,7 +23,7 @@ Game.prototype.getNextFrame = function() {
     state.id = 0;
     for(var i=0; i<this.players.length;i++) {
        state.id = i;
-       this.players[i].socket.send(JSON.stringify(state));
+       this.players[i].send_data(JSON.stringify(state));
     }
 }
 
index 5648bee4d3b69fd4ed3cd9069aa68d07e79ba7a3..e4d6ae0b4d9a6e4d963438e59baf0f0f68454bd7 100644 (file)
@@ -63,6 +63,7 @@ GameState.prototype.update = function(inputs) {
     }
     //
     var endpoints = field.genEndpoints(this.numPlayers, this.dead);
+    //console.log(endpoints);
     var borders = field.endpointNegatives(endpoints);
     var deadzones = endpoints.filter(ep => ep.isDead);
     var walls = borders.concat(deadzones);    
@@ -123,24 +124,32 @@ GameState.prototype.update = function(inputs) {
            }
        }
     }
+    // shrink the existing dead zones for the future
+    for(var d of this.dead) {
+       d.time--;
+    }
+    
     // check for deaths
     // OK I'M HERE AFAICT
     // i don't need to check where any of the paddles are, I just need to check the spaces behind the paddles (±)
     var zero = new Coord(0,0);
-    var oobs = this.balls.filter(b => (b.coord.dist2(zero)>(c.BOARD_RADIUS+c.OOB_THRESH)));
+    var oobs = this.balls.filter(b => (b.coord.dist2(zero)>(c.BOARD_RADIUS+c.OOB_THRESH)**2));
     var angs = field.angles(this.numPlayers, this.dead, c.ANGLE_THRESH);
     for(var oob of oobs) {
        var oobth = oob.get_angle();
        for(var ang of angs) {
            // normalise angle pair...
            // this gon be inefficient sigh
-           var a1 = ang.f;
-           var a2 = ang.s;
-           while(oobth > (a1-2*Math.PI))
-               oobth -= 2*Math.PI;
-           while( a2 > (oobth-2*Math.PI))
-               a2 -= 2*Math.PI;
-           if((a2-a1) < 2*Math.PI) { // it's in between! (I should check my math...)
+           var a1 = ang.f % (2*Math.PI);
+           var a2 = ang.s % (2*Math.PI);
+           var ab = oobth % (2*Math.PI);
+           if(a1 > a2) {
+               a2 += 2*Math.PI;
+           }
+           if (a1 > ab) {
+               ab += 2*Math.PI;
+           }
+           if((ab > a1) && (ab < a2)) {
                // check if not already dead (in case multi balls out at same time etc)
                if(!this.dead.some(x => x.id == ang.id)) {
                    this.dead.push(new Dead(ang.id));
index a0d24fa94d50686c967f8a582a11ccce51173b18..1b5aead451c1d640c7b925e62193ebca63bc3663 100644 (file)
@@ -25,7 +25,7 @@ Player.prototype.listener = function(msg) {
 }
 
 Player.prototype.send_data = function(data) {
-    if(this.socket.readyState==1) { // TODO: replace the '1' with the proper identifier (the ready state constant)
+    if(this.socket.readyState==this.socket.OPEN) {
        this.socket.send(data);
     }
 }
index b67c9566c76df9ef2ebd9c1576382d4b1754ff22..cdd7d8bfd3d5bb65172d83f851caf19e55ed6716 100644 (file)
@@ -4,7 +4,7 @@ var c = {
     // matchmaker
     WS_PORT: 6789,
     NUM_PLAYERS: 3,
-    MS_PER_FRAME: 500,
+    MS_PER_FRAME: 100,
     WAIT_TIME: 60000, // 1 minute
     MAX_GAMES: 5, // the most games allowed to go on at once, to be tweaked as needed for purposes
     // gamestate
index 5de5506aec53b1e2f13d70d277d3c02777157037..72086f0f1e2cd8018c0430041851b8ded1977fa9 100644 (file)
@@ -11,12 +11,14 @@ bcolor = 'rgb(100,100,100)';
 // main function, given everything from the game state, draws on the given context
 var draw = function(state, ctx) {
     clearCanvas(ctx);
+    
     // okay, gotta get the endpoints, then draw the walls,
     // then draw the balls,
     // then finally the hard part is the paddles
+    //console.log(state);
     var theEndpoints = genEndpoints(state.n, state.dead);
     var negatives = endpointNegatives(theEndpoints);
-
+    console.log(theEndpoints);
     // dead walls
     for(var ep of theEndpoints) {
        var deadOption = state.dead.find(d => (d.id==ep.id));
@@ -33,7 +35,7 @@ var draw = function(state, ctx) {
        drawBall(ctx, bcolor, b);
     }
     // finally the paddles...
-    for(var ep of endpoints) {
+    for(var ep of theEndpoints) {
        var paddleOption = state.paddles.find(p => (p.id == ep.id));
        if(paddleOption !== undefined) {
            // should probably make sure it's not dead?
@@ -48,6 +50,7 @@ var draw = function(state, ctx) {
 var getPaddlePoints = function(paddle, enclosing) {
     // returns an endpoints object for the paddle
     // given the desired width of said paddle and the enclosing endpoints
+    console.log(enclosing);
     var encl_len = dist(enclosing.f, enclosing.s);
     var pspace_len = encl_len - (2*c.WIDTH_RATIO*encl_len);
     var place_on_pspace = pspace_len*(paddle.position+1)/2;
@@ -63,16 +66,16 @@ var getPaddlePoints = function(paddle, enclosing) {
 
 
 
-var drawBall(ctx, color, c) {
+var drawBall = function(ctx, color, coord) {
     ctx.save();
     ctx.fillStyle = bcolor;
     ctx.beginPath();
-    ctx.arc(c.x, c.y, BALL_RADIUS, 0, 2*Math.PI, false);
+    ctx.arc(coord.x, coord.y, c.BALL_RADIUS, 0, 2*Math.PI, false);
     ctx.fill();
     ctx.restore();
 }
 
-var drawLine(ctx, color, c1, c2) {
+var drawLine = function(ctx, color, c1, c2) {
     // draws a line from c1 to c2 in color
     ctx.save();
     ctx.strokeStyle = color;
@@ -86,7 +89,6 @@ var drawLine(ctx, color, c1, c2) {
 
 var clearCanvas = function(ctx) {
     ctx.save();
-    ctx.transform(1,0,0,1,0,0);
-    ctx.clearRect(0,0,cxt.canvas.width, ctx.canvas.height);
+    ctx.clearRect(-ctx.canvas.width, -ctx.canvas.height, ctx.canvas.width*2, ctx.canvas.height*2);
     ctx.restore();
 }
index b6e29104de43526af05465b08b372cab20d65755..4316922b9b9206cfe8e1e93bf47d8bb298c4924e 100644 (file)
@@ -16,8 +16,9 @@ var genEndpoints = function(n ,dead) {
        players_length += d.time/c.DYING_TIME_IN_FRAMES;
     }
     var theta = 0;
-    var dtheta = players_length/(2*Math.PI);
-    var coord = new Coord(c.BOARD_RADIUS,0);
+    var dtheta = (2*Math.PI)/players_length;
+    // same bs with the 'r'...
+    var r = c.BOARD_RADIUS;
     for(var i=0; i<n; i++) {
        var deadStatus = dead.find(e=>(e.id==i));
        if((deadStatus !== undefined) && (deadStatus.time > 0)) {
index 8fc137deed6f565ac375c759c77c8f1f650b445c..f11df3fc3cabf397de96c32d6ad0addaa862f798 100644 (file)
@@ -4,6 +4,8 @@ var prefixurl = "ws://localhost:6789";
 theSocket = null;
 
 
+var module = {};
+
 var main = function() { // starts everything, gets us going, setup ish
     var canvas = document.getElementById('c');
     if(!canvas.getContext) {
@@ -14,7 +16,7 @@ var main = function() { // starts everything, gets us going, setup ish
     canvas.height = window.innerHeight;
     ctx = canvas.getContext('2d');
     // change the 1's to zoom in i think.. todo
-    ctx.transform(1, 0, 0, 1, ctx.width/2, ctx.height/2);
+    ctx.transform(10, 0, 0, 10, ctx.canvas.width/2, ctx.canvas.height/2); // change to setTransform?
 
     
     theSocket = new WebSocket(prefixurl);
index 9adec06d030a4a79dde03e4196d3d55519267a95..e238a124820e0b7177ff1c83671e932a3a03e276 100644 (file)
@@ -2,10 +2,12 @@
 <html>
   <head>
     <title>Pong Battle Royale</title>
-    <script type="text/javascript" src="main.js"></script>
-    <script type="text/javascript" src="draw.js"></script>
-    <script type="text/javascript" src="coord.js"></script>
     <script type="text/javascript" src="constants.js"></script>
+    <script type="text/javascript" src="coord.js"></script>
+    <script type="text/javascript" src="draw.js"></script>
+    <script type="text/javascript" src="main.js"></script>
+    <script type="text/javascript" src="field.js"></script>
+    <script type="text/javascript" src="endpoints.js"></script>
     <style type="text/css">
       body { background-color: black; }
       #c {