引き続き将棋盤を作っていきます。
使用技術
- Vue.js3
- Vite
- SCSS
駒を成る機能を実装します。
駒を成る機を実装
今回は正直、粛々と実装するのみです。
駒をなれるか、また特に現在成れるかの判定機能を実装します。
get canPromote(): boolean { return [ 'rook', 'bishop', 'silver', 'knight', 'lance', 'pawn', ].includes(this.type); } get canPromoteCurrent(): boolean { return this.canPromote && !this.isPromoted; }
駒を動かした際にconfirmを出して、OKなら成ります。
// 駒を成る const isBasefOpponents = (isFirst, row) => isFirst ? [1, 2, 3].includes(row) : [7, 8, 9].includes(row) if ( piece.canPromoteCurrent && ( isBasefOpponents(piece.isFirst, piece.row) || isBasefOpponents(piece.isFirst, row) ) ) { if (confirm('成りますか?')) { piece.isPromoted = true } }
あとは、駒がなっているかどうかによって、動かし方や表示を切り替えます。
作成した画面
PullRequest
https://github.com/nek0meshi/shogi-board/pull/6
まとめ
だんだん盤面がそれっぽくなってきました。