Compare commits
No commits in common. "9f5c88ddbf4c40a2573e4cec67da71eff0bbc77d" and "05cc67532b971850accddcb70ac52d4b846c05c4" have entirely different histories.
9f5c88ddbf
...
05cc67532b
19
README.md
19
README.md
@ -1,9 +1,5 @@
|
|||||||
# 陆战棋
|
# 陆战棋
|
||||||
|
|
||||||
本项目将实现双人在线对局陆战棋。
|
|
||||||
|
|
||||||
## 简介
|
|
||||||
|
|
||||||
陆战棋,又称军棋,是中国近代一种根据军队中的军衔而设计的双人、四人棋类。棋盘上每方有三十个停靠点,包括二十五个兵站、五个圆形的行营和两个碉堡形的大本营。棋盘上的线分为两种:铁路线、公路线。两方势力通过三条铁路连接,每两条铁路之间有一个“山界”。每一方有25枚棋子,先夺得对方军旗者为胜。
|
陆战棋,又称军棋,是中国近代一种根据军队中的军衔而设计的双人、四人棋类。棋盘上每方有三十个停靠点,包括二十五个兵站、五个圆形的行营和两个碉堡形的大本营。棋盘上的线分为两种:铁路线、公路线。两方势力通过三条铁路连接,每两条铁路之间有一个“山界”。每一方有25枚棋子,先夺得对方军旗者为胜。
|
||||||
|
|
||||||
| 棋子 | 数量 | 说明 |
|
| 棋子 | 数量 | 说明 |
|
||||||
@ -21,6 +17,7 @@
|
|||||||
| 排长 | 3 | 可吃以下任何棋子 |
|
| 排长 | 3 | 可吃以下任何棋子 |
|
||||||
| 工兵 | 3 | 可以吃地雷 |
|
| 工兵 | 3 | 可以吃地雷 |
|
||||||
|
|
||||||
|
|
||||||
## 规则
|
## 规则
|
||||||
|
|
||||||
1. 双方将己方全部棋子按规则秘密地布置在己方棋盘的兵站或大本营中;
|
1. 双方将己方全部棋子按规则秘密地布置在己方棋盘的兵站或大本营中;
|
||||||
@ -39,13 +36,15 @@
|
|||||||
14. 己方司令被消灭后强制向敌方明示己方军旗所在位置;
|
14. 己方司令被消灭后强制向敌方明示己方军旗所在位置;
|
||||||
15. 成功攻击敌方军旗或敌方已失去所有机动力时则为获胜!
|
15. 成功攻击敌方军旗或敌方已失去所有机动力时则为获胜!
|
||||||
|
|
||||||
## 实现
|
## 功能
|
||||||
|
|
||||||
- [x] 棋盘底图
|
本项目将实现双人在线陆战棋的对局。
|
||||||
- [ ] 虚拟棋盘
|
|
||||||
- [ ] 布子规则
|
- [ ] 棋盘
|
||||||
- [ ] 比赛计时
|
- [ ] 显示底图
|
||||||
|
- [ ] 兵站、行营、大本营
|
||||||
|
- [ ] 棋子可以按规则放入兵站、行营、大本营
|
||||||
- [ ] 轮流行棋
|
- [ ] 轮流行棋
|
||||||
- [ ] 行棋规则
|
- [ ] 行棋规则
|
||||||
- [ ] 吃子规则
|
- [ ] 吃子
|
||||||
- [ ] 输赢判断
|
- [ ] 输赢判断
|
||||||
|
21
package-lock.json
generated
21
package-lock.json
generated
@ -476,6 +476,20 @@
|
|||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/fsevents": {
|
||||||
|
"version": "2.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
|
||||||
|
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
||||||
|
"dev": true,
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/function-bind": {
|
"node_modules/function-bind": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||||
@ -1560,6 +1574,13 @@
|
|||||||
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
||||||
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
|
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
|
||||||
},
|
},
|
||||||
|
"fsevents": {
|
||||||
|
"version": "2.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
|
||||||
|
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
"function-bind": {
|
"function-bind": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
"description": "陆战棋",
|
"description": "陆战棋",
|
||||||
"main": "server.js",
|
"main": "server.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "nodemon server.js",
|
"dev": "nodemon server",
|
||||||
"start": "node server.js",
|
"start": "node server",
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
|
@ -1,5 +1,14 @@
|
|||||||
const client = io()
|
const client = io()
|
||||||
|
|
||||||
client.on('message', (message) => {
|
client.on('role', (name) => {
|
||||||
console.log(message)
|
role.innerText = name
|
||||||
})
|
})
|
||||||
|
|
||||||
|
client.on('player', (player) => {
|
||||||
|
gameButton.classList = player
|
||||||
|
gameButton.innerText = player == 'player1' ? '玩家1' : '玩家2'
|
||||||
|
})
|
||||||
|
|
||||||
|
gameButton.onclick = () => {
|
||||||
|
client.emit('click')
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user