From d259e35727e8be0aa455613fa7753a34837ff014 Mon Sep 17 00:00:00 2001 From: Kuangcp Date: Sun, 7 Jul 2024 17:54:04 +0800 Subject: [PATCH] doc --- gui/src/doc/tank/main.png | Bin 0 -> 29578 bytes gui/src/doc/tank/phone.png | Bin 0 -> 64365 bytes .../java/com/github/kuangcp/tank/Readme.md | 11 +- .../github/kuangcp/tank/domain/EnemyTank.java | 32 ++-- gui/src/main/resources/tank/client/index.html | 7 +- gui/src/main/resources/tank/client/main.js | 138 ++++++++++++------ netty/src/main/java/netty/Readme.md | 4 + 7 files changed, 124 insertions(+), 68 deletions(-) create mode 100644 gui/src/doc/tank/main.png create mode 100644 gui/src/doc/tank/phone.png create mode 100644 netty/src/main/java/netty/Readme.md diff --git a/gui/src/doc/tank/main.png b/gui/src/doc/tank/main.png new file mode 100644 index 0000000000000000000000000000000000000000..cb584e0a6da11aa661372d0bcaf4b9dcac7ff3ce GIT binary patch literal 29578 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 uBa(qm>c_{3ns(re2ysyv5zIZEXa5f+n8@+~ literal 0 HcmV?d00001 diff --git a/gui/src/doc/tank/phone.png b/gui/src/doc/tank/phone.png new file mode 100644 index 0000000000000000000000000000000000000000..af9966cb4b553180a8b3bc3b9f8d9c7ec1b697d4 GIT binary patch literal 64365 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 Im8`=5A1>1DyZ`_I literal 0 HcmV?d00001 diff --git a/gui/src/main/java/com/github/kuangcp/tank/Readme.md b/gui/src/main/java/com/github/kuangcp/tank/Readme.md index de37ffb..8db122f 100644 --- a/gui/src/main/java/com/github/kuangcp/tank/Readme.md +++ b/gui/src/main/java/com/github/kuangcp/tank/Readme.md @@ -4,11 +4,18 @@ 1. build: `mvn clean package -P tank` --javaagent:/path/to/quasar-core-0.7.4-jdk8.jar +![](/gui/src/doc/tank/main.png) + +![](/gui/src/doc/tank/phone.png) + +## 2024-07-07 17:30:30 + +- 新增:网页Ws协议控制玩家坦克,模拟手柄交互 ## TODO 1. 碰撞监测 1. 对方运动算法 1. 网络联机 -1. 持久化存储 \ No newline at end of file +1. 持久化存储 + diff --git a/gui/src/main/java/com/github/kuangcp/tank/domain/EnemyTank.java b/gui/src/main/java/com/github/kuangcp/tank/domain/EnemyTank.java index 437cfa9..48c29bb 100644 --- a/gui/src/main/java/com/github/kuangcp/tank/domain/EnemyTank.java +++ b/gui/src/main/java/com/github/kuangcp/tank/domain/EnemyTank.java @@ -27,8 +27,8 @@ public class EnemyTank extends Tank implements Runnable, RobotRate { public final long id; public List bulletList = new CopyOnWriteArrayList<>();//子弹集合 - private long lastShotMs = 0; - private long shotCDMs = 168; + private long lastShotTick = 0; + private final long shotCDMs = 200; public int INIT_MAX_LIVE_BULLET = 4; public int maxLiveBullet = INIT_MAX_LIVE_BULLET + 1; // 活跃子弹 最大数 @@ -139,12 +139,12 @@ public void addLife(int delta) { } /** - * 发射子弹 函数 + * 发射子弹 */ public void finalShotAction() { //判断坦克方向来 初始化子弹的起始发射位置 final long nowMs = System.currentTimeMillis(); - if (lastShotMs != 0 && nowMs - lastShotMs < shotCDMs) { + if (lastShotTick != 0 && nowMs - lastShotTick < shotCDMs) { return; } if (this.bulletList.size() >= maxLiveBullet || !this.isAlive()) { @@ -152,27 +152,19 @@ public void finalShotAction() { } switch (this.getDirect()) { case DirectType.UP: { - Bullet s = new Bullet(this.getX() - 1, this.getY() - 15, 0); - bulletList.add(s); - LoopEventExecutor.addLoopEvent(s); + this.shot(this.getX() - 1, this.getY() - 15, DirectType.UP); break; } case DirectType.DOWN: { - Bullet s = new Bullet(this.getX() - 2, this.getY() + 15, 1); - bulletList.add(s); - LoopEventExecutor.addLoopEvent(s); + this.shot(this.getX() - 2, this.getY() + 15, DirectType.DOWN); break; } case DirectType.LEFT: { - Bullet s = new Bullet(this.getX() - 15 - 2, this.getY(), 2); - bulletList.add(s); - LoopEventExecutor.addLoopEvent(s); + this.shot(this.getX() - 15 - 2, this.getY(), DirectType.LEFT); break; } case DirectType.RIGHT: { - Bullet s = new Bullet(this.getX() + 15 - 2, this.getY() - 1, 3); - bulletList.add(s); - LoopEventExecutor.addLoopEvent(s); + this.shot(this.getX() + 15 - 2, this.getY() - 1, DirectType.RIGHT); break; } } @@ -184,7 +176,13 @@ public void finalShotAction() { // 协程池 // ExecutePool.shotScheduler.getExecutor().execute(s); - lastShotMs = nowMs; + lastShotTick = nowMs; + } + + private void shot(int x, int y, int direction) { + Bullet s = new Bullet(x, y, direction); + bulletList.add(s); + LoopEventExecutor.addLoopEvent(s); } @Override diff --git a/gui/src/main/resources/tank/client/index.html b/gui/src/main/resources/tank/client/index.html index 777ae55..0016171 100644 --- a/gui/src/main/resources/tank/client/index.html +++ b/gui/src/main/resources/tank/client/index.html @@ -7,20 +7,21 @@ - phaser example + Tank -
+
+
diff --git a/gui/src/main/resources/tank/client/main.js b/gui/src/main/resources/tank/client/main.js index 3dd8d7a..4904ca6 100644 --- a/gui/src/main/resources/tank/client/main.js +++ b/gui/src/main/resources/tank/client/main.js @@ -7,55 +7,97 @@ * For more details please see http://phaser.io/shop/plugins/virtualjoystick */ -var game = new Phaser.Game(1190, 590, Phaser.AUTO, 'phaser-example'); +let borderW, borderH; +let directX, directY; +let aX, aY; +let bX, bY; +let cX, cY; + +// console.log(screen.height); +// alert(screen.height + ' ' + screen.width) +let phone = screen.width < 900; +if (phone) { + borderW = screen.width; + borderH = screen.height; + + directX = 170; + directY = 250; + directScale = 0.7; + + skillScale = 0.8; + aX = 600; + aY = 270; + bX = 690; + bY = 170; + cX = 760; + cY = 270; +} else { + borderW = 1190; + borderH = 590; + + directX = 150; + directY = 430; + directScale = 0.85; + + skillScale = 0.9; + aX = 660; + aY = 420; + bX = 800; + bY = 320; + cX = 920; + cY = 420; +} + +var game = new Phaser.Game(borderW, borderH, Phaser.AUTO, 'phaser-example'); +var wsUsable =false; function connected() { - let ws = new WebSocket("ws://192.168.1.102:7094/ws?userId=120"); - ws.onopen = function () { - console.log('connected'); - }; - ws.onmessage = function (evt) { - console.log(evt.data) - }; - - ws.onclose = function (evt) { - console.log("error"); - }; - - ws.onerror = function (evt) { - console.log("error"); - }; - - return ws; + try { + wsUsable = false; + let ws = new WebSocket("ws://192.168.1.102:7094/ws?userId=120"); + ws.onopen = function () { + console.log('connected'); + // 等 open 函数回调后才可以调用 send,否则会报错 no longer object + wsUsable = true; + }; + ws.onmessage = function (evt) { + console.log(evt.data) + }; + ws.onclose = function (evt) { + console.log("error"); + }; + ws.onerror = function (evt) { + console.log("error"); + }; + + return ws; + } catch (e) { + console.log(e); + return null; + } } var ws = connected(); function toggleFullScreen() { var docElm = document.documentElement; if (docElm.requestFullscreen) { - docElm.requestFullscreen(); + docElm.requestFullscreen(); } else if (docElm.msRequestFullscreen) { - docElm.msRequestFullscreen(); + docElm.msRequestFullscreen(); } else if (docElm.mozRequestFullScreen) { - docElm.mozRequestFullScreen(); + docElm.mozRequestFullScreen(); } else if (docElm.webkitRequestFullScreen) { - docElm.webkitRequestFullScreen(); + docElm.webkitRequestFullScreen(); } - } - -// toggleFullScreen() +} var PhaserGame = function () { this.background = null; this.player = null; - this.speed = 300; - - this.weapon1; - this.weapon2; - this.weapon3; this.pad; + this.speed = 300; this.stick; @@ -74,7 +116,6 @@ PhaserGame.prototype = { }, preload: function () { - this.load.atlas('arcade', 'assets/arcade-joystick.png', 'assets/arcade-joystick.json'); this.load.image('background', 'assets/back.png'); this.load.image('player', 'assets/dark.png'); @@ -97,30 +138,32 @@ PhaserGame.prototype = { this.pad = this.game.plugins.add(Phaser.VirtualJoystick); - this.stick = this.pad.addStick(150, 430, 100, 'arcade'); + this.stick = this.pad.addStick(directX, directY, 100, 'arcade'); this.stick.deadZone = 0; - this.stick.scale = 0.85; + this.stick.scale = directScale; - this.buttonA = this.pad.addButton(650, 420, 'arcade', 'button1-up', 'button1-down'); + this.buttonA = this.pad.addButton(aX, aY, 'arcade', 'button1-up', 'button1-down'); this.buttonA.onDown.add(this.fireBullet, this); - this.buttonA.scale = 0.9; - this.buttonA.repeatRate = 100; + this.buttonA.scale = skillScale; + this.buttonA.repeatRate = 1000; this.buttonA.addKey(Phaser.Keyboard.CONTROL); - this.buttonB = this.pad.addButton(790, 320, 'arcade', 'button2-up', 'button2-down'); + this.buttonB = this.pad.addButton(bX, bY, 'arcade', 'button2-up', 'button2-down'); this.buttonB.onDown.add(this.fireRocket, this); - this.buttonB.scale = 0.9; - this.buttonB.repeatRate = 500; + this.buttonB.scale = skillScale; + this.buttonB.repeatRate = 300; this.buttonB.addKey(Phaser.Keyboard.Z); - this.buttonC = this.pad.addButton(920, 420, 'arcade', 'button3-up', 'button3-down'); + this.buttonC = this.pad.addButton(cX, cY, 'arcade', 'button3-up', 'button3-down'); this.buttonC.onDown.add(this.fireSpreadShot, this); - this.buttonC.scale = 0.9; + this.buttonC.scale = skillScale; + this.buttonB.repeatRate = 300; this.buttonC.addKey(Phaser.Keyboard.SPACEBAR); }, fireBullet: function () { - // toggleFullScreen() + toggleFullScreen(); + // ws = connected(); // this.weapon1.fire(this.player); @@ -135,10 +178,12 @@ PhaserGame.prototype = { fireSpreadShot: function () { // this.weapon3.fire(this.player); - let x = { - s: true - } + let x = { + s: true + } + if(wsUsable){ ws.send(JSON.stringify(x)) + } }, update: function () { @@ -168,8 +213,9 @@ PhaserGame.prototype = { else { // this.player.body.velocity.set(0); } - + if (wsUsable) { ws.send(JSON.stringify(key)) + } } }; diff --git a/netty/src/main/java/netty/Readme.md b/netty/src/main/java/netty/Readme.md new file mode 100644 index 0000000..138bdf5 --- /dev/null +++ b/netty/src/main/java/netty/Readme.md @@ -0,0 +1,4 @@ +https://www.baeldung.com/java-netty-http-server + +https://medium.com/@irunika/how-to-write-a-http-websocket-server-using-netty-f3c136adcba9 +