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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0609
ライム質問と言うほどでもないです。RPG作りたい8解決


ライム

リンク

2010/6/9(Wed) 16:55:49|NO.33153

どうも、この間picload・mmloadについて教えてもらったアホです。
今回RPGが作りたい!!と思ったわけですが、
(フィールド移動は無し、クリックかボタンで進めるやつです。バトル有り・バグ有り)

まずHPなどの能力値の上限を指定することって出来ないのでしょか?
コレがないとRPGになりませんので…。

次にレベルなどのUPに関して、if命令を1つずつ書いてかないといけないんでしょうか?
if レベル = 1 : HP + 20
if レベル = 2 : HP + 30 if レベル = 3 : HP + 40 ┆
みたいに数十行書かないといけないんでしょうか?
なんか省略できるやつってないですかね?


ほかにもRPG製作に役立つ命令があったら教えていただきたいです。
F1のhelp見てもいまいちわからないんですよね・・・。



この記事に返信する


SYAM

リンク

2010/6/9(Wed) 17:06:22|NO.33154

> HPなどの能力値の上限を指定すること

repeat〜loop、if、そして 算数 が分かれば、おそらくお望みのことはじゅうぶんにできます。

あと、配列変数というものを理解しないと、どんなゲームをつくるにしてもデータの扱いが非常に難しくなるでしょう。



☆ひとみ

リンク

2010/6/9(Wed) 17:19:25|NO.33155

式化しちゃうと良いのでは?

LVが1の時HPは10のLV倍とすると 2の時HPは20 3の時HPは30という決まりの式が作れます。
単純に倍率を掛けた式ですが、もっと複雑なのも作れると思います。

一個式を作れば、あとは変数でいくらでも変化ができるので、
設定を読み込むよりも演算結果で設定を得る事が出来ると思います。
これなら1文の式を書けばどんなLVでもHP限度となる数値を算出で得られる事になるです。

100LVでも1万LVでもこの方法なら1行で済むです。



ライム

リンク

2010/6/9(Wed) 17:25:13|NO.33156

なるほど・・・。
いろいろ方法があるのですね・・・。

SYAMさん、☆ひとみさん
も少し詳しくお願いします。


ところで、
配列変数って何ですか?



荒河

リンク

2010/6/9(Wed) 17:37:32|NO.33157

説明しよう!
配列変数とは一つの変数にたくさんの数字が入れられるのである!
詳しくはHSPスクリプトエディタのヘルプメニューにあるプログラミング・マニュアルを読もう!

・配列変数の例

dim a,10;10個の数字を入れられる配列変数を作る repeat 10;10回繰り返す a(cnt)=cnt*cnt;配列変数に数字を入れる loop;繰り返しの終了 foreach a;配列変数に入る数字の個数の分だけ繰り返す mes ""+a(cnt);配列変数の内容の表示 loop;繰り返しの終了



ライム

リンク

2010/6/9(Wed) 18:01:49|NO.33158

なるほど、よくわからないが
とりあえずhelpで勉強しときます。



SYAM

リンク

2010/6/9(Wed) 18:20:28|NO.33161

>も少し詳しくお願いします。

配列変数についてだけもうすこし詳しくお話します。以前ここで書いて過去ログ行きになったものの訂正版。
※他は自力でがんばってください。算数とか分からないようではお先真っ暗ですし。


変数というのは、数値や文字列を入れておく入れ物であることはすでに御存知と思います。
変数名は、その入れ物につける名前というのも理解していますね。

通常の変数は、数値や文字列を1つだけ入れておくことのできる『箱』のような入れ物ですが、
配列変数は、それがいくつも繋がった『棚』のような入れ物です。

その『棚』は、たとえば横一列に繋がっていたり、それが何段もあったりします。そして、
「**という棚の、上から*番め、左から*番目」
…という表しかたで棚を指定して、中身を出し入れできます。


たとえば、100個の箱
「箱0」〜「箱99」
に、いろんな中身が1つずつ入っているとします。これを、変数 HAKO_00, HAKO_01, HAKO_02,…, HAKO_99 で表します。
このとき、別の変数 N に 0 〜 99 のうちどれか一つの数値が入っているとき、

「変数 N に入ってる数字の番号のついた箱の中身を取り出して、変数 A に代入したい」

…となると、どんなスクリプトを書けば取り出せるでしょうか。ちょっと考えてみてください。

if(N=0):A=HAKO_00 if(N=1):A=HAKO_01 if(N=2):A=HAKO_02
…全部書くのも面倒なので以下省略。やってられませんね。

つぎに、
100列の『棚』を 配列変数 TANA で表します。棚をつくる命令 dim で 100列の棚を作ります。つまり、

dim TANA, 100
ですね。 これで、TANAという名前の100列の棚が作られます。この棚に、左から順に HAKO_00, HAKO_01, …と同じものが入っているとすると、先ほどと同じ要求を実現するには、

A=TANA(N)
または、


A=TANA.N

とだけ書けばOKです。

棚が100列100段もあって、N0 段目の N1 番目を取り出したいとなると 、

大量の箱でやっちゃうと

if((N0=0)&&(N1=0)):A=HAKO_00_00 if((N0=0)&&(N1=1)):A=HAKO_00_01 (中略) if((N0=1)&&(N1=0)):A=HAKO_01_00 if((N0=1)&&(N1=1)):A=HAKO_01_01 (以下略)
問題外ですね。この部分だけで10000個のifが並ぶことになります。
これが100列100段の棚なら、

A=TANA(N0,N1)
…だけで済みます。
これが、配列変数です。
たくさんのデータをまとめて管理できて、欲しいデータが簡単に取り出せる仕組みです。


dim, sdim 命令は、この「棚」をあらかじめ作っておく命令です。
棚もまだ用意してないのに「上から*段め、左から*番目にデータを書き込め」…とか命令することはできませんからね。



最後に。

すこしは自分で調べるクセをつけましょう。
分からない言葉が出てきたらいきなり「**って何?」って聞いてるようでは、時間と手間の無駄です。
自分で調べるクセをつけることは、プログラマーにとって、すごく、とっても大事なことです。



ライム

リンク

2010/6/9(Wed) 18:30:57|NO.33163

SYAMさん
スゲーわかりやすいです。なんとなくこれならできそうな気がしなくもないです。

最後の3行…
サーセンした。以後気をつけます。



backdrop

リンク

2010/6/9(Wed) 22:45:26|NO.33168

ちなみに
a(番号)ではなく
a.番号
という書式もできる



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