Skip to content

Commit 657314d

Browse files
committed
add mouse ctrl
1 parent 4de7506 commit 657314d

File tree

1 file changed

+38
-18
lines changed

1 file changed

+38
-18
lines changed

31-Air-Hockey-Game/index.html

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,8 @@ <h5 id="message"></h5>
135135
// Define paddle properties
136136
var paddleHeight = 80;
137137
var paddleWidth = paddleHeight/2;
138-
var leftPaddleY = canvas.height / 2 - paddleHeight / 2;
139-
var rightPaddleY = canvas.height / 2 - paddleHeight / 2;
138+
var leftPaddleY = canvas.height / 2 ;
139+
var rightPaddleY = canvas.height / 2 ;
140140
var leftPaddleX = 0;
141141
var rightPaddleX = canvas.width;
142142
var paddleSpeed = 10;
@@ -147,9 +147,13 @@ <h5 id="message"></h5>
147147
var rightPlayerScore = 0;
148148
var maxScore = 100;
149149
var touchYstartLeft = null;
150-
var previousPositionLeft = canvas.height / 2 - paddleHeight;
150+
var touchXstartLeft = null;
151+
var previousYPositionLeft = canvas.height / 2 ;
152+
var previousXPositionLeft = 0+edgeWidth;
151153
var touchYstartRight = null;
152-
var previousPositionRight = canvas.height / 2 - paddleHeight;
154+
var touchXstartRight = null;
155+
var previousYPositionRight = canvas.height / 2 ;
156+
var previousXPositionRight = canvas.width - edgeWidth;
153157
const canvasBounds = canvas.getBoundingClientRect();
154158
const canvasMiddle = canvasBounds.width / 2 + canvasBounds.left;
155159
var effectiveBounds = {
@@ -397,14 +401,14 @@ <h5 id="message"></h5>
397401
rightPt = e.touches[i].pageX > rightPt.pageX ? e.touches[i] : rightPt;
398402
}
399403
}
400-
if (touchYstartLeft == null && leftPt.pageY != -1) { touchYstartLeft = leftPt.pageY; }
401-
if (touchYstartRight == null && rightPt.pageY != -1) { touchYstartRight = rightPt.pageY; }
404+
if (touchYstartLeft == null && leftPt.pageY != -1) { touchYstartLeft = leftPt.pageY; touchXstartLeft = leftPt.pageX; }
405+
if (touchYstartRight == null && rightPt.pageY != -1) { touchYstartRight = rightPt.pageY;touchXstartRight = rightPt.pageX; }
402406
return;
403407
} else {//如果是鼠标 touchXstart等于鼠标的x坐标
404408
if (e.pageX < canvasMiddle) {
405-
if (touchYstartLeft == null) { touchYstartLeft = e.pageY; }
409+
if (touchYstartLeft == null) { touchYstartLeft = e.pageY;touchXstartLeft = e.pageX; }
406410
} else {
407-
if (touchYstartRight == null) { touchYstartRight = e.pageY; }
411+
if (touchYstartRight == null) { touchYstartRight = e.pageY; touchXstartRight = e.pageX; }
408412
}
409413
}
410414

@@ -414,11 +418,15 @@ <h5 id="message"></h5>
414418
//e.preventDefault();
415419
if (touchYstartRight != null) {
416420
touchYstartRight = null;
417-
previousPositionRight = rightPaddleY;
421+
touchXstartRight = null;
422+
previousYPositionRight = rightPaddleY;
423+
previousXPositionRight = rightPaddleX;
418424
}
419425
if (touchYstartLeft != null) {
420426
touchYstartLeft = null;
421-
previousPositionLeft = leftPaddleY;
427+
touchXstartLeft = null;
428+
previousYPositionLeft = leftPaddleY;
429+
previousXPositionLeft = leftPaddleX;
422430
}
423431
}
424432

@@ -459,18 +467,24 @@ <h5 id="message"></h5>
459467
// 更新左侧滑板位置
460468
try {
461469
if (leftTouch && touchYstartLeft !== null) {
462-
let distLeft = leftTouch.pageY - touchYstartLeft;
463-
leftPaddleY = previousPositionLeft + distLeft;
470+
let distYLeft = leftTouch.pageY - touchYstartLeft;
471+
leftPaddleY = previousYPositionLeft + distYLeft;
464472
leftPaddleY = Math.max(0, Math.min(canvas.height - paddleHeight, leftPaddleY));
473+
let distXLeft = leftTouch.pageX - touchXstartLeft;
474+
leftPaddleX = previousXPositionLeft + distXLeft;
475+
leftPaddleX = Math.max(0, Math.min(canvas.width/2 , leftPaddleX));
465476
}
466477
} catch (e) { }
467478

468479
// 更新右侧滑板位置
469480
try {
470481
if (rightTouch && touchYstartRight !== null) {
471-
let distRight = rightTouch.pageY - touchYstartRight;
472-
rightPaddleY = previousPositionRight + distRight;
482+
let distYRight = rightTouch.pageY - touchYstartRight;
483+
rightPaddleY = previousYPositionRight + distYRight;
473484
rightPaddleY = Math.max(0, Math.min(canvas.height - paddleHeight, rightPaddleY));
485+
let distXRight = rightTouch.pageX - touchXstartRight;
486+
rightPaddleX = previousXPositionRight + distXRight;
487+
rightPaddleX = Math.min(canvas.width, Math.max(canvas.width/2 , rightPaddleX));
474488
}
475489
} catch (e) { }
476490
}
@@ -482,15 +496,21 @@ <h5 id="message"></h5>
482496

483497
if (mouseX < canvasMiddle) {
484498
if (touchYstartLeft !== null) {
485-
let distLeft = mouseY - touchYstartLeft;
486-
leftPaddleY = previousPositionLeft + distLeft;
499+
let distYLeft = mouseY - touchYstartLeft;
500+
leftPaddleY = previousYPositionLeft + distYLeft;
487501
leftPaddleY = Math.max(0, Math.min(canvas.height - paddleHeight, leftPaddleY));
502+
let distXLeft = mouseX - touchXstartLeft;
503+
leftPaddleX = previousXPositionLeft + distXLeft;
504+
leftPaddleX = Math.max(0, Math.min(canvas.width - paddleWidth, leftPaddleX));
488505
}
489506
} else {
490507
if (touchYstartRight !== null) {
491-
let distRight = mouseY - touchYstartRight;
492-
rightPaddleY = previousPositionRight + distRight;
508+
let distYRight = mouseY - touchYstartRight;
509+
rightPaddleY = previousYPositionRight + distYRight;
493510
rightPaddleY = Math.max(0, Math.min(canvas.height - paddleHeight, rightPaddleY));
511+
let distXRight = mouseX - touchXstartRight;
512+
rightPaddleX = previousXPositionRight + distXRight;
513+
rightPaddleX = Math.max(0, Math.min(canvas.width - paddleWidth, rightPaddleX));
494514
}
495515
}
496516
}

0 commit comments

Comments
 (0)