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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1209
フー寿命システム9未解決


フー

リンク

2008/12/9(Tue) 21:07:33|NO.21444

始めまして。

今、戦国時代のゲームを作っており、
基本の所は出来て、武将でも登場させようかとしたのですが、
メモ帳にデータを書いていってそれをHSPに読み込ませる方法
(,で区切っていくやつ)を取ったのですが、
どうしても寿命の部分がうまくいきません。

X年になったら武将Aが死亡し、またY年になったら武将Bが登場する、と言う
システムを作りたいのです。

誰か教えて下さい。



この記事に返信する


××

リンク

2008/12/9(Tue) 21:25:49|NO.21446

スクリプトがないとなんともいえないです。。。



フー

リンク

2008/12/9(Tue) 21:48:05|NO.21448

すいません・・テストに使うものしか有りませんが、どうぞ。

*s
#include "hspda.as" cls 1 w=0 *l cls 1 sdim zinbutu,500,10 notesel txt noteload "zinbutu.txt" repeat notemax randomize input sitei,200,20,4 ; 入力ボックスを配置 noteget zinbutu,sitei csvstr zinbutu,zinbutu mes ""+zinbutu(0)+" "+zinbutu(8)+" 登場"+zinbutu(5)+" 死亡"+zinbutu(6) input nenn,200,20,4 mes ""+nenn+"年" a = int(zinbutu(5)) b = int(zinbutu(6)) c = int(zinbutu(7)) mes ""+c+"才" if nenn>a:w=1 if nenn>b:w=0 mes w button "next",*s button "+1",*wan button "+10",*tenn button "+100",*miri button "loop",*loo stop loop *wan nenn+1 goto *s *tenn nenn+10 goto *s *miri nenn+100 goto *s *loo cls 1 repeat notemax notesel txt noteload "zinbutu.txt" noteget zinbutu,notemax csvstr zinbutu,zinbutu a = int(zinbutu(5)) b = int(zinbutu(6)) c = int(zinbutu(7)) if nenn>a:w=1 if nenn>b:w=0 mes w pos cnt/10*64,cnt\10*24 loop button "return",*s stop

zinbutu.txtには
「名前,0,0,0,0,登場年,死年,登場時年齢」
をいくつか書いて貰い、(一行に一つ、できれば五つぐらいそれぞれ登場年、死年などは、ばらばらに)
このスクリプトと同じフォルダに保存します。
次に之を起動して
一番上の入力欄で行番号を指定して
その下の入力欄には西暦を入力して貰います。


例えば登場年が100、死年が150の場合、
+10ボタンを押して西暦100にすると登場判定が1になります。

この状態で「LOOP」ボタンを押すと
zinbutu.txtに書いた人全員の判定が出るのですが、何故か生まれていない人の(例えば200年登場の人)判定まで
1に成るのです・・

全員ばらばらに判定するにはどうすれば良いか、と言うことです。
言葉足らずで、申し訳有りません。



GENKI

リンク

2008/12/9(Tue) 21:51:25|NO.21449

たぶんだいたいこんな感じの流れになると思いますが、どのあたりが分からないのかお教えください。

・年を数える変数を用意する。
・武将のパラメータに誕生年、没年の項目をつける。

年が変わったら、全武将の誕生年と没年のパラメータを年と比較する。
誕生年=年なら登場イベント。
誕生年<=年かつ没年>年なら生存している。
没年=年なら死亡イベント。
没年<=年なら死亡している。


> メモ帳にデータを書いていってそれをHSPに読み込ませる方法

もしかして、必要になったらその都度ファイルからデータを読み込んでいませんか?
最初に全データを配列変数に読み込んでおくと管理が楽になります。


> (,で区切っていくやつ)

これはCSV形式と呼ばれています。



フー

リンク

2008/12/9(Tue) 21:59:07|NO.21450

>年が変わったら、全武将の誕生年と没年のパラメータを年と比較する。
ここですね・・
どのように比較させれば良いのか分かりません」。

>もしかして、必要になったらその都度ファイルからデータを読み込んでいませんか?
>最初に全データを配列変数に読み込んでおくと管理が楽になります。
はい、毎回読み込んでいました。
どのように全データを読み込ませれば良いのでしょうか?



××

リンク

2008/12/9(Tue) 22:03:54|NO.21451


repeat notemax,0 notesel txt noteload "zinbutu.txt" noteget zinbutu,cnt

で解決するはず



GENKI

リンク

2008/12/9(Tue) 23:50:15|NO.21456

このスクリプト、ざっと見た感じではいろいろと問題がありそうですね。

まずはいろいろは置いといて、重要そうなところだけ。
「2次元配列」
について調べてみてください。


「いろいろ」についてはこちらを参考にしてみてください。
http://hspdev-wiki.net/?HSP%B9%D6%BA%C2%2F%B4%F0%CB%DC%C5%AA%A4%CA%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8%A4%CE%A5%D1%A5%BF%A1%BC%A5%F3#w51f08e7



フー

リンク

2008/12/11(Thu) 18:21:21|NO.21493

分かりました。
調べてみます。
ありがとうございました。



フー

リンク

2008/12/11(Thu) 19:21:29|NO.21496

調べてみました所、訳は分かったのですが・・

できれば誰かCSV形式を二次元配列に組み込む方法を
ヒントだけでも教えてくれませんか?
いじってもいじっても酷くなるだけで・・



GENKI

リンク

2008/12/11(Thu) 20:09:13|NO.21498

移し変えればいいだけです。

#include "hspda.as" a="a,b,c", "d,e,f" ;データ sdim b,127, 3,2 ;保存用 sdim d,127, 3 ;読み込み用 ;読み込み repeat 2 csvstr d, a(cnt) i = cnt repeat 3 b(cnt,i) = d(cnt) loop loop ;表示 repeat 2 i=cnt repeat 3 mes ""+cnt+","+i+":"+b(cnt, i) loop loop



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