[8521] 教えてください 投稿者:maru 投稿日:10/05/09(日) 03:32
今日、HSPを始めようと思い、hsp32exeフルインストーラをWindows7にダウンロードしました。デフォルトのインストーラ先はC¥Program Files¥hsp32です。
デスクトップのエディタを開き、タブキーで右寄せしてから、命令文picload "HSP3TTL.JPG"と入力してコンパイラ実行してもエラーがでます。入門講座だとマイドキュメントに"hsp3ttl.jpg"のファイルをコピーしてとなっていましたが、コピーしてもエディタの作業フォルダがマイドキュメントでなく、デスクトップのためかエラーとなってしまいます。どうすれば、うまくいくのかご回答よろしくお願いいたします。
[8522] Re: 教えてください 投稿者:Kpan 投稿日:10/05/09(日) 09:17 <URL>
1.エディタのメニュー[ツール]→[設定]を選択
2.ツリーの[全般]→[ディレクトリ]を選択
3.[起動時の〜]を「指定なし」に選択
これで、HSP本体の「Program files\hsp32\」に
画像ファイルを置いてください。
[8515] ファイル振分けの事で。 投稿者:ILLMA 投稿日:10/04/20(火) 20:37
HSP初心者です。
目標は自分好みのファイル管理ソフトの作成です。
主に画像、動画、音楽ファイルなのですが、ファイルをプレビューを見ながら、
ファイルまたは、そのフォルダごと管理フォルダへ振り分けたいのです。
10〜15個のボタンを使い、各フォルダ(保存場所を指定可)へ振り分け、削除等を行うようにしたいです。
このようなソフトを作るのに、お勧めの入門書、サイト等、アドバイスをよろしくお願いします。
[8516] Re: ファイル振分けの事で。 投稿者:あり 投稿日:10/04/21(水) 15:23
HSPを勉強するのなら以下のサイトが判り易く情報量も多いと思いますし
目的のソフトを作るのに必要な情報もありますよ。
【基礎】
http://www.rinku.zaq.ne.jp/ultimate/
http://masudahp.web.fc2.com/hsp3/
【応用】
http://hspdev-wiki.net/
(※必見) http://lhsp.s206.xrea.com/
(※必見) http://hspnext.com/
>主に画像、動画、音楽ファイルなのですが、ファイルをプレビューを見ながら、
>ファイルまたは、そのフォルダごと管理フォルダへ振り分けたいのです。
HSPのサンプルにもファイルや画像を扱うサンプルがあるので
まずはそれらと命令ヘルプを見ながらどのように命令を使うのかを覚えていくと良いですよ。
おそらくHSPの基礎以外の知識が必要となる部分も出てくると思われますが
上に挙げたHPに必ずヒントがあるはずですので
悩んだら使えそうな情報が無いか探してみて下さい。
[8518] Re^2: ファイル振分けの事で。 投稿者:ILLMA 投稿日:10/04/22(木) 10:06
ありがとうございます。
HPを参考に、さっそく勉強してみようと思います。
[8503] mac版HSPについて質問 投稿者:まかー 投稿日:10/03/28(日) 17:47
先日、友人よりHSPというものを知ったものなのですが、mac版は2003年公開のものより開発が行われていないのでしょうか?
Windows版を先程試してみましたが、とても魅力的だと感じました。
私はWindowsも使っているのですが、開発は主にmacでの作業です。
Win/Macがどちらも同じソースで動かせたら、とても素晴らしいことだと思います。
Mac版はいまどうなっているのか、教えていただけると嬉しいです。
[8506] Re: mac版HSPについて質問 投稿者:ANTARES 投稿日:10/03/29(月) 02:26 <URL>
>mac版は2003年公開のものより開発が行われていないのでしょうか?
そのようです。
[8501] 問題のヒントについて教えてください 投稿者:J.Z 投稿日:10/03/21(日) 16:32
for文の問題で1から10までの和を求める問題と、
横幅と縦幅を認識して縦横に*を並べて長方形を表示させる問題があります。
それのプログラムのヒントを教えてください
[8502] Re: 問題のヒントについて教えてください 投稿者:20100322 投稿日:10/03/22(月) 04:30
1・forで廻るループの回数を任意の変数に順番に足すだけですよ。
2・forの入れ子でそれぞれのループカウンターで水平・垂直方向に
*を描画すればいいだけですよ。
BASIC:
FOR i = 1 to 10
○
NEXT
PRINT ○
FOR i = 1 to 10
FOR j = 1 to 10
CURSOR ○○
PRINT "*"
NEXT j
NEXT i
[8495] 無題 投稿者:にゃんちゃん 投稿日:10/03/14(日) 17:57
こんにちは。
mkpack.hspで、dpmファイルに暗号化を施したのですが、それをどうやってスクリプト側から指定するのか分かりません。
ようするに、ファイルにアクセスするときの、暗号化キーをどうやって指定すればいいのか分かりません。
暗号化するときは、ちゃんとキーを設定したのですが、いざ中身を使うときに、どこからパスワードを指定して鍵をはずせばいいのか分かりません。
よかったら教えてください。
[8497] Re: 暗号化DPMの読み込み 投稿者:あり 投稿日:10/03/15(月) 10:35
面倒でも質問のタイトルはちゃんとつけておいて下さいね。
本題ですが
mkpack.hspを解読していけば解決にはたどり着くのですが
意外とわかりにくいですね。
pack_make命令で作成した暗号化DPMファイルを読み込むためには
chdpm命令を使います。
詳しい使い方は命令ヘルプを参照のこと。
あとHSP3プログラミングマニュアルの『PACKFILEと暗号化』の項も
読んでおいて下さい。
[8499] 解決: 暗号化DPMの読み込み 投稿者:にゃんちゃん 投稿日:10/03/15(月) 17:34
こんにちは。
chdpm命令を使ったところ、うまくいきました。
どうもありがとうございました。
それから、質問のタイトルはこれから必ずつけるようにします。
[8500] Re: 解決: 暗号化DPMの読み込み 投稿者:ANTARES 投稿日:10/03/16(火) 00:17 <URL>
あらら、大嘘書いてしまったのね(^_^;;
ありさん、フォローありがとうございます。
[8496] Re: 無題 投稿者:ANTARES 投稿日:10/03/15(月) 01:01 <URL>
>暗号化キーをどうやって指定すればいいのか分かりません。
現在、事情があって確認できませんが、
その必要はなかったと思います。
つまり、暗号化されていないファイルを読むスクリプトと
同じでいいはずということです。
[8492] パズルゲーム 投稿者:Revy 投稿日:10/03/09(火) 19:12
現在ピースを移動させるタイプのパズルゲームを作成しているのですが、悩んでいる箇所がいくつかあります。
@ピースをドラッグしての移動で、(px,pyはピースの座標)
stick key,256
if key = 256 {
mx = mousex
my = mousey
await 1
px += (mousex-mx)
py += (mousey-my)
}
のように、1ms間のマウスの移動距離を加算すればいいのではないか?と思ったのですが、どうしても不自然になります。
マウスの動きと上手く一致させる方法はないでしょうか?
Aプレイ中の時間の計測の為に、全体のループの中の
awaitの数だけmsecに+し、msecが1000毎に1秒・・・としたのですが、マニュアルでは常にawait 1は1msだと書いていましたが、
明らかにそうではないんですよね・・・。恐らく、ループの処理が多くなった分遅くなっているのだと思いますが、
これは自分の感覚で調整するしかないのでしょうか?
[8493] Re: パズルゲーム 投稿者:ANTARES 投稿日:10/03/10(水) 02:13 <URL>
>1ms間のマウスの移動距離を加算すればいいのではないか?
>と思ったのですが、どうしても不自然になります。
私ならマウス座標の取得は1個所にして前回と今回の差を
座標に加えますが、Revyさんの処理でもそれほど不自然には
感じません。他の処理がまずいのでは?
>await 1は1msだと書いていましたが、
>明らかにそうではないんですよね
Windowsの時間計測誤差は数十ミリ秒程度です。
repeat
stick key,256
if key = 256 {
if f {
f=0
ox=mousex
oy=mousey
px=ox
py=oy
} else {
mx = mousex
my = mousey
await 1
redraw 0
color 255,255,255
line px,py,ox,oy
px += (mousex-mx)
py += (mousey-my)
color
line px,py,ox,oy
redraw
}
} else {
wait 1
f=1
}
loop
[8484] タスクバーにウィンドウ非表示 投稿者:argfb 投稿日:10/03/06(土) 21:12
はじめまして。argfbです。
ウィンドウを表示しながら、タスクバーに自分のプロセスのものを一つも表示しないことはできますか?
screen命令で第4パラメータに8を足すとメインウィンドウのツールウィンドウとして、
タスクバーにウィンドウ名は表示されません。
しかし8を足してもメインウィンドウがなければタスクバーに表示されてしまいます。
あと、他のウィンドウの子ウィンドウになるのはなしでお願いします。
分かりにくくてすいません。お願いします。
[8487] Re: タスクバーにウィンドウ非表示 投稿者:ANTARES 投稿日:10/03/07(日) 00:28 <URL>
>しかし8を足してもメインウィンドウがなければタスクバーに表示されてしまいます。
私の環境ではそんなことはないようですが……
screen 0,640,480,8
[8489] Re^2: タスクバーにウィンドウ非表示 投稿者:argfb 投稿日:10/03/08(月) 18:01
> >しかし8を足してもメインウィンドウがなければタスクバーに表示されてしまいます。
> 私の環境ではそんなことはないようですが……
そうですか。
環境によっても違うんですね。
ありがとうございました。
[8483] #define中にifがある場合の挙動。 投稿者:20100306 投稿日:10/03/06(土) 13:24
/*
この挙動に苦しむのですが・・・
*/
#define tes(%1="") if (1) {mes "?"} mes %1
if (0) :tes "::"
if (0) {tes "{}"}
[8486] Re: #define中にifがある場合の挙動。 投稿者:ANTARES 投稿日:10/03/07(日) 00:27 <URL>
こんな気持ちの悪いスクリプトを書く方が悪いと思う。
if (0): if (1) { mes "?" } mes "::"
[8488] Re^2: #define中にifがある場合の挙動。 投稿者:20100307 投稿日:10/03/07(日) 01:21
ですよね。
私は if () {}が普通なんですけどHSP使いの方は
if () :(マルチステートメント)が多いので
そこにマクロ(複雑な)が入って条件が真でもないのに
:以降が実行されるのに苦しんだんでもので・・・。
[8472] 二重(多重)起動 防止 投稿者:peg 投稿日:10/02/27(土) 17:19
はじめまして、pegと申します。よろしくお願いします。
質問させて頂きます。
二重(多重)起動の事なんですが、KpanさんのHPなども参考にしてみまさたが、Mutex…を使うと二つ目が起動して、すぐ強制終了させるというやり方ですよね?
二つ目すら起動させないで、むしろ最初の一つ目に起動したウィンドウをアクティブにすると言うやり方って有るんですか?
分かりずらい質問すみません<(_ _)>
[8474] Re: 二重(多重)起動 防止 投稿者:20100228 投稿日:10/02/28(日) 01:33
/*
ご参考:2度目の起動は仕方ないとして抽出した
hwndからクラス名でHSPを特定しPropの設定・取得でプログラム
を制御する方法も便利かも。(起動個数の制御とか)
*/
#include "user32.as"
ss = ""
GetClassName hwnd,varptr(ss),256
mes ss
SetProp hwnd,"起動回数",123
Getprop hwnd,"起動回数"
mes stat
RemoveProp hwnd,"起動回数"
Getprop hwnd,"起動回数"
mes stat
[8475] Re^2: 二重(多重)起動 防止 投稿者:20100228 投稿日:10/02/28(日) 06:02
/*
SCREEN1にPropを設定して試して見た。
*/
#include "user32.as"
screen 0
screen 1
repeat
FindWindowExA 0,ii,"hspwnd0",0 :ii = stat
if (ii == 0) {break}
GetProp ii,"回数" :jj = stat
if (jj != 0) and (ii != hwnd) {nn++ }
await
loop
mes strf("回数 = %2d 回目",nn+1)
if (nn < 2) {SetProp hwnd,"回数",1} else {dialog "強制終了" :end}
onexit *Close
stop
*close :RemoveProp hwnd,"回数" :end
[8473] Re: 二重(多重)起動 防止 投稿者:Kpan 投稿日:10/02/27(土) 21:04 <URL>
手抜きですがこんな感じで。タイトルバーの文字で同じもの
があったら終了させます。
>二つ目すら起動させないで
これは無理です。非表示ウィンドウで実行ファイル自動作成
しとけば、それっぽく見えます。
/////
#packopt hide 1//非表示ウィンドウ
#include "user32.as"
FindWindow 0, "hogehoge"
if stat != 0 {// 同じタイトルがあるならアクティブして終了
SetForegroundWindow stat
end
}
title "hogehoge"
mes "1つめ"
gsel , 1
///
[8479] 二重(多重)起動 防止 投稿者:peg 投稿日:10/03/03(水) 16:29
お二人ともご回答ありがとうございます!
サンプルも有りがたいです。
参考にさせて頂きます<(_ _)>
[8480] 二重(多重)起動 防止2 投稿者:peg 投稿日:10/03/03(水) 20:28
もう一つ聞きたい事が有りまして
自分で調べたんですが、見つけきらず…質問します。
Mutexを使った二重起動防止の場合で、一つ目のウィンドウをアクティブにする方法って有るんでしょうか?
[8481] Re: 二重(多重)起動 防止2 投稿者:20100304 投稿日:10/03/04(木) 02:21
/*
ご参考:相手からメッセージを送って終了させる(Mutexでも同じ)
*/
#include "user32.as"
repeat
FindWindowExA 0,ii,"hspwnd0",0 :ii = stat
if (ii == 0) {break}
GetProp ii,"回数" :jj = stat
if (jj != 0) and (ii != hwnd) {nn++ }
await
kk = ii
loop
mes strf("回数 = %2d 回目 [Handle] = %d",nn+1,hwnd)
if (nn < 1) {SetProp hwnd,"回数",1} else {sendmsg kk,$8000,hwnd}
oncmd gosub *Close,$8000 ;WM_APP
stop
*Close : dialog wparam :sendmsg wparam,$10 :return ;WM_CLOSE
[8482] 二重(多重)起動 防止2 投稿者:peg 投稿日:10/03/05(金) 13:50
20100304さん有難うございます<(_ _)>
大分レベル高いですね…このサンプル;
頑張って理解して参考にさせて頂きます!
[8476] テキストファイルへの追記の方法 投稿者:coke 投稿日:10/02/28(日) 15:24
すでに存在しているテキストファイルへ追記する方法はありますでしょうか。
bsaveを使うと、上書きしてしまい、元のテキストデータが維持されません。
一度読み込んでメモリにため込むにしても、元のテキストファイルの行数が固定ではありませんし、仮にできたとしてもいちいち読み込むのもスマートではないなと思います。
Perl言語等ですと、追記か上書きか選ぶオプションがあったりしたのですが、HSPのbsaveにはそれがないようです。
他の命令でもいいのですが、何か方法がありましたら教えてください。
[8477] Re: テキストファイルへの追記の方法 投稿者:20100228 投稿日:10/02/28(日) 18:12
/*
Bsaveのオプションでファイルポインターを調整すれば
Appendと同等に扱えると思う。
*/
ss = "A\nB\nC\n"
bsave "test",ss,strlen(ss)
exist "test"
ii = strsize
ss = "1\n2\n3\n"
bsave "test",ss,strlen(ss),ii
bload "test",ss
mes ss
[8469] テキストデータの比較置換 投稿者:ぬこ 投稿日:10/02/19(金) 21:54
2つのテキストファイルを読込んで
置換+結合を行うツールを作りたいですが
2つのテキストの比較をどのように行えばよいか解りません。
例えば、
[1.txt]
00001 000001
00003 000003
[2.txt]
00001 00001
00002 000002
とあった場合、1.txtを優先とした場合、
[完了後.txt]
00001 000001
00002 000002
00003 000003
となるようにしたいのです。
先頭5つの数字を判断して内容を書き換える物を考えています。
処理はnoteadd等で1行ずつ上書きする等と考えていますが
1000行単位でも非常に時間がかかってしまい、非効率となっています。
宜しければこのようなソフトを作る場合の処理についてアドバイスをいただけないでしょうか?
[8471] Re: テキストデータの比較置換 投稿者:Kpan 投稿日:10/02/20(土) 21:02 <URL>
どういうコードを組んだのか具体的に分からんですが、
扱う量が多いと、バッファ確保を明示的にしてなかったり、
noteaddとか+結合はパフォーマンスに響きます。
ぷまさんのカキコを参照。
http://fs-cgi-basic01.freespace.jp/~hsp/ver3/hsp3.cgi?print+200601/06020038.txt
[8470] Re: テキストデータの比較置換 投稿者:20100219 投稿日:10/02/19(金) 23:29
/*先頭5数字とスペースをキーとしてDat1の不足キーを補うだけなら
こんな感じかしら?(キーでソートされてる前提でポインター補正した)
注意:検索終了はDat1の文字数-5(キー数)
*/
dat1 = "00001 A\n00003 C\n00004 D\n"
dat2 = "00001 C\n00002 B\n00005 E\n"
dat3 = ""
ii = 0
jj = 0
kk = 0
ll = 0
mm = 0
repeat
ii = instr(Dat1,kk,strf("%05d ",cnt))
if (ii != -1) {kk+=ii :mm = instr(Dat1,kk,"\n")
Dat3+= strmid(Dat1,kk,mm)+"\n" :kk+=mm}
if (ii == -1) {jj = instr(Dat2,ll,strf("%05d ",cnt))
if (jj != -1) {ll+=jj :mm = instr(Dat2,ll,"\n")
Dat3+= strmid(Dat2,jj,mm)+"\n" :ll+=mm}}
if (kk >= strlen(Dat1)-5){break}
loop
mes Dat3
[8465] 株価シミュレーション 投稿者:玉 投稿日:10/02/16(火) 17:38
こんにちは、プログラミング未経験のものです。
タイトルのように、株式投資で一銘柄の過去の株価データを
使って色々な条件で売買したらどのような結果になるかの
プログラムをつくりたく、プログラム言語を探しています。
そこでネットで見つけたHSPという言語を知りました。
具体的には、一銘柄について
日付、株価(始値、高値、安値、終値)をデータとし
何年何日に何円で株を何単位買い、買値より10円高い売り注文
株価が10円下がるごとに買い増し、買値より10円高い売り注文
と、詳細は更に検討しています。
それで結果、どのような売買記録でどのぐらいの収益になるか
の様なものです。
こんなこともできますでしょうか?
データについては、オープンオフィスのCALCにインプット
済みです。
些細なことでも何でも構いませんので、アドバイスよろしく
お願いいたします。
[8468] Re: 株価シミュレーション 投稿者:20100217 投稿日:10/02/17(水) 15:47
/*面白そうなのでやってみたがFX向きなのかも知れない
基準単価の変動とかダウ先・先物・為替・とかやりだすときりが無い
Excelで出来るとも思うが
簡単なアルゴリズム売買でも利益が出せるのかも知れない・・・
*/
kk = 100,101,70,102,110,120,109,102,99,91,90,85,90,105,130,132,135,90,100
bb = 100.0
nn = 1
ss = bb
tt = 0.0
uu = bb*0.05
dd = -bb*0.05
cc = -bb*0.3
ff = 0.0
oo = 0
mm = ""
font msmincho,14
mes strf(" 利確 = %5f 買増 = %5f 損切 = %5f\n",uu,dd,cc)
mes strf("%5s %5s %5s %5s %5s %5s %5s"," 基準","枚数","金額","利益","指数","株価","回数")
repeat length(kk)
ff = (kk(cnt)-bb)
if (ff == 0) {} else { :color 0
if (ff <= dd) {
if (ff <= cc) {tt += (nn*kk(cnt))-(ss) :nn = 0 :ss = 0 :oo++
:color 255,,255 :mm = "損切"}
else {ss += kk(cnt) :nn++ :color 0,,255 :oo++}}
if (ff >= uu) {
if (nn == 0) { :color 128,128,128 :mm = "機会"}
if (nn != 0) {tt += (nn*kk(cnt))-(ss) :nn = 0 :ss = 0 :color 255 :oo++}}
mes strf("%5d %5d %5d %5d %5d %5d %5d %3s",bb,nn,ss,tt,ff,kk(cnt),oo,mm)
mm = ""
loop
[8464] notegetのp2で0を指定した時の動作 投稿者:餅 投稿日:10/02/16(火) 17:24
こんにちは、初めまして質問をさせて頂きます。
読み込んだテキスト(notetest.txt)の行に書かれた文字をランダムに表示しようと思って適当なプログラムを作ったのですが、ちょっと分からない事があるので質問させて頂きます。
notegetのp2に0を指定した時、F1の仕様書にはインデックスは0から始まると書いてありましたので、
0を指定してnotetest.txtの1行目を表示させようとしましたが、notetest.txtの文字列全てが表示されてしまいました。
HSPは短いので、記述ミスなのか仕様なのか判断が付かないのでここに質問させて頂だきます。
何らかの記述ミスでありましたら、指南して頂けるとありがたいです。
下記は実際のプログラムです。
randomize
sdim data
notesel data
noteload"notetest.txt"
最大行=notemax
サイコロ=rnd(notemax)
noteget data,サイコロ
mes""+data+""
mes"対象行"+サイコロ+""
mes"行数"+最大行+""
stop
[8466] Re: notegetのp2で0を指定した時の動作 投稿者:Kpan 投稿日:10/02/16(火) 21:22 <URL>
変数dataがnoteselとnotegetで被ってるのが原因です。
[8467] Re^2: notegetのp2で0を指定した時の動作 投稿者:餅 投稿日:10/02/17(水) 05:00
> 変数dataがnoteselとnotegetで被ってるのが原因です。
なるほど、notegetのp1に読み出し先の変数名と書いてあったので、
てっきり呼び出すのに変数指定が必要なのかと勘違いしてました。
解決しました、ありがとうございます。
[8461] ディレクトリ・ドライブが存在しているかを確認する 投稿者:20100209 投稿日:10/02/09(火) 23:24
向こうに書けないからココに失礼しますね。
エクスプローラー作るなら・こんなのでもいいと思うな。
(パスは/が便利だと思うな)
ii = 0
ss = "C:/*.*"
listbox ii,,""
;sendmsg objinfo(0,2),$18D,$4000 | $8000,varptr(ss)
sendmsg objinfo(0,2),$18D,$10 | $8000,varptr(ss)
[8460] ネットタイセンゲーム 投稿者:にゃんちゃん 投稿日:10/02/09(火) 18:25
こんにちは。
最近、ネット対戦ゲームのすごろくとかを作りたいと思うのですが
、
O2ネットワークがとても理解できず、困っています。
あまりリアルタイムな物でなければ、O2を使わなくてもできるもの
なのでしょうか?
もしできるなら、大体どういう風にしたらいいかを教えてください
。
一応、サーバーはあります。TCPを使うのかな?
[8429] (削除) 投稿者:(削除) 投稿日:10/01/10(日) 14:33
(削除されました)
[8455] Re: 誰かが作った「ballroad」について 投稿者:KA 投稿日:10/02/02(火) 19:03
”誰かが作った”の時点でアウトです。
直接作者に連絡して下さい、連絡先が判らないとはいいませんよね。
[8446] パスワードを入力した時に***にする方法 投稿者:息子 投稿日:10/01/30(土) 13:00
こんにちは、息子です。
ぼくは、パスワードソフトを作っていて
パスワード(input)を入力した時に、***にする
方法を教えてください。
[8447] Re: パスワードを入力した時に***にする方法 投稿者:Kpan 投稿日:10/01/30(土) 22:21 <URL>
>「HSP input パスワード」
Google検索してください
[8450] 無題 投稿者:息子 投稿日:10/01/30(土) 22:54
解決しました。
ありがとうございます。
[8449] Re^2: パスワードを入力した時に***にする方法 投稿者:Kpan 投稿日:10/01/30(土) 22:46 <URL>
おっと、解決済みですかい (^^;
>「マルチポスト」
Google検索してください
[8444] スクリーンを斜めにする方法を教えてください。 投稿者:息子 投稿日:10/01/26(火) 18:27
こんにちは
ぼくは、小学5年生で、HSPを始めたばかりです。
まったくの初心者です。
スクリーンを斜め傾ける方法があれば教えてください。
[8434] strsizeの上限 投稿者:kk 投稿日:10/01/16(土) 18:51
はじめて質問をさせて頂きます。
対象ファイル(C:\\data)のファイルサイズを取得するため、
以下のようなコードでファイルサイズを取得してみました。
ファイルサイズが1GB程度までならば取得できるのですが、
ファイルサイズが2GB程度になると、取得できなくなって
しまいます。(strsizeの値が、0や-1になってしまいます。)
strsizeで取得できるファイルサイズには上限があるのでしょうか?
もし上限があるとしたら、大容量ファイルのファイルサイズを取得する別の方法があるのでしょうか?
ご存知の方、ご教授頂ければ幸いです。
exist "C:\\data"
if strsize = -1 {
mes "ファイルが存在しません。"
mes "strsize="+strsize
stop
}
mes "対象ファイルのサイズは、"+strsize+"バイトです。"
stop
[8435] Re: strsizeの上限 投稿者:Kpan 投稿日:10/01/16(土) 21:05 <URL>
HSPが扱える整数値の限界です(2147483647)
文字列として取得するなら
http://fs-cgi-basic01.freespace.jp/~hsp/ver3/hsp3.cgi?print+200907/09120023.txt
[8436] Re^2: strsizeの上限 投稿者:kk 投稿日:10/01/16(土) 23:30
Kpan 様
早速のご教授、ありがとうございます。
HSPの整数型の限界だったのですね。。。
提示頂いた掲示板の情報で、ファイルサイズを取得する
ことも出来ました。本当に感謝です。
[8425] HSP3のエディターについて 投稿者:UNGA 投稿日:10/01/04(月) 19:44 <URL>
お初にお目にかかります。UNGAと申します。
HSPの使いやすさに魅了されてから早5年が経ちました。
素人プログラマに、素晴らしい開発環境を与えてくださった
おにたま様には感謝の気持ちでいっぱいです。
ところで、毎日のように使っている専用エディタですが、
大変使いやすい反面、不満も多少あります。
そこで要望なのですが、以下の何点かの実装を考えていた
だけないでしょうか。
@エラー行にワンクリックでに飛ぶ機能
Agotoやgosubの後ろに書いたラベルにワンクリックで飛ぶ機能
B特定のサブルーチンを別窓に表示しながら編集できる機能
まことに勝手な要望ながら、以上の機能があったら幸せだろう
なぁと思う今日この頃です。
(また、素人がそれこそHSPでプラグインなんかが作れると
それはそれで幸せだろうなあと・・・)
[8412] 無題 投稿者:K 投稿日:09/12/20(日) 22:31
はじめましてKです。
RPGの戦闘システムってどうやったら
作れますか?
[8413] Re: 無題 投稿者:tsuka 投稿日:09/12/21(月) 16:56
> はじめましてKです。
> RPGの戦闘システムってどうやったら
> 作れますか?
コードを打てば作れます。
もっと具体的な質問を心がけましょう。
[8417] Re^2: 無題 投稿者:K 投稿日:09/12/21(月) 20:57
> コードを打てば作れます。
> もっと具体的な質問を心がけましょう。
すみません。気をつけます。
また質問で申し訳ありませんが、
コードって何ですか?
[8419] Re^3: 無題 投稿者:あり 投稿日:09/12/22(火) 13:22
> コードって何ですか?
ソースコードの略、簡単に言うとプログラム(HSPスクリプト)の事です。
RPGの戦闘システムといっても基本はジャンケンのような物です。
プレイヤーとモンスターのパラメーターを比較して数値が上回っていたら
攻撃命中、ダメージの計算・・・の様な流れを繰り返しているだけです。
もっともそれだけでは単純すぎるので装備やスキル等で数値を変動させたり
ランダム要素で緊張感を持たせたりしている訳です。
あとは結果に応じてメッセージを表示したり画面を揺らしたりの効果を
付ければ一般的なRPGの戦闘システム風が出来るはずです。
Kさんが作りたい戦闘システムがどのような物かはわかりませんが
HSPの基礎さえ理解できていればRPGの戦闘システム自体はそれほど難しくはないので
HSPを勉強すると共に自分の作りたいシステムのRPGがどのように
パラメータを扱ってどのように画面を表示させているかを考えてみると
自分の作りたいRPGを作るために必要な事が分かってくるのではないでしょうか?
[8421] Re^4: 無題 投稿者:K 投稿日:09/12/22(火) 21:28
丁寧なご回答ありがとうございました。
HSPをもう少し勉強します。
[8402] 画像をクリック 投稿者:tomoki 投稿日:09/11/25(水) 21:54
引き続き質問です。連続ですいません。
画像をクリックしてその反応をキャッチすることってできるのですか?大体のゲームはwindowsのボタンではなくて違うボタンなので、ぼくもそれをやってみようと思ったのですが、どうがんばってもできませんでした…。
[8414] Re: 画像をクリック 投稿者:tsuka 投稿日:09/12/21(月) 17:01
> 引き続き質問です。連続ですいません。
>
> 画像をクリックしてその反応をキャッチすることってできるのですか?大体のゲームはwindowsのボタンではなくて違うボタンなので、ぼくもそれをやってみようと思ったのですが、どうがんばってもできませんでした…。
通常のボタンと同じ動作で、見た目だけ違う、というので大丈夫なら、HSP3.2から追加されたobjimage命令について調べてみてください。
また、他にも、getkeyやstick命令、onclick命令を使っても作ることができます。
[8403] Re: 画像をクリック 投稿者:tomoki 投稿日:09/11/25(水) 21:56
↓読みづらくてすいません。改行し忘れてました。
[8407] 無題 投稿者:しょうせい 投稿日:09/12/10(木) 14:45
初めましてしょうせいです。
大学の授業でアプリケーション(言語は自由)を製作する事になったのですが、
HSPでアナログ時計を作ろうという事になったのですが、まず何をしなければならないのかを教えてください。
ちなみにHSPは初心者です
[8409] Re: 無題 投稿者:あり 投稿日:09/12/13(日) 11:46
質問から時間が経ってしまったのでもう解決しているかもしれませんが・・・
どんな言語であれまずは基本を覚えないと応用も出来ないので
マニュアルや命令ヘルプを読み、サンプルを触るなどして
最低限の基礎は身につけておいて下さい。
(特に画像の表示と変数・ループの扱い等は必須です)
アナログ時計を作るのには
・現在時刻の取得
・時間に応じた角度で針を表示
が最低限必要になります。
作業に必要な命令はHSPに揃っていて
現在時刻はgettime関数で取得できますし
針の表示は画像を回転表示(grotateやcelput等)させたり
line命令で線を描くなどの方法があります。
画像を使う方法は取得した時間を回転させる角度に換算させれば良いだけですが
線を描く場合は三角関数を使った回転座標変換の知識が必要になります。
どちらの方法もヘルプやネットで検索すれば情報が簡単に見つかる
のでそれほど難しい作業ではないと思いますので色々と試してみてください。
[8396] 曲等の読み込み 投稿者:tomoki 投稿日:09/11/23(月) 19:14
曲等の読み込みはそのプログラムと同じフォルダに入っていないとだめなのでしょうか。
以前に実行プログラムとは別のフォルダに入っていても曲が再生できていたので自分もやってみましたが、できませんでした。
やり方がある場合はお教えいただけるとありがたいです。
[8397] Re: 曲等の読み込み 投稿者:Kpan 投稿日:09/11/23(月) 22:20 <URL>
普通にできますよ。できなかったのなら、パス指定を記述をミスってるか、
カレントフォルダが移動してるか(絶対パスを指定しとく)
///
mmload dir_exe + "\\sample\\demo\\se_tyuiin.wav"
button "", *play
stop
*play
mmplay
[8399] Re^2: 曲等の読み込み 投稿者:tomoki 投稿日:09/11/24(火) 18:42
もしかして、これってwav限定なんですか?
mp3だとできないとかありますか?
mmload dir_exe + "\\test\\test.MP3"
mmplay
stop
testというフォルダの中のtestというmp3の曲を再生しようとしたのですがだめでした。
[8400] Re^3: 曲等の読み込み 投稿者:Kpan 投稿日:09/11/24(火) 20:07 <URL>
こういう風に書けばわかるかと。
//
mes dir_exe
mes dir_exe + "\\test\\test.MP3"
//
>だめでした。
だけでは、情報が少なすぎて分からんです。HSPエラー(エラー番号)が
でるのか、うんともすんとも言わないのか・・・。
mmload命令が対応してる音楽形式なら問題なく再生できるはずです。
ためしに直でファイルを選択してみてください。
//
dialog "mp3;*.wav;*.mid", 16
if stat = 0 : stop
mes "選択したパス: "+refstr
mmload refstr
mmplay
//
[8401] Re^4: 曲等の読み込み 投稿者:tomoki 投稿日:09/11/25(水) 21:50
ありがとうございました。無事?解決いたしました。
なぜかプログラムからコンパイル+実行をやるとだめなのですが、一回実行ファイルを作り、それをやると曲が再生されました。
でもやりたいことはできたので良かったです。
質問に答えていただきありがとうございました。
[8398] Re^2: 曲等の読み込み 投稿者:tomoki 投稿日:09/11/24(火) 18:24
なんとなくやり方がわかったのですが、mmloadの後の
dir_exe +の部分がよくわからないです。
すいません。ぼくかなりの初心者なんです。
[8394] HSPについて 投稿者:けん 投稿日:09/11/21(土) 15:48
HSPは、数年前にいじったことがあるのですが、
バージョンアップしたことによって、VBなどの言語に
近づいたような気がします。
それだけ難しくなったように思うのですが、
そう思うのは私だけ?
[8395] Re: HSPについて 投稿者:あり 投稿日:09/11/22(日) 10:33
難しいかどうかは個人差があるので何とも言い難いのですが
最初に覚える事が多少増えたという意味ではほんの少しハードルが高くなったともいえますね。
もっとも、HSPの本質的な部分は今も変わっていないので
初めてプログラムを経験されるような人が画像や音楽を扱おうとした場合の
簡便さは現在でもトップクラスでしょう。
少なくともHSPの基本機能の枠内で使うのであれば
特別難しい事は無いと私は思いますよ。
API等を使おうとするとまた違った苦労があるのは
HSPに限った話ではないですしね。
[8386] 配列で画像表示 投稿者:けん 投稿日:09/11/19(木) 19:38
HSP始めて間もないのですがよろしくお願いします。
同じ画像を20こ同時に表示させるときには
下記のようなコードを書かずに、配列を使って書くことが
できると思うのですが、
下記の場合はどのようなコードになるのでしょうか?
buffer 1
picload "gazou.jpg"
screen 0, 640, 480
gmode 2
pos 100,100
gcopy 1,0,0,32,32
pos 100,200
gcopy 1,0,0,32,32
pos 200,300
gcopy 1,0,0,32,32
stop
[8387] Re: 配列で画像表示 投稿者:Kpan 投稿日:09/11/19(木) 20:14 <URL>
似たような処理はrepeat-loopで繰り返します。
表示位置の情報は、あらかじめ配列変数で用意しとく
なりしてください。(「HSP 配列変数」でググる
[8391] Re^2: 配列で画像表示 投稿者:けん 投稿日:09/11/20(金) 15:54
> 似たような処理はrepeat-loopで繰り返します。
> 表示位置の情報は、あらかじめ配列変数で用意しとく
> なりしてください。(「HSP 配列変数」でググる
ボウリングの玉とピンを配置ボタンを押すことで
表示させることができました。
ところで読み込む画像のことですが、ピンと玉を画像処理ソフトで
合体させて新しい画像を作ることで解決できたのですが
HSPは、このような方法でしか、1つ以上の画像を読み込むことは
できないのですか?
dim x,10
x(0)=200,200,200,200,230,230,230,260,260,290
dim y,10
y(0)=100,150,200,250,130,180,230,150,200,180
buffer 1
picload "bo.gif"
screen 0, 640, 480
gmode 2
color 0, 255, 0
boxf
repeat 10
redraw 0
pos x(n), y(n)
gcopy 1,1,0,27,58
n=n+1
loop
pos 500,200
gcopy 1,32,0,32,32
pos 10,10
button"配置",*click
[8392] Re^3: 配列で画像表示 投稿者:Kpan 投稿日:09/11/20(金) 20:09 <URL>
repeat命令はシステム変数のcntにカウント値が
代入されてます。
すっかり忘れてましたが、3.2からの新規対応で
cel〜命令(celloadとか)がありますな。
[8389] Re^2: 配列で画像表示 投稿者:けん 投稿日:09/11/20(金) 10:05
> 似たような処理はrepeat-loopで繰り返します。
> 表示位置の情報は、あらかじめ配列変数で用意しとく
> なりしてください。(「HSP 配列変数」でググる
コードを訂正します。
dim x,10
x(0)=200,200,200,200,230,230,230,260,260,290
dim y,10
y(0)=100,150,200,250,130,180,230,150,200,180
buffer 1
picload "kpin.gif"
screen 0, 640, 480
color 0, 255, 0
boxf
gmode 2
repeat 10
pos x(n), y(n)
gcopy 1,0,0,32,58
n=n+1
loop
pos 10,10
button"ころがす",*click
stop
*click
buffer 2
picload "xtama.jpg"
screen 0, 640, 480
color 0, 255, 0
boxf
gmode 2
pos 300,200
gcopy 2,0,0,32,32
stop
[8388] Re^2: 配列で画像表示 投稿者:けん 投稿日:09/11/20(金) 09:54
> 似たような処理はrepeat-loopで繰り返します。
> 表示位置の情報は、あらかじめ配列変数で用意しとく
> なりしてください。(「HSP 配列変数」でググる
配列わかりました。有り難うございます。
ところで引き続きの質問で申し訳ないのですがよろしく
お願いします。
ボウリングのピンを10本並べて、ボタンをクリックすると
弾がころがるようなアニメを作ってますが、
まだ製作の途中なのですが、ボタンを押すとボウリングの
ピンが消えてしまうのですが、どこかに間違いがあるのでしょうか?
dim x,10
x(0)=200,200,200,200,230,230,230,260,260,290
dim y,10
y(0)=100,150,200,250,130,180,230,150,200,180
buffer 1
picload "kpin.gif"
screen 0, 640, 480
color 0, 255, 0
boxf
gmode 2
repeat 10
pos x(n), y(n)
gcopy 1,0,0,32,58
n=n+1
loop
pos 10,10
button"ころがす",*clcki
stop
*clcki
repeat
buffer 2
picload "xtama.jpg"
screen 0, 640, 480
color 0, 255, 0 ;緑色設定
boxf
gmode 2
[8382] 画像の読み込みについて 投稿者:けん 投稿日:09/11/18(水) 19:36
これまでVB.netを勉強してきましたが、VBでゲームを作るのはなかなか難しいのでHSPに取り組んでみることにしました。
そこで質問なのですが、画像を取り込む場合に解像度が800×800の
画像を自動的に32×32に縮小して表示することは
HSPではできないのでしょうか?
[8383] Re: 画像の読み込みについて 投稿者:Kpan 投稿日:09/11/18(水) 20:02 <URL>
エディタでF1キーを押すとヘルプが表示されるので「縮小」で
検索してください。buffer画面にpicloadしておいて、メイン
画面にgzoomする流れになるかと思います。
[8384] Re^2: 画像の読み込みについて 投稿者:けん 投稿日:09/11/19(木) 09:30
> エディタでF1キーを押すとヘルプが表示されるので「縮小」で
> 検索してください。buffer画面にpicloadしておいて、メイン
> 画面にgzoomする流れになるかと思います。
ありがとうございます。
まだ試しておりませんが、土日にかけてやって見ようと思ってます。
おかしな質問かもしれませんが、HSPでは、画像処理ソフト等で画像のサイズを変えて使用するのが一般的なのでしょうか
[8377] 質問2 投稿者:帝国学園 投稿日:09/11/15(日) 12:32
すみません。
下の間違いです。
正しくは、
repeat
stick a
if a = 8 : goto *aa
if a = 16 : goto *ab
wait 10
loop
stop
*aa
picload "aac.jpg"
stop
*ab
picload "abc.jpg"
stop
です。
[8380] Re: 質問2 投稿者:ANTARES 投稿日:09/11/16(月) 11:47 <URL>
>これで、やってみると、*aaや*abに飛びません。
私の環境では再現しません。
なお、repeat〜loopの中からgotoで飛び出してはいけません。
何度も繰り返すとエラーが起きます。
[8378] Re: 質問2 投稿者:矢野 投稿日:09/11/15(日) 21:14
stick 命令の演算子は、「=」ではなくて「&」を使います。
「=」を「&」に変えると、うまく動きます。
[8376] 質問2 投稿者:帝国学園 投稿日:09/11/15(日) 12:28
質問の返信、ありがとうございます。
もう一つ分からないことがあるのでお答えお願いします。
repeat
stick a
if a = 8 : goto *aa
if a = 16 : goto *ab
wait 10
loop
stop
*aa
picload "aac.jpg"
stop
*ab
picload "abc.jpg"
stop
これで、やってみると、*aaや*abに飛びません。
どうしても、分からないので、お願いします。
[8370] 質問 投稿者:帝国学園 投稿日:09/11/13(金) 19:18
HSP3初心者です。
変数を保存したいのですが、命令が分かりません。
詳しく、やり方を教えてもらえないでしょうか?
[8372] Re: 質問 投稿者:ANTARES 投稿日:09/11/13(金) 23:53 <URL>
> 変数を保存したいのですが、命令が分かりません。
http://antares.cn/hsp/sample/index.html#variable
[8375] Re^2: 質問 投稿者:ANTARES 投稿日:09/11/15(日) 07:03 <URL>
> > 変数を保存したいのですが、命令が分かりません。
> http://antares.cn/hsp/sample/index.html#variable
ローカルしか更新してなかったのに気づいて、
今、更新しました(^_^;;
[8371] Re: 質問 投稿者:Kpan 投稿日:09/11/13(金) 20:56 <URL>
テキスト形式で読み書きするなら、メモリノートパッド
(note〜命令)
バイナリ形式で読み書きするなら、poke命令系で書き込ん
だり、下のように代入処理したり。逆の取得はpeek関数系。
//
buf = 100, 10, 1000
bsave "hoge.dat", buf
mes "done. "+strsize
//
[8373] GIF 投稿者:KuReo 投稿日:09/11/14(土) 14:59
HSP初心者です
アニメーションGIFを表示させるスクリプトってありますか?
誰か教えてください;;
[8374] Re: GIF 投稿者:Kpan 投稿日:09/11/14(土) 18:09 <URL>
Googleで検索してください。「HSP アニメーションGIF」
[8362] アプリケーションキャプチャ 投稿者:hehe 投稿日:09/11/02(月) 15:53
はじめまして。HSP初心者です。
HSPを使ってWordなどの文章を保存することは可能でしょうか?
ファイルボタンをクリックさせ、
名前をつけて保存をクリックさせ・・・と順番に行いたいのですが。
どなたか回答お願いします。
[8363] Re: アプリケーションキャプチャ 投稿者:Kpan 投稿日:09/11/02(月) 19:50 <URL>
HSP外の知識が必要ですが、COM経由でWordオブジェクトを。
http://geocities.yahoo.co.jp/gl/gbmogiki/view/20090801/1249121986
[8365] Re^2: アプリケーションキャプチャ 投稿者:hehe 投稿日:09/11/04(水) 19:30
Kpanさん返信ありがとうございます。
Wordの場合については分かりました。
このようなことをほかのアプリケーションでもできるのでしょうか?
アプリケーションを自動で制御したいのですが。。。
[8366] Re^3: アプリケーションキャプチャ 投稿者:Kpan 投稿日:09/11/04(水) 20:21 <URL>
できるのもあるし、できないのもあるし・・・それはアプリ
ケーションの対応次第です。
あとGoogleで「HSP アプリケーションキャプチャー」とかで
調べてください。拡張プラグインのhspext.dllがサポート
してます。
[8359] 文字列参照 投稿者:よちよち 投稿日:09/10/25(日) 14:37
HSP 初心者です
文字列をindexで参照するにはどのようにするのでしょうか
例えば
st="abc_def_g"
if(st(3)="_" and st(7)="_"){
mes " yes !! "
}else{
mes " no !! "
}
のように簡単に出来ないのでしょうか?
やはり、strmidでそれぞれ抜き出して
検査するしかないのでしょうか
どなたかご教授お願いします。
[8360] Re: 文字列参照 投稿者:kotetsu 投稿日:09/10/25(日) 20:09
> 文字列をindexで参照するにはどのようにするのでしょうか
peek関数で文字コードを読み出せます。
poke命令で文字コードを書き込むこともできます。
wpeek、wpoke、lpeek、lpoke というのもあります。
詳しくはF1キーを押してヘルプを参照してください。
st="abc_def_g"
if peek(st,3)='_' & peek(st,7)='_'{
mes " yes !! "
}else{
mes " no !! "
}
poke st, 3, '?'
poke st, 7, '!'
input st
[8361] Re^2: 文字列参照 投稿者:よちよち 投稿日:09/10/25(日) 21:09
kotetsuさん 早速のご回答有難う御座いました。
peek関数、poke関数で処理できる事、
' 'で文字コードになる事を知りました。
その他の事までお知らせして頂き有難うございます。
もう少しじっくりと、ヘルプを読みたいと思います。
[8319] ANDの不具合? 投稿者:9 投稿日:09/08/10(月) 16:41
以下のスクリプトで mes 1 のところが実行されるはずなのに、実行されません。
バージョンは3.2正式版です。よろしくお願いします。
x = 0 : y = 6
if (x == 0) && (y & 4) : mes 1
if (x == 0) {
if (y & 4) : mes 2
}
[8320] Re: ANDの不具合? 投稿者:ANTAES 投稿日:09/08/10(月) 23:30 <URL>
http://hsp.tv/play/pforum.php?mode=all&num=26038
それから、&&は使えそうで使えません。
正しく動く場合と動かない場合があります。
[8326] Re^2: ANDの不具合? 投稿者:ttoc 投稿日:09/08/28(金) 02:58
> http://hsp.tv/play/pforum.php?mode=all&num=26038
>
> それから、&&は使えそうで使えません。
> 正しく動く場合と動かない場合があります。
どんな場合でも正しく動作します。
正しく動作しない場合をお聞かせ願えますか?
[8328] Re^3: ANDの不具合? 投稿者:ANTAES 投稿日:09/08/28(金) 06:41 <URL>
おにたまさんが「&&」と「||」は正式仕様ではないのでサポートしない
ようなことを言っていたので、3になっても同じだと思っていましたが、
直っていましたか。
失礼。
[8329] Re^4: ANDの不具合? 投稿者:ANTARES 投稿日:09/08/29(土) 03:08 <URL>
ハンドルがANTAESになってたので直しときます。
[8331] Re^5: ANDの不具合? 投稿者:おにたま(管理人) 投稿日:09/08/29(土) 03:38 <URL>
ちょっと発言の意図がわかりませんが、現在のHSPでは「&&」と「||」は「&」「|」と等価でありC言語等の記号とは動作が異なります。
その意味では、ANTARESさんの指摘は正しいかと思います。
[8332] Re^6: ANDの不具合? 投稿者:ttoc 投稿日:09/08/29(土) 05:12
> ちょっと発言の意図がわかりませんが、現在のHSPでは「&&」と「||」は「&」「|」と等価でありC言語等の記号とは動作が異なります。
> その意味では、ANTARESさんの指摘は正しいかと思います。
違います。
HSPとしての&と&&が等価であるとか、
C言語のそれとHSPのそれが等価でないとか、
そういうことについて言及しているのではありません。
ANTARESさんは、
HSPにおいて「&&が正しく動作しないときがある」とおっしゃられていますが、
1)ANTARESさんが&と&&をC言語と等価であると考えていた場合
その場合、&&は&&の動作を行いますから、
「&&の動作が正しくない」ということはありません。
2)ANTARESさんが&と&&を等価であると知っていた場合
その場合でも、&&は&&の動作を行いますから、
「&&の動作が正しくない」ということはありません。
&&演算子の動作はいずれの場合も「正しい動作」をしています。
「正しく動作しない場合がある」というのは、
「プログラマの意図したとおりに動かない」ではないですか?
「プログラマの意図したとおりに動かない」と「演算子が正しく動作しない」
は全く別です。
おそらくANTARESさんが「演算子が正しく動作しない」と思われたのは、
HSPの仕様を把握していなかったからなのでしょう。
[8348] 自作関数・命令の可変個引数の取得方法 投稿者:deffunc 投稿日:09/09/25(金) 10:08
strfのような可変個引数を自作することができますか?
またそれは どのような方法でしょうか?
ドキュメントがあればドキュメント先を教えてください。
[8351] Re: 自作関数・命令の可変個引数の取得方法 投稿者:20091002 投稿日:09/10/02(金) 06:05
> strfのような可変個引数を自作することができますか?
> またそれは どのような方法でしょうか?
> ドキュメントがあればドキュメント先を教えてください。
;こんな感じで誤魔化したらどうですか?
#module
#deffunc Ftes int p1,int p2,str p3
mes p1
if (p2 == -1) {mes 999} else {mes p2}
mes p3
return p1
#global
#define Dtes(%1=0,%2=-1,%3="ABC") Ftes %1,%2,%3
Dtes 10
mes stat
[8355] Re^2: 自作関数・命令の可変個引数の取得方法 投稿者:deffunc 投稿日:09/10/06(火) 09:46
そういった擬似的・妥協的手法ではなく、
たとえば、自作のモジュール関数の可変個引数を、
内部でstrf関数に渡したいときにどうするか、などの問題を提示したかったのですが。
本家できいてみます。
[8352] タスクトレイ 投稿者:にゃんちゃん 投稿日:09/10/02(金) 19:36
こんにちは。HSPのソフトを、タスクトレイに常駐させるにはどうすればいいのでしょうか?
[8354] Re: タスクトレイ 投稿者:GENKI 投稿日:09/10/02(金) 22:24
> こんにちは。HSPのソフトを、タスクトレイに常駐させるにはどうすればいいのでしょうか?
少し難しいかもしれませんが、「hsp タスクトレイ」でググれば出来るようになると思います。
[8350] 画像の余白の処理について 投稿者:足軽 投稿日:09/09/30(水) 22:04
はじめまして。足軽です。
今、横スクロールアクションゲームをHSPで作っているのですが、
そのゲームに使う画像の余白が邪魔で、キャラクターの描いてある
部分だけを表示したいのですが・・・。
グラフィック上の問題ですか?
それとも、プログラムでどうにかなるのでしょうか?
教えてください。
[8353] Re: 画像の余白の処理について 投稿者:GENKI 投稿日:09/10/02(金) 22:22
> 画像の余白が邪魔で、
四角の画像になってしまっていて、キャラクターの背景が透明になっていない。
ということでしょうか?
gmodeは使っていますか?
[8349] マルチスレッドランタイムの使い道 投稿者:deffunc 投稿日:09/09/25(金) 23:35
連続投稿失礼します。(過疎故にレスが遅いもので)
マルチスレッドが、
ある複数のスレッドにタイムスライスを割り当て、
交互にスレッドを切り替えることにより、
擬似的に並列処理を実現する仕組み、
ということは知識としてもっています。
HSPが通常のラインタイムではシングルスレッドであり、
スレッドレベルでの並列処理には対応していない、
ということもわかります。(そもそもHSPにスレッドの概念はない)
例えば、
「▲を表示するルーチン」と「●を表示するルーチン」があり、
「▲を表示し、●を表示する」という処理は
必ず「▲を表示し終えてから●が表示される」という結果になります。
そもそもここでの説明に「ルーチン」を使わざるを得ないことが
スレッドの概念が無いことの証でもあります。
では、マルチスレッドランタイムを使用した場合、
具体的に何がどう通常ランタイムと変わるのでしょうか?
最適化されていることで実行速度が上がる程度なのでしょうか?
それともプラグイン等のスレッドを生成する類のもので
真価が発揮されるのでしょうか?
つまり、
「マルチスレッドランタイムはプラグインで新たにスレッドを生成し、
スクリプトの実行スレッドと平行して処理させたい場合に限り、
真価が発揮される。」
という理解で正しいのでしょうか?
よろしくお願いします。
[8343] hsp let 投稿者:Mr.女王の髪 投稿日:09/09/16(水) 21:41
hsp letでどうしても、html化することができません。エラーメッセージを見ると、対応していない命令を使ってしまったようです。(notesave)ここからhtml化するには、命令をかえなければならないのでしょうか?
[8347] Re: hsp let 投稿者:あり 投稿日:09/09/19(土) 12:34
HSPLetではセキュリティ上の問題でデータを保存する命令(bsaveやnotesave等)は使用できませんので
作成中のソフトの仕様を変更するしかないですね。
どの命令が利用可能なのかはHSPLetマニュアル内の命令表を参考にして下さい。
[8337] hsp3demo.exeで内部エラー 投稿者:かの 投稿日:09/08/31(月) 21:43
今頃指摘?という感じもあり大変恐縮ですが、
hsp3demo.exeを実行しようとすると、
「内部エラーが発生しました(38)」のエラーメッセージが出て
実行することが出来ません。
HSP3.2, HSP3.1で発生します。3.0では発生しません。
いずれもzipから解凍して使用しています。
DLLが見つからないような時に出るエラーのようですが、
何か足りないファイルでもあるのでしょうか?
ちなみにOSはWindows 98です。
[8341] Re: hsp3demo.exeで内部エラー 投稿者:Kpan 投稿日:09/09/02(水) 19:55 <URL>
こちらでは確認できません。
そのデモは音楽再生に「hspogg.dll」を使ってるので、それを
わざと開発環境から取っ払えば再現できますが・・・。
デモのソースコードも付いてるので、そっちをコンパイル実行
してみては?
> sample\demo\demo.hsp
[8342] Re^2: hsp3demo.exeで内部エラー 投稿者:かの 投稿日:09/09/06(日) 15:02
あぅ。デモのソースコードがついていたのですね。
確認しました。
HSPOGGが原因でした。
HSPOGG(の元となるHSPIMG3)がDirectX8以降を対象としているので、
Windows98+DirectX7aでは動きませんでした。
デモのソースコードを動くように修正している過程で気付きましたが、
#deffunc sndfade
に対応するreturn命令の位置が少しおかしいですね。
スッキリしました。ありがとうございます。
[8333] HSP3.2製ソフトの配布 投稿者:アビゲイン 投稿日:09/08/30(日) 19:06
こんばんわ、前回は大変助かりました!
今回、聞きたい事は
HSPで作ったソフトの配布をする為に、Readme.txtを書いているのですが"動作環境"には何て書けば良いのでしょうか…。
HSP本体と同じ"動作環境"を書けばいいのかとも迷いました。
一応、私の開発環境を書いときます。(どうでも良いかもですけど…)
Vista / HSP3.2 / 100%内蔵命令 です。
よろしくお願いします。
[8335] Re: HSP3.2製ソフトの配布 投稿者:Kpan 投稿日:09/08/30(日) 21:05 <URL>
標準命令なら、「Windows 98以降」とかで別に問題ないです。
# 実際のところ、WindowsユーザーはXP+Vistaで9割ぐらい
# いってるんじゃないですかね。
[8336] Re^2: HSP3.2製ソフトの配布 投稿者:あり 投稿日:09/08/31(月) 10:22
細かく書くのなら
必須動作環境:HSPの動作環境
推奨動作環境:自分の開発環境(OS・CPU・メモリ)又は理想とする処理速度が期待できる環境
を書き、どの環境で開発・動作確認をしたか書いておけば良いと思います。
[8340] Re^3: HSP3.2製ソフトの配布 投稿者:アビゲイン 投稿日:09/08/31(月) 23:01
丁寧な回答ありがとうごいざいます。
お二人の貴重な意見を参考にさして頂きます^^
[8327] HSPTV掲示板 投稿者:ttoc 投稿日:09/08/28(金) 03:00
TVの方でアドバイスを投稿したいのですが、
ホストが許可されていないと言われて弾かれてしまいます。
何とかなりませんか?
[8330] Re: HSPTV掲示板 投稿者:おにたま(管理人) 投稿日:09/08/29(土) 03:38 <URL>
申し訳ありません。
HSPTV掲示板では、一部のホストに対してアクセス制限を行なっています。
制限についてのご質問は、お手数ですが管理人(info@hsp.tv)までメールにてお問い合わせ頂くようお願い致します。
[8323] モジュールの置き場所? 投稿者:アビゲイン 投稿日:09/08/19(水) 18:33
はじめまして。早速質問ですが…
私は人様の作られたモジュールをDLして使用さして頂いてますが
、このDLした、もしくは自分で作ったモジュールはどこに置いて置
くべきでしょうか?
HSP3.2を使っていますが、付属のモジュールはcommonフォルダに入
ってますよね?もしかして、DLした又は自前モジュールはcommonフ
ォルダに移動しなければいけないんでしょうか…?
最近モジュールを使えるようになりまして拙い文集ですが
ご回答よろしくお願いします。
[8324] Re: モジュールの置き場所? 投稿者:ANTAES 投稿日:09/08/20(木) 00:15 <URL>
>もしかして、DLした又は自前モジュールはcommonフ
>ォルダに移動しなければいけないんでしょうか…?
#includeでファイル名のみ指定する場合は
スクリプトと同じフォルダかcommonフォルダになければ
なりません。
他のフォルダに置いている場合は、相対パスまたは絶対パスで
指定する必要があります。
[8325] Re^2: モジュールの置き場所? 投稿者:アビゲイン 投稿日:09/08/20(木) 16:53
迅速なご回答ありがとうございます。
些細な事ですが、助かりました。
また、大した事のないことを質問してしまうかもしれませんが、その時はよろしくお願いします。
[8321] ファイル選択ダイアログとファイルの保存 投稿者:にゃんちゃん 投稿日:09/08/11(火) 11:05
こんにちは。
いま、ゲームの音をカスタマイズするソフトを作っています。それで、ファイルをdialog命令で選んでもらって、それを、ballmove=refstrみたいにしてどんどん変数に記憶させ、
最後にvsave命令で保存しようとしているのですが、何度試してもうまくいきません。
最初は、ファイルを選択したフォルダ内に保存したファイルがあったので、chdir命令を使って、chdir dir_exeとして、カレントディレクトリを戻そうとしたら、
それがまったく効かず考えに考えた挙句に、vsave dir_exe+"gamesound.dat"と改良したのですが、
こんどはそのdir_exeがHSPのフォルダになってしまうことが分かったのですが、
どうせexeにするんだから問題ないかと思い、
exeにして実行させてみたら、HSPのフォルダにも、作業フォルダにも、どこにも保存されなくなってしまいました。
これだとややこしいので、簡単に質問します。
色々なフォルダからファイルを選んだあと、vsaveをすると選んだファイルがあるフォルダに保存されてしまうのはなぜでしょうか?また、対処するにはどうすればよいでしょうか?教えてください。
[8322] Re: ファイル選択ダイアログとファイルの保存 投稿者:inovia 投稿日:09/08/11(火) 17:06 <URL>
dialog 命令を使った後はカレントディレクトリが選択したファイルのあるフォルダに移動します。
#include "hspda.as"
savefile="gamesound.dat"//保存するファイル名
cd=dir_cur//現在のカレントディレクトリを保存
ballmove=""
repeat
dialog "*",16,
if stat=0:break
ballmove+=refstr+"\n"
loop
vsave cd+"\\"+savefile
[8315] sortval命令の不具合 v3.2 投稿者:さかき 投稿日:09/07/29(水) 20:10
HSPv3.2rc1のsortval命令では大きい順に並ばないみたいです。
v3.1のhspda.asとhspda.dllを入れると正常になるようです。
普段使用している自分のフォルダにはdllファイルなどは入ってないので、多分新バージョンでの不具合じゃないかと思うんですが、正常に動く方がいらっしゃったら教えてください。
[8316] Re: sortval命令の不具合 v3.2 投稿者:さかき 投稿日:09/07/29(水) 20:26
不慣れでスミマセン。
以下のようにすると、
どちらでやっても小さい順に並べられます。
// **************************
#include "hspda.as"
ddim SortTest, 5
SortTest(0) = 1.0
SortTest(1) = 3.0
SortTest(2) = 5.0
SortTest(3) = 4.0
SortTest(4) = 2.0
sortval SortTest, 1
repeat 5
mes SortTest(cnt)
loop
stop
// **************************
[8318] Re^2: sortval命令の不具合 v3.2 投稿者:おにたま(管理人) 投稿日:09/07/30(木) 22:42 <URL>
ご報告ありがとうございました。
sortval命令については、リリース版で修正します。
[8314] エディタv3.2について 投稿者:SErr 投稿日:09/07/29(水) 19:54
HSPスクリプトエディタ3.2を使って
▼==============
*a
*b
s="宮"
*c
*d
▲==============
上記プログラムを打って「ラベル一覧(L) [F11]」を表示させると,
*a,*b はリストに表示されますが
s="宮"の行以降の
*c,*d がリストにありません.
エディタ3.1だと *a~*d がちゃんとリストに表示されました.
この現象はエディタのバグでしょうか?
[8317] Re: エディタv3.2について 投稿者:おにたま(管理人) 投稿日:09/07/30(木) 22:42 <URL>
HSP3.2RC1についてのご報告ありがとうございます。
エディタの不具合について、リリース版では修正したいと思います。
[8312] セーブについて 投稿者:tomoki 投稿日:09/07/28(火) 15:38
とても馬鹿な質問なんですが、セーブをする命令文を教えてください。
テキストを使うのでしょうか。答えていただかなくても結構です…。
[8313] Re: セーブについて 投稿者:Kpan 投稿日:09/07/28(火) 20:17 <URL>
どんなデータのセーブなんか分かりませんが、ファイル出力命令には
notesave命令とbsave命令があります。
note〜命令は、付属のサンプルをチェックしてください。
> sample\basic\noteadd.hsp
あとは、「hsp notesave」「hsp bsave」のようなキーワードでググれば
情報が出てくるので、調べてみてください。
[8296] 実行ファイルの作成 投稿者:こう 投稿日:09/07/19(日) 16:01
みなさんこんにちは。
ファイルを一つにまとめて、実行ファイルにするにはどうしたらいいのですか?下記のやり方でしてみました。
@HSP→START.AXの作成
Aツール→PACKFILE編集→全ファイル追加
Bツール→EXEファイル作成
といった流れでしてみたのですが、ライブラリが見つかりませんって言ってエラーがでてしまいます。
ライブラリは一緒にPACKFILE編集で追加してあります。
すみませんがよろしくお願いします。
[8311] Re: 実行ファイルの作成 投稿者:こう 投稿日:09/07/24(金) 17:36
こんにちは。ライブラリなどはパックできないみたいですね。
ありがとうございました。
[8300] Re: 実行ファイルの作成 投稿者:ANTARES 投稿日:09/07/20(月) 01:24 <URL>
>ライブラリは一緒にPACKFILE編集で追加してあります。
ライブラリはpackしても使えません。
dllをexeファイルと同じフォルダに置いてください。
[8298] Re: 実行ファイルの作成 投稿者:Kpan 投稿日:09/07/19(日) 20:40 <URL>
それは昔の旧式です。「全ファイル追加」というのもちょっと
状況的におかしいです。(^^;
たとえば、BMPファイルを埋め込むなら↓のように書いておいて、
エディタの[HSP]→[実行ファイル自動作成]してください。
//
#packopt name "出力名"
#epack "hoge.bmp" ; パックするファイル
picload "hoge.bmp"
mes "あいうえお"
//
[8306] 画像をクリック 投稿者:majemaje 投稿日:09/07/22(水) 10:38
初めまして。majemajeです。
脱出ゲームを作ってみたく、昨日ダウンロードして見よう見まねで
プログラム書いてみてるのですが、まったくの初心者で分からないこと
だらけです。
buttonキーでラベルへジャンプするのは分かったのですが、今表示されている画像のある座標をクリックすると違うラベルへジャンプするようなコマンドはありますか?
一応マニュアルは見ながらやっているのですが、分からなかったです。
よろしくお願い致します。
[8307] Re: 画像をクリック 投稿者:木村 投稿日:09/07/22(水) 14:53
一例として以下のスクリプトを挙げます。button命令を使わずに、
リアルタイムでスクリーンが更新され、クリックの情報等を
取得するスクリプトです。
*変数定義
//クリックした際に反応する領域を最初に定義します
dim 左上,2
dim 右下,2
左上=280,210
右下=359,269
//この場合(280-359,210-269)の長方形の範囲を表します
//ちなみに、この数値を変えれば長方形の形が変わります
goto *メインループ
*メインループ
//HSPでは常にクリック情報を取得できる手段は
//[button]命令等一部しかありません……
//ですのでボタン以外へのクリック情報を取得する際には
//『画面更新』→『情報取得』→『条件分岐』→『時間待ち』→『画面(以下略)……
//の無限ループを作る必要があります
//このラベルの部分ではそれを作っています
//★画面更新
//画面の更新、つまり状況に応じて絵が変わるように絵を描き直す行程です
redraw 0
gosub *描画内容
redraw 1
//★情報取得
//右クリックしているかの情報を取得する行程です
getkey クリック判定,1
//★条件分岐
//赤い領域内でクリックしたかを判断する行程です
if (mousex>=左上.0)&(mousex<=右下.0)&(mousey>=左上.1)&(mousey<=右下.1)&(クリック判定=1) : goto *赤を押す
//[if]命令の条件分岐ですが、かなり複雑なので少し説明を
//[mousex]は現時点でのマウスカーソルのX座標を表す変数
//同じく[mousey]は現時点でのY座標のそれ
//1番目から4番目までの条件は
//『マウスカーソルが設定した赤い領域内にあるか』を確認する意味
//5番目のみ『右クリックがなされたか』の是非を問うています
//[&]は論理演算子、つまり
//『この5つの条件全てを満たした時のみ*赤を押すに進める』という意味になります
//★時間待ち
//Windowsに時間を渡す行程です、ループにこれを入れないと“バク”ります
await 17
goto *メインループ
//全ての工程が終わったらまた最初に戻ります
*描画内容
color 255,255,255
boxf
//絵を描き直すために一旦スクリーンをまっさらにします
//[color]命令で色を白に設定、255,255,255はそれぞれRGBを表しています
//続いて[boxf]命令で全域を塗りつぶします
color 255,0,0
boxf 左上.0,左上.1,右下.0,右下.1
//クリックして欲しい部分を示す赤色を塗ります
//ちなみに、ある画像を代わりに置きたい時は以下のようにどうぞ
;pos 左上.0,左上.1
;picload 画像名,1
color 0,0,0
pos 0,0
mes "("+左上.0+"―"+右下.0+","+左上.1+"―"+右下.1+")"
mes "赤を押した回数="+赤を押した回数+"回"
mes "mousex="+mousex+" : mousey="+mousey
return
*赤を押す
//★赤を押した時の反応となる行程です
赤を押した回数+=1
//変数『赤を押した回数』を1回増やします
dialog "あなたは赤の領域を\n"+赤を押した回数+"回だけ押しました",0
//自分が押した事が分かるように[dialog]命令でダイアログを召喚
goto *メインループ
//最後に、またメインループへと戻ります
[8309] Re^2: 画像をクリック 投稿者:majemaje 投稿日:09/07/22(水) 15:08
> 一例として以下のスクリプトを挙げます。button命令を使わずに、
> リアルタイムでスクリーンが更新され、クリックの情報等を
> 取得するスクリプトです。
>
御丁寧にありがとうございます。
少しづつ噛み砕きながら理解していきます。
また何かお聞きするかもしれません。
よろしくお願い致します。
[8302] if命令のネストについての質問 投稿者:木村 投稿日:09/07/20(月) 16:32
if命令の条件分岐枠(『{』〜『}』までの部分)はgoto命令によるラベルジャンプで解消されるのでしょうか? つまり、
ax=3
*a
if ax=3 {
mes ax
await 2
goto *a
}
このような命令があった場合、ifネストは増えるのでしょうか? また、増えないのだとしたら全てのgoto命令でifネストは断ち切られるのでしょうか?
[8305] Re: if命令のネストについての質問 投稿者:zzp 投稿日:09/07/21(火) 21:45
> if命令の条件分岐枠(『{』〜『}』までの部分)はgoto命令によるラベルジャンプで解消されるのでしょうか? つまり、
>
> ax=3
> *a
> if ax=3 {
> mes ax
> await 2
> goto *a
> }
>
> このような命令があった場合、ifネストは増えるのでしょうか? また、増えないのだとしたら全てのgoto命令でifネストは断ち切られるのでしょうか?
goto命令を使うと、それまでのネストを全てbreakしてジャンプします。
HSPではループのネストの深さが一定以上になるとエラーが出力されるので、命令を実行してエラーが出なければ大丈夫です。
[8308] Re^2: if命令のネストについての質問 投稿者:木村 投稿日:09/07/22(水) 14:57
> goto命令を使うと、それまでのネストを全てbreakしてジャンプします。
> HSPではループのネストの深さが一定以上になるとエラーが出力されるので、命令を実行してエラーが出なければ大丈夫です。
回答ありがとうございます。軽く走らせた段階でバクがでなくても、数百行単位の実際のスクリプトで基礎命令への無理解から来る根本的バクに当たられるのが嫌だったので質問させていただきました。
これで無理にifの条件分岐にgoto命令を入れずに組んでいたスクリプトが少し簡略化しそうです。重ね重ねありがとうございます。
[8297] stick命令以外でのキーのトリガータイプ指定 投稿者:zzp 投稿日:09/07/19(日) 16:44
みなさんこんにちは。
現在私はゲームを作ろうと日夜奮闘しております。
しかし、どうしても自分ひとりでは解決できなかったことがあるので皆さんのお力を少しお借りしたいのです。
stick命令で非トリガータイプキー指定ができるのに対し、
getkey命令では、どうやっても「最初にキーが押された後キーが離れるまでに1回のみキーが入力された」ということが出来ないのです。
どうすればよいのでしょうか?
[8299] Re: stick命令以外でのキーのトリガータイプ指定 投稿者:eller 投稿日:09/07/20(月) 00:23 <URL>
こんばんは、ellerと申します。
> stick命令で非トリガータイプキー指定ができるのに対し、
> getkey命令では、どうやっても「最初にキーが押された後キーが離れるまでに1回のみキーが入力された」ということが出来ないのです。
>
> どうすればよいのでしょうか?
getkey命令では「今押されているかどうか」しかわからないので、変数や条件分岐などを使ったロジックを考える必要があります。
stick命令と同じ動作ならば、「前回チェックしていたときに押されていたかどうか」を変数などで覚えておいて「前回押されていなかった かつ 今回押されている」ときを押された瞬間として処理すれば実現できます。
stickっぽいことをgetkeyで実現するサンプルコードを掲載していますので、よろしければURLも参考にしてください。
[8301] Re^2: stick命令以外でのキーのトリガータイプ指定 投稿者:zzp 投稿日:09/07/20(月) 11:51
> こんばんは、ellerと申します。
>
> > stick命令で非トリガータイプキー指定ができるのに対し、
> > getkey命令では、どうやっても「最初にキーが押された後キーが離れるまでに1回のみキーが入力された」ということが出来ないのです。
> >
> > どうすればよいのでしょうか?
> getkey命令では「今押されているかどうか」しかわからないので、変数や条件分岐などを使ったロジックを考える必要があります。
>
> stick命令と同じ動作ならば、「前回チェックしていたときに押されていたかどうか」を変数などで覚えておいて「前回押されていなかった かつ 今回押されている」ときを押された瞬間として処理すれば実現できます。
> stickっぽいことをgetkeyで実現するサンプルコードを掲載していますので、よろしければURLも参考にしてください。
どうもありがとうございます。
「前回おされていなかった かつ 今回押されている」ときは考慮していたのですが、「前回チェックしていたときにおされていたかどうか」ということは考えていませんでした。
サンプルコードのような記述方法は今まで全く知らなかったので、これを機にそういう記述方法も学んでいきたいと思います。
[8292] exec 投稿者:ルッキンググラス 投稿日:09/07/15(水) 17:47
はじめまして。
abc.txtというテキストファイルをwordで開きたいのですが
exec "Word abc.txt"
end
や
exec "Microsoft Office Word.exe abc.txt"
end
等としましたが動きません。
どうすればよいでしょうか?
又、ノートパッドを開くときは
exec "notepad"
という事なので
exec "Excel"
として、Excel単体で起動させようと思いましたが
起動しなかったので、
exec "Excel",16
とすれば単体で起動しましたが
これを単純に
exec "Word",16
としても単体でWordが開く事はありませんでした。
Wordはプログラム名の記述方法が違うのでしょうか?
そもそもExcelやWordを単体で開くときの書き方自体
合っているのかも謎です。
[8293] Re: exec 投稿者:Kpan 投稿日:09/07/15(水) 20:40 <URL>
Microsoftのページに書いてありますが「winword」です。
http://office.microsoft.com/ja-jp/word/HP101640101041.aspx
読み込むファイルも指定したいなら、Program Filesのフルパス
指定じゃないとだめだと思います。
[8295] Re^2: exec 投稿者:Kpan 投稿日:09/07/15(水) 21:08 <URL>
追記。
COM経由でもOK。
http://hsp.tv/play/pforum.php?mode=pastwch&num=23797
[8288] なんど見直してもわからないので・・・ 投稿者:d-day 投稿日:09/07/05(日) 10:58
こんばんは、HSP初心者のD-dayと申します。
このたびは質問があってまいりました。
おちゃっこさんの本を買って今勉強してるんですが。
3Dモデルデータ表示するだけプログラムをやってるんですが。
どうしてもエラーが出てしまい表示ができません。
#include "e3dhsp3.as"
dim keybuf, 256
screenw = 640 : screenh = 480
screen 0, screenw, screenh, 1
title "test"
E3DEnableDbgFile
E3DInit 0, -1, 0, 16, 0, scid1
pathbuf = dir_cur + "\\g\\da\\da.sig"
E3DSigLoad pathbuf, hsid1
posx1 = 0.0 : posy1 = 0.0 : posz1 = 0.0
E3DsetPos hsid1, posx1, posy1, posz1
camposx = 0.0 :camposy = 800.0 :camposz = -2000.0
E3DSetCameraPos camposx, camposy, camposz
E3DSetCameraTarget posx1, posy1 +800.0, posz1, 0.0, 1.0, 0.0
proj_near = 1000.0 :proj_far = 30000.0 : proj_fov = 60.0
E3DSetprojection proj_near, proj_far, proj_fov
lightdirx1 = 0.0 : lightdiry1 = 0.0 : lightdirz1 = 1.0
lightr1 = 255 : lightg1 = 255 : lightb1 = 255
E3DCreateLight lid1
E3DSetDirectionalLight lid1,lightdirx1,lightdiry1,lightdirz1,lightr1,lightg1,lightb1
*main
E3DGetKeyboardCnt keybuf
if keybuf( VK_ESCAPE ) != 0 :goto *bye
E3DBeginScene scid1
E3DChkInView scid1, hsid1
E3DRender scid1, hsid1, 0, 0, 0
E3DRender scid1, hsid1, 1, 0, 0, 0, 0, 1
E3DEndScene
E3DPresent scid1
E3DWaitbyFPS 60, chkfps1
await 0
goto *main
*bye
E3DBye
end
このような感じで書いてみたのですが、sigファイルはデスクトップのgファイルの中のdaファイルの中にda.sigを入れてあります。
エラー内容は外部DLLの呼び出しに失敗しました。と言われます。
打ち間違えはないと思うんですけどどこかおかしい所があったら教えてもらますか?
[8289] Re: なんど見直してもわからないので・・・ 投稿者:D-n 投稿日:09/07/05(日) 15:21
スクリプトを試してみましたが問題なく動きました。
なのでDLLが古かったり、sigファイルの作り方もチェック。
これでだめならおちゃっこさんに聞くといいです。
[8290] Re^2: なんど見直してもわからないので・・・ 投稿者:d-day 投稿日:09/07/05(日) 20:08
返信ありがとうございます。もう一度最初から試して見ます。
[8287] HPC2009 投稿者:xxxz 投稿日:09/07/03(金) 22:31
今年もそろそろ始まるかな?
http://hsp.tv/contest2009/
どんな作品がくるか楽しみですねぇ〜。
3Dゲームがよりいっそう増えてくるのかなぁ〜?
[8284] API "GetMenuItemInfo"の使用方法 投稿者:suginoki 投稿日:09/06/28(日) 12:03
はじめまして。
GetMenuItemInfoを使いたいのですが、構造体へのアクセスがうまくいきません。
具体的には、MENUITEMINFO 構造体として"mii"をsdim命令で13個確保し、GetMenuItemInfoの第四パラメータに指定したのですが、デバッグウインドウを確認しても情報を取得した形跡がありません。
以下問題部分のソースです。
sdim mii,1024,13
GetMenuItemInfo hMenu.1,1,0,mii
if mii.3 = $8 {
mii.3 = $0
SetMenuItemInfo hMenu.1,1,0,mii
}
よろしくお願いします
[8285] Re: API 投稿者:Kpan 投稿日:09/06/28(日) 16:15 <URL>
「MENUITEMINFO HSP」とかでググってください。
まんま実例がヒットします。
[8279] HSP 3Dモデルの表示されない 投稿者:yun 投稿日:09/06/22(月) 13:46
HSP 3Dモデルの表示されない
これで3Dモデル表示されるはずなのですが
自分で作った3Dモデルを表示できません
メタセコ mqoファイルに
↓
RokDeBoneMotionKit_ver23でsigファイルに
↓
表示されない
どうしたら表示されますか?
//3Dモデルを表示するだけのサンプルです。(最小構成)
;e3dhsp.dll test script
#include "e3dhsp3.as"
#module
#deffunc waitbyfps int p1, var fps
E3DWaitbyFPS@ p1, fps
await 0
return
#global
dim keybuf, 256
;file のpath 用のバッファーの作成
pathlen = 2048
sdim mediadir, pathlen
mediadir = dir_cur + "\\Media"
sdim pathbuf, pathlen, 2
screenw = 640 : screenh = 480
screen 0, screenw, screenh, 1
title "Easy3D for HSP3 sample"
;初期化
E3DEnableDbgFile
E3DInit 0, -1, 0, 16, 0, scid1
;カメラの初期化
camposx = 0.0 : camposy = 800.0 : camposz = -2000.0
E3DSetCameraPos camposx, camposy, camposz
camdegxz = 180.0 : camdegy = 0.0
E3DSetCameraDeg camdegxz, camdegy
;projectionの変更をしたいときは、以下の2行を有効にしてください。
proj_near = 100.0 : proj_far = 30000.0 : proj_fov = 60.0
E3DSetProjection proj_near, proj_far, proj_fov
//猫データ読み込み
pathbuf.0 = mediadir + "\\arm6_bone.sig"
E3DSigLoad pathbuf.0, hsid1
E3DSetPos hsid1, 0.0, 0.0, 0.0
//ライトの作成
lightdirx1 = 0.0
lightdiry1 = 0.0
lightdirz1 = 1.0
lightr1 = 255
lightg1 = 255
lightb1 = 255
E3DCreateLight lid1
E3DSetDirectionalLight lid1, lightdirx1, lightdiry1, lightdirz1, lightr1, lightg1, lightb1
chkfps1 = 0
*main
; keybuf変数は、メインループの外で、dim keybuf, 256 として、確保しておいてください。
E3DGetKeyboardState keybuf
if keybuf.VK_ESCAPE = 1 : goto *bye ; [ESC]で終了
E3DBeginScene scid1
E3DChkInView scid1, hsid1
;不透明部分の描画をする
E3DRender scid1, hsid1, 0, 0, 0
;半透明部分の描画をする
E3DRender scid1, hsid1, 1, 0, 0, 0, 0, 1
E3DEndScene
E3DPresent scid1
waitbyfps 60, chkfps1
goto *main
*bye
E3DBye
end
サンプルはこれで表示されるのですが
自分で作ったのだと
#Error 38 inline 31(hsptmp)
-->外部DLLの呼び出しに失敗しました
と出ます。
[8280] Re: HSP 3Dモデルの表示されない 投稿者:GENKI 投稿日:09/06/24(水) 23:14
> RokDeBoneMotionKit_ver23でsigファイルに
RokDEBoneのバージョンがものすごく古いようです。
もしかしたらその辺が原因かもしれませんので、こちらでDLできる最新のRDBを使ってみてください。
http://www5d.biglobe.ne.jp/~ochikko/rokdebone.htm
また最新のRDBを使う場合、Easy3Dプラグインも最新のバージョンにする必要があります。
こちらから入手ください。
http://www5d.biglobe.ne.jp/~ochikko/e3dhsp.htm
ちなみに、プラグインへの質問はそれぞれの作者に問い合わせたほうが回答が得やすいですよ。
Easy3DとRokDeBone2の開発元はこちらです。
おちゃっこLAB:http://www5d.biglobe.ne.jp/~ochikko/
よかったらこちらもご利用ください。
Easy3Dサンプルwiki:http://easy3d.wikiwiki.jp/
[8281] Re^2: HSP 3Dモデルの表示されない 投稿者:D-n 投稿日:09/06/25(木) 12:41
RokDEBone2とEasy3Dのバージョンが古いのが原因かもしれ
ません。そのほかとして、メタセコで作ったテクスチャファイル等が
無かったりするとエラーになります。
[8262] listboxについて質問です 投稿者:ZZ 投稿日:09/05/31(日) 14:55
初めまして。hspを始めて、今日で14日目のZZといいます。
早速ですが、2つのlistboxを作って、
a「1つ目のリストボックスの項目を選択すると、2つ目のリストボ
ックスに表示される」 という方法を考えています。
そこで、aのやり方は分かったのですが、「同じ項目を2回選択さ
せない」方法が分からなくて、困っています。
まだhspのことをよく分かっていない者なので、できるだけ詳しい説
明で教えていただけると助かります。お手数ですが、よろしくお願い
します。
listboxtext="北海道\n青森\n宮城"
listbox kenmei,100,listboxtext
listboxtext2=""
listbox ken,100,listboxtext2
pos 230,440
button "選択",*sentaku
stop
*sentaku
notesel listboxtext
noteget s,kenmei
listboxtext2=listboxtext2+s+"\n"
objprm 1,listboxtext2
stop
[8271] Re: listboxについて質問です 投稿者:矢野 投稿日:09/06/04(木) 22:03
ZZさんへ、
返事がないので、スクリプトを貼っておきます。
検索は、次のように repeat cnt loop
を使用し、1行ずつ取り出して比較してみました。
同じ都道府県の場合は、dialog 命令で既に選択済みであることを
伝えるスタイルにしました。
listboxtext="北海道\n青森\n宮城"
listbox kenmei,100,listboxtext
listboxtext2=""
listbox ken,100,listboxtext2
pos 230,440
button "選択",*sentaku
stop
*sentaku
notesel listboxtext
noteget s,kenmei
notesel listboxtext2
repeat notemax
noteget t,cnt
if s=t:goto *baibai
loop
listboxtext2=listboxtext2+s+"\n"
objprm 1,listboxtext2
stop
*baibai
dialog "その都道府県は既に選択しています。",0
if stat=1:stop
[8274] ありがとうございます 投稿者:ZZ 投稿日:09/06/06(土) 21:31
矢野さん、スクリプトまで載せていただいて
本当にありがとうございました。
実は、しばらく考えても分からず、その上
この掲示板を開こうにも、開けず困っていました。
listboxについて、もう一つ分からないことがあるのですが、
もう少し考えて、それでも自己解決できなければ、
また質問させていただきます。
その際には、またご指導をよろしくお願いします。
本当にありがとうございました。
[8276] Re: ありがとうございます 投稿者:矢野 投稿日:09/06/07(日) 00:49
ZZさんにお伝えします。
私が正解を予告しておきながら回答を出すのが遅かったせいかもしれませんが、
HSPラウンジにTAKEというペンネームで全く同じ内容の質問を投稿していますね。
これはマルチポストといって、してはいけない行為とされています。
もちろん、ぶまさんは私とは比べものにならない技術と知識の持ち主ですので、
すぐに適切な回答が得られると思いますが、一度掲示した質問は
何らかの仕舞いをした上で、また、そのことをことわったうえで
他の掲示板に移るようにしましょう。
[8277] Re^2: ありがとうございます 投稿者:ZZ 投稿日:09/06/07(日) 10:08
大変申し訳ありませんでした。
悪意があって行ったわけではないのですが、このページが
ドメイン切れで開くことができずにいましたので、
他のサイトに行って、質問をしてしまったのです。
親切にご指導していただいた矢野さん・ぷまさんには、大変失礼なことをしてしまいました。
普段掲示板等利用したことがないため、「マルチポスト」という行為がマナー違反になるということも知りませんでした。
今後、マナーの勉強もしっかりしたいと思います。
HSPのことのみでなく、マナーのことについても教えていただき、
本当にありがとうございました。
[8275] Re: ありがとうございます 投稿者:矢野 投稿日:09/06/06(土) 21:55
どういたしまして、私もお役に立てて嬉しいです。
今回は、たまたまひらめいたのでお答えしたのですが、
それほど技術がありませんので、次回もお答えできるかどうか分かりませんが、
質問があれば、解決に向けて取り組んでみたいと思いますので、
よろしくお願いします。
[8263] Re: listboxについて質問です 投稿者:矢野 投稿日:09/06/01(月) 23:46
選択した都道府県名と既に選択している都道府県名を比較して
別名ならリストボックスに書き込み、同じなら書き込まない
ようにすればできましたよ。
チャレンジしてみてください。分からないときは再度質問して
ください。
[8264] hsp.tv 投稿者:Β 投稿日:09/06/03(水) 18:45
hsp.tvに接続できませんが・・
ドメイン更新切れ?みたいなかんじで・・
[8267] Re: hsp.tv 投稿者:Kpan 投稿日:09/06/03(水) 21:00 <URL>
前にもあったけど、ひとまずサーバー本体のURLアドレス。
> hsptv.sakura.ne.jp
[8269] Re^2: hsp.tv 投稿者:ロケットナマコ 投稿日:09/06/03(水) 21:44
あ。本体は存在してるんだね。あーよかった。
うすあじさんのブログとか見に行って
「この人知り合いなんだよなあ。
この人の文章はいつもどうりって感じだし、
特に重大な問題は発生してないみたいだけど、、、」
とか思ってました。
ドメイン更新忘れ→更新したけど反映に時間がかかるって感じなのかな?
ふー一安心。
[8273] Re^3: hsp.tv 投稿者:ロケットナマコ 投稿日:09/06/05(金) 07:22
うすあじさんのブログで「おにたまさんが更新手続き中です。
もうちょっと待ってね」と言うアナウンスがありました。
あーよかった。
実はずーっとドキドキハラハラしてました。
ps. hsp.tvってプレミアムネームと言われる特に高いドメインだそうですね。43万3485円だとか。ヒー!
外貨を獲得する為に公開していると聞いた事はありましたが、ここまで高いとは。私なんか\980の.comドメインなのに、、、
一ユーザーとしては「無理のないやり方で結構でございますよ!」と言いたくなります
[8265] Re: hsp.tv 投稿者:rom1 投稿日:09/06/03(水) 19:51
> hsp.tvに接続できませんが・・
> ドメイン更新切れ?みたいなかんじで・・
見れませんね。 genoウィルスじゃなきゃ良いですが。。
[8266] Re^2: hsp.tv 投稿者:g 投稿日:09/06/03(水) 20:47
あのオバハンだれなんですか?w
他のドメイン切れのときも出現するんでイライラしてしまいます。(あの人のせいじゃないですが)
[8261] オブジェクトの透過 投稿者:ヒロ 投稿日:09/05/28(木) 11:51
ウインドウ全体を透過させずにリストボックスやボタン等のオブジェ
クトのみを透過表示させる方法はありますか?
ネットで検索してもウィンドウの透過についてばかりで見つからな
かったので。
[8259] これ書くとエラーが出る 投稿者:D.J.Sin 投稿日:09/05/25(月) 19:38
数取機のプログラムをこのように書いたらエラーが出ました。
どうやら4行目あたりにバグがあるようです。どう改良すればいいですか?(HSP3.1)
width 320,240
dim count
print count
button gosub + , *plus
button gosub - , *minus
*plus
dim count=+1
*minus
dim count=-1
[8260] Re: これ書くとエラーが出る 投稿者:Kpan 投稿日:09/05/25(月) 20:25 <URL>
改良というか、文法の間違いがイロイロと・・・。(^^;
付属する↓ドキュメントはチェックしましたか?
(該当するのはStep5〜)
> 初心者のためのHSP入門 (beginner/start.htm)
[8255] ウエイト 投稿者:流浪 投稿日:09/05/22(金) 22:21
毎度すみません。
現在、時間を使ったソフトを考えている最中です。
HSPにはシステムから時間の情報を取得する手段があるのですが、
コレにウエイトを掛ける手段に悩んでいます。
ある条件と一致したら、それ以降は指定したウエイトで時間を進行
させたいのです。
例えば、
tW(Time Weight)=0.5 なら、実時間2秒で1秒の時間進行、
tW(Time Weight)=2 なら実時間1秒で2秒の時間進行
です。
実時間の経過と共に過去に遡るような”−ウエイト”は考えて
いません。
これを実現するテクニックはあるのでしょうか?
よろしくお願いします。
[8257] Re: ウエイト 投稿者:20090523 投稿日:09/05/23(土) 17:34
これで何とかして下さい。
#uselib "user32.dll"
#func SetTimer "SetTimer" sptr,sptr,sptr,sptr
ddim tW,1
oncmd gosub *Count,$113
tW = 2
tW = 0.5
SetTimer hwnd,1000,int(1000.0*tW),0
stop
*Count
mes ""+gettime(6)+" "+gettime(7)
return
[8258] Re^2: ウエイト 投稿者:流浪 投稿日:09/05/24(日) 19:37
20090523さんへ
さっそくありがとうございます。
なんとなく難題のような感じがしていたのですが、やっぱり・・・
きっかけを頂いたんで、自分でもいろいろと考えて試してみます。
ありがとうございました。
[8256] 動画を中断させない手法? 投稿者:だるま 投稿日:09/05/23(土) 08:34
素人な質問ですいませんがどなたか教えてください。
動画を表示させながら(例えば画像を回転)同時に定期的に
USBにアクセスするソフトを作成していますが、動画の動きを
中断(USBにアクセスするフローの間は動画の動きが瞬断する)
させずに、なめらかに動画を表示し続ける手法はあるのでしょうか?
別個のソフトとしてマルチタスクで動かすのは当然問題ないの
ですが、ひとつのプログラムの中で動画を滑らかに動かしながら
一方で定期的に仕事をさせたいのです。
プログラムの原理からは無理なんでしょうか??
[8254] 音量の取得 投稿者:山富 投稿日:09/05/14(木) 18:59
バーグラフの音量計(VUメータ)を表示したいのですが瞬時値
又は適当な時間間隔内の平均値等でも良いのですが取得する方法をどなたか御教示頂ければ嬉しいのですが。
[8247] input命令での処理の方法 投稿者:流浪 投稿日:09/04/30(木) 23:58
困っています、ご指南を頂ければと思っています。
a=0.0
*IBT
mes "aを入力して下さい。(小数点も入力)"
input a
id=stat : objsel id
if a>0 : goto *toAKC
wait100
goto *IBT
stop
*toAKC
button gosub "OK", *AKC
stop
*AKC
mes "座標を選択して下さい。"
combox b,,"X座標\nY座標\nZ座標"
@変数aには0より大きい実数を入力させたい。
A変数aに0より大きい実数が入力されるまで待機する。
B変数aが0より大きい実数の場合、OKボタンで入力数値を確定する。C次の処理に移る。
上記@〜Cの処理をさせたいのですが、上手くできません。
”5.0”と入力しても、代入された数値を表示させてみると、
”50.000000”となっている場合があります。またボックス内の表示も”.50.000000”となっていたりしています。
”wait”で設定するパラメーターである程度解決できるとは思うのですが、入力したい数値とボックス内の表示と代入された値を確実に一致させたいのですが、どうやってもできません。
理想としては、
@入力ボックス内の表示を空白にして入力を待つ。
A0より大きい実数が入力されるまで待機する。
B変数aが0より大きい実数の場合、OKボタンで入力数値を確定する。
C次の処理に移る。
です。
何か方法はないものでしょうか?
よろしくお願いします。
[8248] Re: input命令での処理の方法 投稿者:20090501 投稿日:09/05/01(金) 15:44
a=0.0
*IBT
mes "aを入力して下さい。(小数点も入力)"
input a
id=stat : objsel id
objprm 0,""
repeat
if a>0 : goto *toAKC
await
loop
/*条件を満たせば無限ループから出る処理*/
;wait 100
goto *IBT
stop
*toAKC
button gosub "OK", *AKC
stop
*AKC
mes "座標を選択して下さい。"
combox b,,"X座標\nY座標\nZ座標"
mes a
/*
;ご参考
onkey gosub *Mesg
ddim a,1
input a
objprm stat,""
stop
*Mesg
if (wparam == 13) and (a > 0) {dialog a} ;13 = Enter(CR)
return
*/
[8249] Re^2: input命令での処理の方法 投稿者:流浪 投稿日:09/05/01(金) 23:02
20090501 さんへ
ありがとうございました。
早速実行してみましたが、書き換えて頂いたスプリクトには大変満足
しています。
参考に頂いた方は、思い立って勉強を始めてまだ2週間ほど、入門書
片手の今の自分には訳が解かりませんが、これから役に立つと思って
います。
やってたらこうなっちゃった→まあいいや
ではなく、狙った処理を実現させるのがプログラミングだと理解して
いますので、自分でも勉強をして行くつもりですが、困った時は今回
のようにアドバイスを頂ければ幸いです。
ありがとうございました。
PS.
手動改行モードなのに改行を忘れてしまっていた部分があり、
見づらいと思われたと感じています。
すみませんでした。
> a=0.0
> *IBT
> mes "aを入力して下さい。(小数点も入力)"
> input a
> id=stat : objsel id
>
> objprm 0,""
> repeat
> if a>0 : goto *toAKC
> await
> loop
> /*条件を満たせば無限ループから出る処理*/
> ;wait 100
> goto *IBT
> stop
> *toAKC
> button gosub "OK", *AKC
> stop
> *AKC
> mes "座標を選択して下さい。"
> combox b,,"X座標\nY座標\nZ座標"
> mes a
>
> /*
> ;ご参考
> onkey gosub *Mesg
>
> ddim a,1
> input a
> objprm stat,""
>
> stop
>
> *Mesg
> if (wparam == 13) and (a > 0) {dialog a} ;13 = Enter(CR)
> return
> */
[8251] Re^3: input命令での処理の方法 投稿者:A.C 投稿日:09/05/02(土) 02:32
横から失礼、こんにちは、A.Cです。
No.8248はできるだけオリジナルのスクリプトを残して
改良されたと思うのですが
少し気になった部分がありますので報告。
> repeat
> if a>0 : goto *toAKC
> await
> loop
この部分、repeat〜loop内をgotoで抜けると
ネストレベルが上がり続けるのでbreakで一旦ループを抜けてから
gotoをされたほうが良いと思います。
つまりこういうことですね
repeat
if a>0 : break
await
loop
goto *toAKC
ネストレベルを無視し続けたらどうなるかは下を実行させるとわかります。
*a
repeat
goto *a
await
loop
[8252] Re^4: input命令での処理の方法 投稿者:流浪 投稿日:09/05/02(土) 19:59
A.Cさんへ
スプリクトの流れでの、”入り”と”出”を明確にすると言う事で
いいのでしょうか。訳の分からない出入りを繰り返さずに、出る所
で出る、そうでなければ”はい!ココまで!”と言って出る。
確かに、スプリクトの流れを後で追い易くなりますし、今後長い
スプリクトが組めるようになった時に、エラーを起こさないように
組める事にもなると思います。
20090501さんのご意見ともども参考にさせていただきます。
ありがとうございました。
[8243] 平均値 算出 投稿者:黒 投稿日:09/04/25(土) 13:46
HSP3.1の入門本を参考にしながら読み進めていたのですが、
あるページで、「次のスクリプトを入力してみよう」と
書かれていたので早速以下のスクリプトを入力し、
実行してみました。
hen(0)=30
hen(1)=90
hen(2)=65
hen(3)=45
hen(4)=25
hen(5)=20
hen(6)=10
a=0
total=0
*kuri
mes "No."+a+"="+hen(a)
total=total+hen(a)
a=a+1
if a<7 : goto *kuri
mes "合計="+total
heikin=total1/7
mes "平均="+heikin
stop
すると、合計は算出されるんですが、平均だけが何故か0のまま何です。
入門本では 平均=40 と表示されたのに対し、僕が全く同じスクリプ
トで実行した場合は 平均=0 。
何度も見直し、実行してみているんですけど、一度も平均が0から40に変化しません。
本に登載されているスクリプト自体が間違っているのでしょうか。
ご教示の程宜しくお願い致します。
[8244] Re: 平均値 算出 投稿者:20090425 投稿日:09/04/25(土) 17:22
heikin=total1/7
heikin=total/7
[8245] Re^2: 平均値 算出 投稿者:黒 投稿日:09/04/25(土) 18:03
> heikin=total1/7
> heikin=total/7
ありがとうございます。
平均が表示されました。
ご指摘して頂いた箇所を何となく本で確認してみたらtotal1/7では無く、total/7でした(笑)
完全に自分の見落としでしたので、これ以降は更に気を引き締めて
プログラミングに取り組んでいきたいと思います。
お答えいただき本当にありがとうございました。
[8238] HSP3.2β2について 投稿者:ぼーぼー 投稿日:09/04/19(日) 02:01
報告です。
scree命令で、パレットモードを指定すると、システムエラーになってしまいます。
[8239] Re: HSP3.2β2について 投稿者:Kpan 投稿日:09/04/19(日) 10:02 <URL>
ウィンドウIDが0以外の時に、ということでいいんですかね?
自分の場合は下のような感じ。
//
;問題なし
screen 0, 200, 200, 1
//
//
;システムエラー(Error 1)
screen 1, 200, 200, 1
//
[8240] Re^2: HSP3.2β2について 投稿者:ぼーぼー 投稿日:09/04/19(日) 22:13
> ウィンドウIDが0以外の時に、ということでいいんですかね?
はい。そうです。
というか、ウィンドウID0のときは大丈夫だとは気が付いていませんでした^^;
[8242] Re^3: HSP3.2β2について 投稿者:Kpan 投稿日:09/04/23(木) 20:51 <URL>
ソースコード上(OpenHSP)での話ですが修正が行われたようです。
[8233] ランキングのソート 投稿者:にゃんちゃん 投稿日:09/04/03(金) 17:06
こんにちは。
hspda.dllを使って、ランキングをソートするプログラムを作っているのですが、どうしてもうまくいきません。
動きとしては、テキストファイルを読み込み、スコアの情報を書いて閉じるという流れです。
テキストには、
準位 名前-スコア
という形式で書いてあり、そこに自分のスコアを追加します。
ただ、うまく準位があわないのです。
たとえば、1位が100で、2位が50で、入れようとしてるのが75だったとき、うまく2位にあったデータを3位にもっていき、2位に新しいデータを入れるという動きが分かりません。
またそのときにデータを何らかの形でソートして判断しないといけないと思うのですが、それも分かりません。
もしかしたら、名前とスコアは別のファイルに書かないといけないのかなあ?
分かる方、教えてください。分かりにくくてすいません。
ちなみに、そのテキストファイルをそのあとにどうするかというと、FTPの自分のサーバにアップロードしてPHPを使ってランキングにします。PHP刃ファイルの内容を表示するだけなので、数値だけをだぁぁっと書くわけにもいかないんです。こんなわがままは無理でしょうか?
[8234] Re: ランキングのソート 投稿者:A.C 投稿日:09/04/09(木) 19:23
にゃんちゃんさんこんにちは、A.Cです。
もう1週間経つので解決しているかもしれませんが
簡単な方法としては、内容とスコアを別の変数に入れるということですかねー。
ちょっと長いですけどこんな感じでどうでしょう。
#include "hspda.as"
sdim text:sdim list:sdim tmp:dim score
text="1位 太郎-100\n2位 さくら-50\n3位 修造-12\n4位 鎌田-9\n"
mes "元のスコア\n"+text+"\n"
addScore=75
addName="おにおん"
mes "追加する情報\n名前\t"+addName+"\nスコア\t"+addScore+"\n\n"
;↓変数textから順位を取り出す
i=0
repeat strlen(text)
if i>=strlen(text):break
;↓まずtextから1行ずつ順位部分のみ省いて読み取る
;(全角で区切るとめんどくさいので「順位 名前-スコア」という形式として考える)
getstr tmp,text,i,' ':i+=strsize;(このtmpは使わない)
getstr list(cnt),text,i:i+=strsize
;↓読み取った内容から"-"までの文字数を取得し(このtmpは使わない)
getstr tmp,list(cnt),0,'-'
;↓スコアを取得する
getstr tmp,list(cnt),strsize
;↓それを数値型に変換して変数scoreに代入
score(cnt)=int(tmp)
loop
;↓配列の最後に今回追加するスコアを代入
score(length(score))=addScore
;↓配列変数を並び替え(大きい順)
sortval score,1
;↓変数textに結果を入れなおす
text=""
repeat length(score)
;↓ソート前の配列番号を取得
sortget i,cnt
;↓もし番号が最後(=今回追加したデータ)ならデータを書き加え、
if i=length(score)-1{
text+=""+(cnt+1)+"位 "+addName+"-"+addScore+"\n"
}else{
;それ以外なら一時的に代入した変数listの内容を書き込む
text+=""+(cnt+1)+"位 "+list(i)+"\n"
}
loop
mes "並び替え後のスコア\n"+text
stop
ちなみに全角スペースで区切るとgetstrの性質上めんどくさいので
「順位 名前-スコア」と、半角スペースに置きなおしています
[8235] Re^2: ランキングのソート 投稿者:にゃんちゃん 投稿日:09/04/10(金) 20:54
こんにちは。
わざわざこんな長いスクリプトサンプルまで書いていただいてありがとうございました。
昨日だったか、2次元配列に名前とスコアをいれてソートすればいいじゃんって言われたのですが、こちらのほうが分かりやすいので使わせていただきます。本当にありがとうございました。これがうまくいけば、FTPでアップロードしてあとはPHPがやってくれそうです。