スマレジエンジニアyushiのブログ

スマレジエンジニアのブログ

【将棋盤 第6回】駒を成る

引き続き将棋盤を作っていきます。

使用技術

  • Vue.js3
  • Vite
  • SCSS

yushi-dev.hatenablog.com

駒を成る機能を実装します。

駒を成る機を実装

今回は正直、粛々と実装するのみです。

駒をなれるか、また特に現在成れるかの判定機能を実装します。

  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
        }
      }

あとは、駒がなっているかどうかによって、動かし方や表示を切り替えます。

作成した画面

f:id:yushi0:20210329001344p:plain

PullRequest

https://github.com/nek0meshi/shogi-board/pull/6

まとめ

だんだん盤面がそれっぽくなってきました。