FAQ3

■strmid命令で文字を1文字ずつ抜き出したい
Q.文字列から1文字ずつ切り抜きたいんだけど、strmid命令で1を指定すると、
2バイト文字の場合には文字化けしたヘンなコードが表示されてします。

A.peek命令で1バイトずつデータを判定して、切り出すといいでしょう。




ボタンにグラフィックを張りたい
Q.ボタンにグラフィックを張りたいのですが、方法を教えてください。

A.btnimgという命令で可能です。
hsp2.6で実行してください。

「すでに名前が使用されているので変数にできません」というエラー
Q.「すでに名前が使用されているので変数にできません」というエラーが出てしまいます。
対処法を教えてください。

A.ラベルと同じ名前の変数を使おうとしていませんか?
どちらかを変える必要があります。

*test
test=1
stop

このようなスクリプトはエラーになります。

peek命令ってどーなってるの?
Q.PEEK命令がナニをやっているかわかりません。

A.HSPで変数を使うと、その内容はメモリに書かれます。
普通に変数に足したりひいたりする場合には、
そのメモリに関しては気にしないでも使えます。
a="test"
mes a

などとすれば、メモリに関してはあまり考えなくてもかまいません。
このとき、メモリには

1バイト目 tのキャラクターコード $74
2バイト目 eのキャラクターコード $65
3バイト目 sのキャラクターコード $73
4バイト目 tのキャラクターコード $74
5バイト目 文字列の終了コード $00

という内容が書かれています。
この内容を直接読むのがpeek命令です。

a="test"
mes a
peek b,a,2
str b,17
mes b
stop



RPGのアイテム一覧
Q.「ドラクエ」みたいに持ち物を表示したい。

A.アイテム名称の配列、所持品の配列を用意します。
所持品の配列は、アイテム番号とそれぞれの個数が入るようにし、
現在の総数(持っているアイテムの種類の数)を入れます。
アイテムを増やしたり減らしたりするときにはこの数を使って配列を
減らしたり増やしたりします。


「バッファ」ってなに?
Q.「バッファ」という言葉が何度も出てきます。意味を教えてください。

A.「バッファ」は ”何かためておくためのところ”です。

HSPでは、buffer命令で初期化する、
仮想の見えないスクリーン(仮想画面)のことをバッファといいます。
バッファにグラフィックデータをおいておき、使うときには、バッファから画面にコピーすれば、
表示ごとにハードディスクから読み込まなくてすみます。

HSPのバージョン情報
Q.システム変数hspverを使ってみましたが、152838という変な数字が入っています。
どうしたらいいですか?

A.システム変数hspverには16進数で情報が入っています。
以下のスクリプトを実行すると手元のHSP2.55では「25506」という数字が表示されます。

a=hspver
str a,16
mes a
stop

テキストの点滅
Q.テキストを点滅させたいのですが、どうしたらいいですか?

A.同じ位置に同じ文字を別の色で表示すれば、点滅になります。

color 0,0,0
boxf
*top
color 255,255,255
pos 10,10
mes "テキストの点滅"
wait 50
color 0,0,0
pos 10,10
mes "テキストの点滅"
wait 50
goto top

フルカラーでフェードイン・アウトしたい
Q.フルカラーのグラフィックをフェードイン処理したいのですが。

A.別のバッファにブラフィックをコピーしておき、それを徐々に半透明コピーすれば出来ます。

screen 0,640,480,0
buffer 2,640,480
picload "sample\\demo\\hsp2ttl.jpg"
;フェードイン
repeat 17
redraw 2
gsel 0
color 0,0,0
boxf
x=cnt*16
title ""+x
gmode 3,640,480,x
gcopy 2,0,0,640,480
redraw 1
wait 5
loop
;フェードアウト
repeat 17
redraw 2
gsel 0
color 0,0,0
boxf
x=(16-cnt)*16
title ""+x
gmode 3,640,480,x
gcopy 2,0,0,640,480
redraw 1
wait 5
loop
stop

16進数を10進数に変換したい
Q.16進数を10進数に変換したいのですがどうしたらいいですか。

A.先頭に$が付けばintで変換されます。
このスクリプトでは”31”が表示されます。

a="1F"
b="$"+a
int b
mes b
stop


10進数から16進数への変換はstr命令です。
このスクリプトでは”1f”が表示されます。str命令のp2の18は、16進数の2桁に変換するという値です。
a=31
str a,18
mes a
stop



FAQへ戻る