@@ -148,9 +148,11 @@ function update() {
148
148
} else if ( rightPlayerScore === maxScore ) {
149
149
playerWin ( "Right player" ) ;
150
150
}
151
+
151
152
}
152
153
153
154
function playerWin ( player ) {
155
+ gameRunning = false ;
154
156
var message = "Congratulations! " + player + " win!" ;
155
157
$ ( "#message" ) . text ( message ) ; // Set the message text
156
158
$ ( "#message-modal" ) . modal ( "show" ) ; // Display the message modal
@@ -215,7 +217,7 @@ $("#message-modal-close").on("click", function () {
215
217
216
218
var downLock = false ;
217
219
function keyDown ( ) { // pressed down arrow key
218
- if ( upLock ) { keyUp ( ) ; }
220
+ if ( upLock ) { keyUp ( ) ; }
219
221
if ( downLock ) {
220
222
var event = new KeyboardEvent ( 'keyup' , {
221
223
bubbles : true ,
@@ -279,7 +281,7 @@ function keyRight() {// pressed right arrow key
279
281
280
282
var wLock = false ;
281
283
function keyW ( ) { // pressed w key
282
- if ( sLock ) { keyS ( ) ; }
284
+ if ( sLock ) { keyS ( ) ; }
283
285
if ( wLock ) {
284
286
var event = new KeyboardEvent ( 'keyup' , {
285
287
bubbles : true ,
@@ -308,7 +310,7 @@ function keyW() {// pressed w key
308
310
309
311
var sLock = false ;
310
312
function keyS ( ) { // pressed s key
311
- if ( wLock ) { keyW ( ) ; }
313
+ if ( wLock ) { keyW ( ) ; }
312
314
if ( sLock ) {
313
315
var event = new KeyboardEvent ( 'keyup' , {
314
316
bubbles : true ,
@@ -333,3 +335,105 @@ function keyS() {// pressed s key
333
335
document . getElementById ( "right_arrow" ) . style . transform = "scale(0.9)rotate(90deg)" ;
334
336
}
335
337
}
338
+
339
+ //增加一个触摸屏幕事件,让Paddle水平移动距离和触摸点水平移动距离一致
340
+ var touchYstartLeft = null ;
341
+ var previousPositionLeft = canvas . height / 2 - paddleHeight ;
342
+ var touchYstartRight = null ;
343
+ var previousPositionRight = canvas . height / 2 - paddleHeight ;
344
+ function actionStart ( e ) {
345
+ //e.preventDefault();
346
+ //判断是鼠标左键点击还是触摸
347
+ var leftPt = { pageX : canvas . width , pageY : 0 } , rightPt = { pageX : 0 , pageY : 0 } ;
348
+
349
+ if ( e . touches ) { //如果是触摸
350
+ e . touches . forEach ( element => { //记录左半边,最左边的点
351
+ if ( element . pageX - canvas . offsetLeft < canvas . width / 2 ) {
352
+ leftPt = element . pageX < leftPt . pageX ? element : leftPt ;
353
+ } else { //记录右半边,最右边的点
354
+ rightPt = element . pageX > rightPt . pageX ? element : rightPt ;
355
+ }
356
+ } ) ;
357
+ if ( touchYstartLeft == null ) { touchYstartLeft = leftPt . pageY ; }
358
+ if ( touchYstartRight == null ) { touchYstartRight = rightPt . pageY ; }
359
+ return ;
360
+ } else { //如果是鼠标 touchXstart等于鼠标的x坐标
361
+ if ( e . pageX - canvas . offsetLeft < canvas . width / 2 ) {
362
+ if ( touchYstartLeft == null ) { touchYstartLeft = e . pageY ; }
363
+ } else {
364
+ if ( touchYstartRight == null ) { touchYstartRight = e . pageY ; }
365
+ }
366
+ }
367
+
368
+
369
+
370
+
371
+ }
372
+ function actionEnd ( e ) {
373
+ //e.preventDefault();
374
+ if ( touchYstartRight != null ) {
375
+ touchYstartRight = null ;
376
+ previousPositionRight = rightPaddleY ;
377
+ }
378
+ if ( touchYstartLeft != null ) {
379
+ touchYstartLeft = null ;
380
+ previousPositionLeft = leftPaddleY ;
381
+ }
382
+ }
383
+ function actionMove ( e ) {
384
+ //e.preventDefault();
385
+ var distLeft , distRight , leftPt , rightPt ;
386
+ //判断是鼠标左键点击还是触摸
387
+ if ( e . touches ) {
388
+ e . touches . forEach ( element => {
389
+ if ( element . pageX - canvas . offsetLeft < canvas . width / 2 ) {
390
+ leftPt = element . pageX < leftPt . pageX ? element : leftPt ;
391
+ } else { //记录右半边,最右边的点
392
+ rightPt = element . pageX > rightPt . pageX ? element : rightPt ;
393
+ }
394
+ } ) ;
395
+ if ( touchYstartLeft != null ) {
396
+ distLeft = leftPt . pageY - touchYstartLeft ;
397
+ leftPaddleY = previousPositionLeft + distLeft ;
398
+ if ( leftPaddleY + paddleHeight > canvas . height ) leftPaddleY = canvas . height - paddleHeight ;
399
+ if ( leftPaddleY < 0 ) leftPaddleY = 0 ;
400
+ }
401
+ if ( touchYstartRight != null ) {
402
+ distRight = rightPt . pageY - touchYstartRight ;
403
+ rightPaddleY = previousPositionRight + distRight ;
404
+ if ( rightPaddleY + paddleHeight > canvas . height ) rightPaddleY = canvas . height - paddleHeight ;
405
+ if ( rightPaddleY < 0 ) rightPaddleY = 0 ;
406
+ }
407
+
408
+ } else { //如果是鼠标 dist等于鼠标的x坐标x相对touchXstart的移动距离
409
+ if ( e . pageX - canvas . offsetLeft < canvas . width / 2 ) {
410
+ if ( touchYstartLeft != null ) {
411
+ distLeft = e . pageY - touchYstartLeft ;
412
+ leftPaddleY = previousPositionLeft + distLeft ;
413
+ if ( leftPaddleY + paddleHeight > canvas . height ) leftPaddleY = canvas . height - paddleHeight ;
414
+ if ( leftPaddleY < 0 ) leftPaddleY = 0 ;
415
+ }
416
+ } else {
417
+ if ( touchYstartRight != null ) {
418
+ distRight = e . pageY - touchYstartRight ;
419
+ rightPaddleY = previousPositionRight + distRight ;
420
+ if ( rightPaddleY + paddleHeight > canvas . height ) rightPaddleY = canvas . height - paddleHeight ;
421
+ if ( rightPaddleY < 0 ) rightPaddleY = 0 ;
422
+ }
423
+ }
424
+ }
425
+
426
+
427
+
428
+
429
+
430
+ }
431
+
432
+
433
+ document . addEventListener ( 'touchstart' , actionStart ) ;
434
+ document . addEventListener ( 'touchend' , actionEnd ) ;
435
+ document . addEventListener ( 'touchmove' , actionMove ) ;
436
+ //相应鼠标点击后移动的事件
437
+ document . addEventListener ( 'mousedown' , actionStart ) ;
438
+ document . addEventListener ( 'mouseup' , actionEnd ) ;
439
+ document . addEventListener ( 'mousemove' , actionMove ) ;
0 commit comments