TransWikia.com

将棋のBOD形式をhtmlに読み込ませる方法について

スタック・オーバーフロー Asked by 0ppao on December 14, 2021

現在 shogizumen.jsというスクリプトを使って将棋の局面図を作成しようとしています。

<html>
<body>
  <script src="shogizumen.js"></script>
  <pre class="shogizumen">
  後手の持駒:なし
  9 8 7 6 5 4 3 2 1
+---------------------------+
|v香v桂 ・ ・ ・v玉v角v桂v香|一
| ・v飛 ・v銀v金 ・v金 ・ ・|二
|v歩 ・ ・v歩 ・ ・v銀v歩v歩|三
| ・v歩v歩 ・v歩v歩v歩 ・ ・|四
| ・ ・ ・ ・ ・ ・ ・ ・ ・|五
| ・ ・ 歩 歩 歩 ・ 歩 ・ ・|六
| 歩 歩 銀 金 ・ 歩 銀 歩 歩|七
| ・ ・ 金 ・ ・ ・ ・ 飛 ・|八
| 香 桂 角 玉 ・ ・ ・ 桂 香|九
+---------------------------+
先手の持駒:なし
手数=25  ▲3七銀  まで
  </pre>
</body>
</html>

このようなHTMLを作成するとブラウザではこのように表示されます

実行結果

この作業をHTMLに直接書き込むのでは無く、textareaに入力したBOD形式の文字列を読み込んで変換したいです。

試しにVueを用いてこのようなコードを作成したのですが上手く行きません

<html>
<script src='https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.22/vue.min.js'></script>
<link rel="stylesheet" href="main.css">
<body>

<div id="app">
<textarea v-model="bod" cols="40" rows="20" ></textarea>
<script src="shogizumen.js"></script>

<pre class="shogizumen">
{{bod}}
</pre>
</div>


<script>
  const vueapp = new Vue({
    el: '#app',
    data: {
      bod: '',
      aaa: ''
    }
  })
</script>
</body>
</html>

これではこのように表示されます

実行結果

どのようにすればtextareaに入力したBOD形式の文字列を上手く変換できるでしょうか?

One Answer

当該のスクリプトはドキュメントのロード時に存在するpre.shogizumenの置換を前提としているようであったのでそのまま動的なものに流用するのは厄介そうでしたが,幸いにもSSZumenがグローバルで利用可能な関数と一応なっていたのでそのままでも強引に使うことはできそうです.尤も強制的に再レンダリングを走らせるため厄介なことにはなりましたが……

const vueapp = new Vue({
    el: '#app',
    data: {
      bod: '',
      aaa: '',
      show: true,
    },
    watch: {
      bod() {
        this.show=false
        this.$nextTick().then(()=> {
          this.show=true
          return this.$nextTick()
        }).then(()=> {
          window.SSZumen()
        })

      }
    }
  })
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://pastebin.com/raw/UtB0nSan"></script>
<div id="app">
<textarea v-model="bod" cols="40" rows="20"></textarea>

<div v-if="show">
<pre class="shogizumen">
{{bod}}
</pre>
</div>
</div>

Answered by hinaloe on December 14, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP