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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0504
キルアス先日に続き・・ リアルタイム処理&移動システム38未解決


キルアス

リンク

2008/5/4(Sun) 22:02:09|NO.15638

先日は皆様にお世話になりました。

聞きっぱなしでは良くないと思うのですが、また分からない事が出てきたので
図々しいですが是非ともヒントの欠片だけでも良いので教えてください。

まず、ミニゲームを作ったのですが


sit=mir/3 if mir<10:sit=20 *renda if sit>100:goto *ok if sit<0:goto *muri mes""+sit+"/100" button "連打",*zou button "リタイヤ",*muri gosub *gen stop *gen repeat wait 2 sit-1.7 loop *zou wait 3 sit+3 goto *renda stop *ok cls mes "くりあ" *muri cls mes "残念"

実行すれば分かると思うのですが、
「連打」をクリックしないと
数値が減っているか増えているか分からないのです。
リアルタイムに、減っているか増えているかを見れるようにしたいのです。

二つ目は
<ple>
dim basyo,30
basyo="松前","盛岡","秋田","仙台","会津","水戸","金沢","宇都宮","江戸","川越","松本","甲府","名古屋","伊勢","京都","大阪","姫路","赤穂","徳島","土佐","出雲","広島","萩","小倉","博多","佐賀","長崎","熊本","鹿児島"
cls 1
pos 0,0:COLOR 255,0,255

repeat 28
button basyo.cnt,*gogo
loop
stop

*gogo
basyo=basyo

</ple>

これも実行すれば分かるのですが、
土佐から下が画面からはみ出してしまい、
しかも例えば江戸をクリックしても松前のまま・・・

repeatからloopの間で、画面に収まるように改行して、
なおかつ甲府を押せば甲府と出るように、
したいのです。

いろいろ弄ったのですが、私の脳みそではこれ以上どうすれば良いのか分かりません。

誰か、よろしければ教えてください。



この記事に返信する


As

リンク

2008/5/4(Sun) 22:43:33|NO.15643

このような具合でしょうか?
提示していただいたスクリプトに幾つか注意してほしいところがあるのですが、
repeat〜loop区間でのループ中にgosub以外のラベルジャンプを行うと、ネストが増えます。

*@ repeat goto *@b loop
ネストが深すぎると、予期せぬエラーが発生してしまう場合があるので注意が必要です。
同様に gosubでジャンプした場合は必ずreturnで戻る必要があります。

*@ gosub *@b
このようなエラーを発生しないためにも注意が必要です。


以下は以上に記述したエラーを除いた参考までにのスクリプトです。

sit=20.0 pos 0,0 : mes""+sit+"/100" button "連打",*zou button "リタイヤ",*muri stop *zou if sit>100:goto *ok if sit<0:goto *muri sit+3 *@ color 255,255,255 boxf 0,0,ginfo_winx, 21 color pos 0,0 : mes""+sit+"/100" await 100 sit-1.7 goto *@b *ok cls mes "くりあ" stop *muri cls mes "残念" stop



Kpan

リンク

2008/5/4(Sun) 23:10:19|NO.15647

>土佐から下が画面からはみ出してしまい
書いてあるとおりとちゃんと動いてます。(^^;
pos命令でボタンの表示位置を指定しましょう。


>しかも例えば江戸をクリックしても松前のまま・・・
「basyo」、つまりは「basyo.0」は当然松前です。
「basyo.1」が盛岡、「basyo.2」が秋田、というのは理解してますか?


repeat 10 : button "", *jump : loop stop *jump // 押したボタンのオブジェクトIDが返る mes stat


>dim basyo,30
エラーは出ませんが間違ってますよー。これでは数値型配列変数の確保。
文字列型配列変数は↓

sdim basyo,,30



キルアス

リンク

2008/5/5(Mon) 10:37:31|NO.15658

返信有り難う御座います。

もう一つ質問したいのですが、例えば土佐までボタンが出来たら
自動的に出雲を横の行に改行する、と言うことはできますか?

何卒、教えてください。



KENTA

リンク

2008/5/5(Mon) 14:42:12|NO.15661

>自動的に出雲を横の行に改行する
cntで作成したボタンの数を確認できるので、それを利用して改行できます。

basyo="松前","盛岡","秋田","仙台","会津","水戸","金沢","宇都宮","江戸","川越","松本","甲府","名古屋","伊勢","京都","大阪","姫路","赤穂","徳島","土佐","出雲","広島","萩","小倉","博多","佐賀","長崎","熊本","鹿児島" //ボタンの標準のサイズは64,24 objsize 64,24 repeat length(basyo) //↓ボタンを19個(土佐まで)作成したところで、改行する pos cnt/20*64,cnt\20*24 button gosub basyo.cnt,*jump loop stop *jump title ""+stat+"番目のボタン" return



キルアス

リンク

2008/5/5(Mon) 15:36:11|NO.15662

有り難う御座います。

明日まで開放して置きます。



キルアス

リンク

2008/5/5(Mon) 16:41:25|NO.15663

また馬鹿な事に分からない事が・・


dim basyo,,30 basyo="松前","盛岡","秋田","仙台","会津","水戸","金沢","宇都宮","江戸","川越","松本","甲府","名古屋","伊勢","京都","大阪","姫路","赤穂","徳島","土佐","出雲","広島","萩","小倉","博多","佐賀","長崎","熊本","鹿児島" repeat 30 : button basyo, *jump : loop stop *jump // 押したボタンのオブジェクトIDが返る mes basyo

Kpan様が作って下さったスクリプトを
上のように変に弄くってしまい、ますます分からなくなったのですが、

例えば「秋田」をクリックしたら、オブジェクトIDが返る所を、
秋田と表示させるようにしたいのです。


素人が変に弄る者ではない、と分かったのですが、
できる限り誰かお答えくださいますよう・・



ANTARES

リンク

2008/5/5(Mon) 17:18:41|NO.15665

>例えば「秋田」をクリックしたら、オブジェクトIDが返る所を、
>秋田と表示させるようにしたいのです。
 そこまでわかっているのなら、NO.15647を読み直せばわかるはずですが。
オブジェクトIDを配列の添え字にすればいいだけです。

これでもわからなければ、docs\hspprog.htmの
「2.スクリプト記述の基本」の「配列変数」を読みましょう。
ただし、連想配列は今のところ、サポートされていません。



キルアス

リンク

2008/5/5(Mon) 20:53:51|NO.15670

なるほど・・
ご教授有り難う御座います。


基本形は完成しました。
ここまで来ると私の作品ではなく皆さんの作品かもしれません><

ただし、最後の問題があります。

http://www6.uploader.jp/dl/1450naga/1450naga_uljp00152.zip.html
上は、基本形をうpした場所です

起動して、初期設定を終えて、場所を確認してください。
江戸になっているはずです。
そこで一度城にいって、戻ってみるとなぜか盛岡になっています。

どこかに移動して、どの施設から出ても盛岡になってしまうのです。

何が原因なのでしょうか。


これが最後だと思うので、何卒お教えください。



As

リンク

2008/5/5(Mon) 21:05:39|NO.15671

コメントを読んでください


basyo="松前","盛岡","秋田","仙台","会津","水戸","金沢","宇都宮","江戸","川越","松本","甲府","名古屋 ","伊勢","京都","大阪","姫路","赤穂","徳島","土佐","出雲","広島","萩","小倉","博多","佐賀","長崎"," 熊本","鹿児島" objsize 100,21 count=0 //basyo配列変数の位置を表す変数 px=0 //次の段落へ移行するための変数 basyolen=length(basyo) //ボタンの数 repeat repeat ginfo_winy/21 //縦に表示可能なボタンの数 if basyolen<=count:break //ボタンの数より多ければbreak pos 100*px, 21*cnt :button basyo.count,*gogo //ボタンの描画 count+ loop px+ if basyolen<=count:break //ボタンの数より多ければbreak loop stop *gogo thisbasyo=basyo.stat //ボタンに割り当てられている配列変数を値を返す dialog ""+thisbasyo //ダイアログ



ANTARES

リンク

2008/5/5(Mon) 21:58:35|NO.15674

 すぐに目についた問題が2つあります。

1 statの使い方
 statはいろんな命令によって値が変わるシステム変数です。
城へ行った場合、*siroにあるbutton命令でオブジェクトIDがstatに代入されます。
したがって、ある時点のstatを後で参照したい場合は変数にコピーして、
コピーの方を使うようにする必要があります。

2 変数と配列
 「basyo=basyo.8」は「basyo.0=basyo.8」と同じです。
つまり、basyo.0の「松前」が書き換えられてしまいます。
現在の場所を記憶する変数は別の名前にしましょう。
そうすれば、224行でbasyo配列を定義し直すようなことは
必要ありません。



キルアス

リンク

2008/5/6(Tue) 19:57:12|NO.15690

自力で直しました><

移動システムを最初から作り直しましたが、ちゃんと動作しているので大丈夫でしょう。


問題が有り過ぎですが、自分で何とか出来るように精進します。

有り難うございました。

でも、何か有ったら恐れながら聞きたいので、開放して置きます><



begriff

リンク

2008/5/6(Tue) 20:10:14|NO.15691

気になったことがあります。

開放と言っていますが
問題が解決したらこのスレッドを消そうとしているのですか。
もしそうだとしたらそれはするべきではありません。スレッドにレスポンスがあった時点で
このスレッドは消えなくなりますから。それに一応のことも考えてこのスレッドのログをとりましたので。



キルアス

リンク

2008/5/7(Wed) 19:13:27|NO.15712

分かりました。
永遠に開放して置きます・・・



Holt

リンク

2008/5/7(Wed) 22:34:08|NO.15720

割り込み失礼します。

>開放と言っていますが
>問題が解決したらこのスレッドを消そうとしているのですか。
>もしそうだとしたらそれはするべきではありません。

確かにスレッド消去はHSP掲示板ではタブーという暗黙のルールがあるようですが、
最近の先進的なインターネットコミュニケーションツールでは、
「満足の行く回答が得られたらスレッドを閉じる」というルールが浸透しつつあります。
代表的なものとして『OKWave』や『教えてgoo』等が挙げられます。

それらのルールが定着した人にとって、HSP掲示板の暗黙のルールを理解するのは
少々抵抗がある方も多いのではないかと思います。記事削除とは直接的な関係はありませんが、
この「スレッドを閉じる機能」は近年特に重要性を帯びて来ており、ネット利用者層
(年齢・ジャンル)の拡大とともに、既に質問者にとって満足の行く回答が得られたにも
関わらず、回答者同士の論議がだらだらと続いたり、結果的に後々掲示板の資産を
利用する者にとって、大変扱い難い状態になってしまいます。

その他にも巧妙化してきたスパムボットに登録されたスレッドは、
迷惑極まりないスレッド上げの被害に遭ったり、危険なサイトへの誘導にもつながります。
解決したからといって記事を削除しようとする行為そのものは不愉快かつ迷惑な行為ですが、
現在の掲示板システムには見直すべき個所が多々あるように思えます。

そうした問題点を抱えた環境である現状を踏まえて、
「スレッドを絶対に削除しないことが必ずしも正義」とは言えない気がするのは私だけでしょうか。



begriff

リンク

2008/5/7(Wed) 23:07:43|NO.15723

・確かにここの掲示板のシステムはスパム対策が万全であるかと言われたら
 比較的対策されていないほうでしょう。

・>>「満足の行く回答が得られたらスレッドを閉じる」というルールが浸透しつつあります。
 >>代表的なものとして『OKWave』や『教えてgoo』等が挙げられます。
そのような風潮があるのは確かですね。
しかしここはコミュニティであって必ずしも 質問をしてそれに対するレスポンスを期待する 
と言う機関だけではないのかと(実際はそれに近いが)

・>>「スレッドを絶対に削除しないことが必ずしも正義」とは言えない気がする
 同意。いろいろな視点の人がいるでしょうから必ずしもこれがふさわしいと言うことはないでしょう
 ”残す”と言うことは、同じ悩みを持った人にとって過去ログで得られるような情報が役立つことも
 多々あることはになることは確かです。
 "OKwaveや"教えてgoo"などでも自分が質問できなくても 同じ悩みの人が質問していれば楽に情報を
 得られることができます。

まぁ スレッドを残すには理由がないと残せないのか・理由がないと消せないのか と言う議論も面白そう。(なんてね



Megane

リンク

2008/5/8(Thu) 20:47:47|NO.15730

誤解があるように思いますので確認しておきますが、
このHSP掲示板では、「スレッドを閉じる」ことはできません。
ひとつでもコメントが付いたあとに「スレッドを削除」しようとしても、
<<<一番最初の発言が消えるだけ>>>なのです。

上の方で色々挙げられた「スレッドを閉じる」ことのメリットは
どれも今のところこの掲示板ではまだ実現できません。
削除してみたとしても、関係のない話(それが有害とは私は思いませんが)は
なくなりませんし、スパム対策にもなりません。
少し前まで、削除されて先頭の発言が消えたのに
何度かスパムのせいで上に出てきたスレッドすらありました。

Holtさん、私も何度かこの掲示板で「スレッドを消すな」といったことがありますが、
それは暗黙のルールというより、「メリットがないのにスレッドの内容がわからなくなる」
からだ、とご理解ください。

ただ、もちろん「閉じる機能をつけてくれ」というなら話は分かります。



キルアス

リンク

2008/5/9(Fri) 19:46:19|NO.15750

皆さんのお話中すいません。
エラーやバグではなく、実装したい機能が有ります。

要人機能です。
名前だけでも良いので(できればパラメータも^^;)江戸時代の要人を
ゲーム内に登場させたいのです。

前に立てたスレでは、テキストファイルから人の名前を抜き出す方法を教えてもらいましたが、
どうしてもゲームに登場させることが出来ませんでした・・・

ヒントだけでも宜しいので、誰かご教授ください。



キルアス

リンク

2008/5/11(Sun) 09:30:40|NO.15781

age><



リンク

2008/5/11(Sun) 12:21:53|NO.15783

( ゚д゚)ポカーン
何がしたいのか良く分からんが、
抜き出した人名をmesで表示させればよくね。



キルアス

リンク

2008/5/16(Fri) 19:13:20|NO.15864

再度完成形が出来ました。

http://www6.uploader.jp/dl/1450naga/1450naga_uljp00153.zip.html

ある身分から昇格できなかったり、魅力も無いのに頻繁に求婚されたり、
死んで子供に後を継がせると子供が生まれてからそれほど年数が経ってないので年齢が5歳だったり、
と可笑しな部分が多いですが、是非プレイしてみてください・・

出来れば、感想や、こうした方が良い、と言う意見を下さい。


そして、一つ質問が。
人物データを乗せる筈のTXT。
一行目は名前、2行から4行までがパラメータ、
5行からはまた名前を入れて繰り返し・・と言う風に割り振り、
何か有ったら読み込ませて人物を登場させることは出来ますか?



jill

リンク

2008/5/16(Fri) 21:48:30|NO.15865

こんな感じで出来ます。呼び出しはcsvの検索等でも良いと思います。
カンマ区切りのCSVデータと呼ばれる形式です。
-----data.txt-----(拡張子は.csv等お好きなように)

人物1,10,20,30 人物2,40,50,60 人物3,70,80,90
-----ここまでtxt-----

-----スクリプト-----

#include "hspda.as" sdim chara,500,4 notesel txt noteload "data.txt" button "キャラ1",*hyouji button "キャラ2",*hyouji button "キャラ3",*hyouji stop *hyouji noteget chara,stat csvstr chara,chara mes "名前:"+chara(0) mes "攻撃力:"+chara(1) mes "防御力:"+chara(2) mes "お金:"+chara(3) stop



flory

リンク

2008/5/16(Fri) 22:04:08|NO.15866

とりあえずスクリプトで気づいたこと。

ラベル*rn以下および*rnu以下で能力値をランダムに決定しているみたいですが、
objprmで入力ボックスの内容だけ書き換えるほうが良いのでは?
画面を書き換える処理も減りますし。

sit-1.9ってなってますけど、変数の型はint型です。

何箇所かgotoのあとにstopがありますが、必要ないですね。

何箇所か連続でifを使ってますが、&とか|とか使えば良いのでは?

丁半博打でもシステムをもっとキチンと考えたほうがいいと思います。
hann、tyooの二つの変数を使うんじゃなくて、一つの変数の1と0で区別したほうが楽。
第一、keka=rnd(3)ではkeka=3は出てこない。
変数kinてなんですか?後で使う予定でもあるなら別ですが。

上のkekaと同じく、jok=rnd(3)ではjok=3は出てこない。
そもそも変数に代入する意味がありません。yom.rnd(4)でいいんじゃ?
もちろん、再び嫁の名前が出るのであれば変数に保持しておかなければいけませんが。


何より、もうちっときれいにスクリを書いたほうが、自分で見直すときも楽になりますよ。。。



キルアス

リンク

2008/5/17(Sat) 09:30:14|NO.15875

お二人方、有り難うございます。
改造してみます。



キルアス

リンク

2008/5/17(Sat) 11:57:38|NO.15876

一つ、疑問が浮かびました。

jillさんの作られた人物サンプルを使ってみて、上手く動いて感動したのですが、
これを3人以上作ると成ると、
100人いるなら100のボタンを作らなくてはいけなくなり困ってしまいます。
一つのボタンで、ずらーっと全人物を表示できるようにする事は出来ますか?

此方も色々弄って試行錯誤してます・・



jill

リンク

2008/5/17(Sat) 20:51:11|NO.15890

先ず、落ち着いて良く考えてみてください。
「100人分の処理を繰り返す」ということは真っ先にrepeat命令が思い浮かぶと思います。
で、私の書いたスクリプトにあるボタンはどれも飛び先が、*hyoujiになっています。
ボタンを100個作ろうが1000個作ろうが飛ぶ所は1つです。
では何故*hyoujiの所で人物表示が変わるのかというと、
noteget chara,stat

の"stat"にそれぞれのボタンIDが入るからです。 [キャラ1]のボタンなら"stat"は"0"、[キャラ2]なら"1"という具合です。 その事をイメージして考えると、「repeatで人数分繰り返して、繰り返した時statの所を1づつ増やして行けばいいんだ」 ということが分かると思います。 私もプログラムは始めたばかりで偉そうな事は言えませんが、処理を簡素化することを常に考えて、 HSPで使える命令はHELP Browserを見て大凡把握しておいた方が、あれをこうして、これをああして、と頭でプロセスを容易に考えられる ようになると思います。 -----単純に繰り返し表示するスクリプトです。表示位置や改行などのレイアウト処理は追加してください
*hyouji
repeat notemax
noteget chara,cnt
csvstr chara,chara
mes "名前:"+chara(0)
mes "攻撃力:"+chara(1)
mes "防御力:"+chara(2)
mes "お金:"+chara(3)
loop
stop



キルアス

リンク

2008/5/17(Sat) 21:12:17|NO.15891

有り難うございます。

hspを始めて半年になるのですが、まったく上達しない><
皆さんが羨ましいです。



jill

リンク

2008/5/18(Sun) 03:03:10|NO.15896

お互い無理せず頑張りましょう。
背伸びしても届かない時もあります。走る為にはまずは歩く事から。
私はHELP Browserばっかりみてます。見ないと分からないことが多すぎて。。。



キルアス

リンク

2008/5/18(Sun) 08:29:11|NO.15897

またも疑問が・・・

TXTファイルに書いたセリフ(SERIF.TXT)の中から適当に
一つを選んで出したいのですが、RNDを駆使したのですが、先頭のセリフしか出ず。

セリフをランダムに登場させるには如何すればいいのですか?



SYAM

リンク

2008/5/18(Sun) 08:45:53|NO.15898

NO.15489 見てもダメでしょうか?


ちなみに、
「配列の先頭の要素しか出てこない」という現象でよくある原因のパターンは、
「どこかで配列変数の添え字を付け忘れている」…です。

a.1 とか a(1) と書かなければいけないのに
a とだけ書くと、エラーにはならずa(0) と同じ扱いになります。



キルアス

リンク

2008/5/18(Sun) 10:16:35|NO.15899

#include "hspda.as"
kys = rnd(33) notesel txt noteload "serifu.txt" repeat notemax sr = rnd(notemax) noteget seri,sr loop return stop
SYAMさんの仰られたレスを見ながら
適当にやったら、一応出来ました・・・

これで、たとえば1行目が当たったらスクリプト内の他の場所に飛ばされる(GOTOとか)、
または変数を読み込んで「○×殿の攻撃力は○×です」と言う風にする事は出来ますか?



トホホッティー

リンク

2008/5/18(Sun) 11:42:25|NO.15900

a(0)="佐藤"
a(1)="加藤"
a(2)="伊藤"



a(33)="武藤"
などと、テキストで読みだした名前を文字変数に格納しておくといいです。
いちいち、見るために位置指定してファイル読みだすのは面倒です。



キルアス

リンク

2008/5/18(Sun) 17:24:59|NO.15906

すいません・・・
kys = RND(33)は他の部分で使うもので、間違って入れてしまったものです。
でも、試してみます。



キルアス

リンク

2008/5/19(Mon) 19:04:31|NO.15931

AGE><



jill

リンク

2008/5/19(Mon) 19:44:23|NO.15934

希望しているものは条件により分岐(goto等で)ですよね?
試しにHELP Browserで"分岐"次に"goto"を検索してみました。
on命令やexgoto、switch辺りで望みのものが作れそうです。

度々レス待ちしているようですが、他人任せで作っても楽しくないと思うのですが
クリエイトすることよりもプレイすることのほうがあっているように思います。
スルーすれば済む話ですが、とても心配です。何をするにも他人任せ、神頼みでは
ご自身のスキルは一向に向上しませんよ。頑張ってください。



キルアス

リンク

2008/5/19(Mon) 20:08:53|NO.15936

いや、失礼。
いつか言われる事だろうと思っていましたが・・・

とりあえず、一人で頑張ってみます・・・



キルアス

リンク

2008/5/20(Tue) 21:03:15|NO.15952

そしてまた戻ってきてしまった・・・

質問の答えじゃなくて助言(どっちも同じかな?)を聞きたいのですが、
jillさんの作られたスクリプトの中の
mes "攻撃力:"+chara(1)
の部分。

この攻撃力と、もう一つ自分で作った体力値をつかって戦闘システムを作ろうとしました。

攻撃力、体力共に70とし、
ダメージ判定をzinbutu(2)-10、つまり70-10としようとしましたが
エラーが出ました。
よく考えたら文字列型だそうなので、文字列に計算は通用しないのは当たり前なのですが、
どうしたらchara(1)を実数にする事が出来るのでしょうか。

doubleと言う命令を使えば良いかなと思いましたがエラーが出ますし・・

とりあえずエラーした状態のスクリプトを載せて置きます。

お手数ですが、実行する前に「zinbutu.txt」を作り、

適当な名前,攻撃力数値,体力数値
を入力してください。


*dozyo cls 1 #include "hspda.as" brk=70 zhp=100 gosub *kend csvstr zinbutu,zinbutu mes "お相手仕る" button "戦う",*tkt stop *tkt cls 1 mes "自分武力"+brk+" HP"+zhp+" 相手"+zinbutu(0)+" 攻撃力:"+zinbutu(1)+" HP"+zinbutu(2) stop *kend sdim zinbutu,500,5 notesel txt noteload "zinbutu.txt" repeat notemax zn = rnd(notemax) noteget zinbutu,zn loop return stop



l

リンク

2008/5/20(Tue) 21:30:40|NO.15953


a = "200" mes a a = str(int(a)-10) mes a



flory

リンク

2008/5/20(Tue) 22:55:25|NO.15955

載せているスクリプトではエラーは出ませんが。
スクリプトを載せる前に必ず自分で確認してください。当たり前のことです。

したがって、エラーの原因を特定しようがないですが、変数の型の問題だとして話を進めます。


もう少し自分で調べる努力をしてください。
たとえば…、

doubleという命令(正しくは関数)についてその存在だけでも知っているなら、
スクリプトエディタに「double」と打ちこんで、F1キーでヘルプを開いてみる、

とか。

さらに言えば、変数の型についての理解も不足しているようです。
HSPでは、「実数」と「整数」は違いますよ?
付属のマニュアルをもっとよく読むことをお勧めします。



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