プレイ日記
すら Kagpro
久しぶりの投稿です。BGとスプライトの配置をDATA化してみました!ただ1~9番までのBGしか使えないのが難点です…
3そうだね
プレイ済み
返信[1]
親投稿
すら Kagpro
実行結果
1そうだね
プレイ済み
返信[2]
親投稿
じてんしゃ kyabetu716
ASC関数を使えば...すごいやん?
2そうだね
プレイ済み
返信[3]
親投稿
ASCだと、改行マークとかがはいってしまう。 対策すればいいのだけど、そんなに種類がいらないならHEX$()というものがあります。 これだと、0-15番まで使えます。
1そうだね
プレイ済み
返信[4]
親投稿
すら Kagpro
ありがとうございます!
1そうだね
プレイ済み
返信[5]
親投稿
MIKI ifconfig
あまさとさんのコメントをを要約すると c=val(mid$(a$,i,1)) の代わりに c=val("&h"+mid$(a$,i,1)) で "0"~"9"が 0~9 "A"~"F"が 10~15 に変換できますということです。 "0"-"9","A"-"Z" を使って 36進数にすれば、0から35 を使えます。 (その場合は自作関数が必要) 豆知識: mid$(a$,i,1) は a$[i] と書く事が出来ます。こっちのほうが短くて速い。
1そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
36進数くらいならこんな感じでINSTRを使って記述しても問題ないかなと個人的には思います。 C=INSTR("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ,A[I]) これで"Z"ならば35という値を返します。 とはいえ、これでも結局使えるのは0~35のBGだけになります。 すらさんが言いたいのはこういうことではなく例えば0がレンガ(動かせない)、1が石壁(動かせる)など好きなBGを割り当てる方法だと思います。 そのためには配列変数を使ってテーブルを作っておくと良いです。 配列変数BG[0]にはデータが0番の時のBGの番号、BG[1]にはデータが1番の時のBGの番号というようにしておけばC=BG[VAL(MID$(A$,I,1))]と変更するだけで0~9の数字で自由な10種類のBGを選ぶことが可能になります。
0そうだね
プレイ済み
返信[7]
親投稿
otta777 otta777a
INSTR関数を使うと任意の文字をDATA命令中に使うことができます。 C=INSTR("0123456789ABC~(中略)~XYZ",MID$(A$,I,1)) Cが-1の場合にはBGPUTをせずデータを無視するかエラーで止めるか する必要がありますね。
0そうだね
プレイ済み
返信[8]
親投稿
MIKI ifconfig
あ、いいこと思いついた!! 文字列の線形検索実装できるね! b=5 l=1<<b 'キー最大長 ' テーブル初期化 for i = 0 to n-1 inc keys$, left$(left$(hash$[i],l-1)+chr$(0)*l, l) next '検索 def search(key$) return instr(keys$, left$(key$,l-1)+chr$(0))>>b end 自作のバイナリサーチより速そう!!
0そうだね
プレイ済み