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


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
1027
BBT二次元配列でエラー76解決


BBT

リンク

2018/10/27(Sat) 22:03:50|NO.85736

HSP初心者です。
二次元配列を使ってシューティングゲームを作ろうとしているのですが、
エラー7が出てしまい原因がわからず困っています。
メモ帳に記録しているマップデータを変数に代入しようとしています。
超初歩的な質問ですみません、教えていただければ幸いです。



*setting //マップデータの読み込み notesel mapd noteload "stage.1.txt" dim map,10,15 x=0 y=0 repeat 15 noteget s1,y repeat 10 s2=strmid(s1,x,1) ; 1文字だけを取り出す map(x,y)=s2 ; マップデータを代入する x=x+1 loop x=0 y=y+1 loop goto *set

どうやらmap(x,y)=s2で起きているみたいです。
その前の行にdialog命令を入れてデバッグをしてみたところ、
map(3,0)のところでバグが起きているようです。
そのインデックスは個別に値を代入してみたところ、
今度はmap(1,1)でエラーが起きてしまいました。
どうすればよいのでしょうか?アドバイスお待ちしております。



この記事に返信する


とあるプログラマ

リンク

2018/10/27(Sat) 22:17:19|NO.85737

stage.1.txtの内容がわからないのでなんとも言えません。
あと、stage.1.txtはstage_1.txtなどのファイル名にしたほうが良いです。拡張子以外に.(ピリオド)を使うのは望ましくありません。



さか

リンク

2018/10/27(Sat) 22:25:13|NO.85738

エラーの出るタイミングが変ですが、mapは数字型なのに、文字型のs2を入れてる
からだと思います。
mapをs2に合わせ文字型にするかs2をmapに合わせて数字型にしたらどうでしょう。
以下はs2をintで数字型にしてます。

dim map,10,15 x=0 y=0 s1="123456789012345" repeat 15 ; noteget s1,y repeat 10 s2=int(strmid(s1,x,1)) ; 1文字だけを取り出す mes strf( "x[%d]y[%d]s2[%d]", x,y,s2 ) map(x,y)=s2 ; マップデータを代入する x=x+1 loop x=0 y=y+1 loop



BBT

リンク

2018/10/27(Sat) 22:26:00|NO.85739

返信ありがとうございます。
stage.1.txtの内容はデバッグ用に縦15列、横10列に6(celdiv命令で画像を分けています。
6は何もない空白です。)を敷き詰めています。
正しくスクリプトが記述されていれば自機と背景だけが表示されてるようにしています。
>>拡張子以外に.(ピリオド)を使うのは望ましくありません。
そうなんですか!ありがとうございます、勉強になります。



BBT

リンク

2018/10/27(Sat) 22:40:44|NO.85740

さかさんのスクリプトを入れさせてもらったところ、
今度は「エラー6パラメータの型が違います」が最初と同じ行に出てしまいました。
それとなぜnoteget命令の行にセミコロンが打ってあるんでしょうか。
ちなみにそれを外して実行してみると、
x[0]y[0]s2[6]
x[1]y[0]s2[6]
x[2]y[0]s2[6]



という風になってしまいました。(エラーは出ていません)
せっかくのアドバイスをうまく活かす事ができず申し訳有りません。



ZAP

リンク

2018/10/27(Sat) 23:17:53|NO.85741

テキストファイルに書かれた数字をテキストから取り出した場合、
変数の状態は「数値」ではなく「文字列」です。

たとえ「1」という数字がテキストに書いてあったとしても、
取り出した段階では「1」という文字列として変数に格納されています。
従って「1」という文字列を1という数値に変換する必要があります。

それを行っているのがさかさんのスクリプトでいえば

s2=int(strmid(s1,x,1)) ; 1文字だけを取り出す
の部分になります。

文字列を数値に変換せずにむりやり数値型の変数に代入しようととしているからおかしくなっているのだと思われます。



BBT

リンク

2018/10/28(Sun) 11:34:39|NO.85744

さかさん、ZAPさんのアドバイスをもとにs2を数字型変換したら
エラーなくちゃんと実行することができました!ありがとうございます!



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