HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0926
jsAsterマップ表示について。4解決


jsAster

リンク

2016/9/26(Mon) 22:57:11|NO.77003

マップを表示したかったのですが、xとyが同じ数になると誤作動を起こします。

buffer 1:color:boxf buffer 2:color 255,255,255:boxf gsel cls stage1={"1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,"} redraw 0 color:boxf *main redraw repeat 24 y=cnt repeat 32 tle = int(strmid(stage1, ((y * 32) + x)*2, 1)) x=cnt if tle=1{ pos x*20,y*20:gcopy 2,0,0,20,20 } if tle=0{ pos x*20,y*20:gcopy 1,0,0,20,20 } loop loop redraw await 16 goto *main

どなたか解決策を教えて下さい。



この記事に返信する


たんす

リンク

2016/9/26(Mon) 23:49:07|NO.77005

複数行の記述で制御文字か何かが入ってしまうのでしょうか。
改行数を変更すると黒マスの数も変化しました。

代替策としてsplit&switchの例をひとつ。
	color:boxf
split stage1,",",tle //マップデータ分割 *main repeat 24*32 y=cnt/32 x=cnt\32 pos x*20,y*20 switch int(tle(cnt))//将来的にチップ種類を増やせるように case 1 gcopy 2,0,0,20,20 swbreak case 0 gcopy 1,0,0,20,20 swbreak swend await 30//動作確認用。 loop stop



掘木

リンク

2016/9/27(Tue) 00:39:16|NO.77006

それは何を以って誤作動と呼ぶのですか。
命令、記述の仕様通りの挙動をしているように見えますよ。

1.{" から "} の文字列は、"を\"に、改行は\nに置換されて次行が連結されます。
  そして開始と末端を示す{"と"}をそれぞれ" " に置換したコードとほとんど同等と扱われます。

  これは、複数行文字列をmes命令等で表示した際に、
  記述通りに表示されることを期待する故の挙動と思われます。

早い話、複数文字列記述の行末には改行コードが含まれます。

2.strmidは文字列の先頭からの"表示可能な文字数"を以って切る関数ではないです。
  あくまでも内容の先頭からのバイト数です。
  x=yを満たすとき、改行文字コード(0x0D,0x0A)の前方である0x0Dを切り出しています。

3.改行制御コードの文字(0x0D)は数字ではないのでintでの変換結果は0です。
  よってtleの代入値通り、黒が表示されます。

詳細はデバッグウィンドウからメモリダンプを確認するといいでしょう。


なお、挿入されている改行コードが邪魔というなら、stage1代入後に

strrep stage1,"\n",""
あたりでいけるでしょう。



jsAster(タブレット)

リンク

2016/9/27(Tue) 17:06:04|NO.77010

堀木さんのやり方でやってみます。ありがとうございます。



jsAster(タブレット)

リンク

2016/9/27(Tue) 19:06:54|NO.77011

解決しました。



ONION software Copyright 1997-2021(c) All rights reserved.