Lv
投稿者 : アレ(FLA1Aaw101.fks.mesh.ad.jp)
- 2005/07/09(Sat) 14:08
No.8451
|
|
|
|
|
只今RPGを作っているのですが、LvUPさせる方法(経験値で)がいくら考えてもでてきません。 もちろんLvがあがったら特技を覚えたり、能力UPさせたいです。 出来る方法がありましたら、書き込み宜しくお願いします。m(__)m
|
Re: Lv
投稿者 : ごま太郎(i220-108-28-191.s02.a001.ap.plala.or.jp)
- 2005/07/09(Sat) 19:28
No.8453
|
|
|
|
レベルを管理する変数、levelと、経験値を管理する変数expを用意します。
RPGで言えば、戦闘に勝利したらexpを増やしていきます。 if文を使って、expが一定以上に増えたらlevelを増やします。 if (exp>1000) {level++;}
で、このときに技を覚えさせる処理なども一緒にやります。 if (exp>1000) {level++;技を覚えさす処理();}
「〜がどうかしたら…したい」ということのほとんどは、変数とif文で処理します。これはどの言語においても同じことです。 ホトンドの開発言語(製作ツールを除く)において、「レベルを管理する変数」や「経験値を管理する変数」というものは存在しません。 こういうものは、自分で作って処理をさせる必要があります。
|
Re: Lv
投稿者 : アレ(FLA1Aaw101.fks.mesh.ad.jp)
- 2005/07/09(Sat) 21:56
No.8456
|
|
|
|
内容が馬鹿なのでよくわかりませんが、あのBATTLEのなかにEXPもつくればいいんですか?
|
Re: Lv
投稿者 : ヰ法の民(ntgifu054003.gifu.nt.ftth.ppp.infoweb.ne.jp)
- 2005/07/10(Sun) 00:12
No.8459
|
|
|
|
最初に関係無いことを言います >内容が馬鹿なのでよくわかりませんが 「内容」が「馬鹿」のようにとれます。配慮してください。 あと、自分を馬鹿にするのは謙遜でもなんでもないですよ。
本題ですが >あのBATTLEのなかにEXPもつくればいいんですか? プログラムが無いので全くわかりません。BATTLEというのはプログラムなのか、それともクラスなのか、 明記してください。プログラムをUPして下さっても結構です。 参考までに例を書きますと、
//ex.1 if($level*50=<$exp) {$level++;$exp=0;}
$levelは「level」という名前の箱です。頭に$がついているのは、他のプログラムにも簡単に読めるという意味です。視覚的に考えると、「顔に書いてある」という感じですね。 主人公が冒険に出かけるとき(設定によってマチマチですが)、主人公のレベルは1だと思います。それは、「$level」に「1」が入っている状態です。レベルが上がるということは、「$level」に入っている数字が1上がるという意味です。 それは「$level++;」や「$level+=1;」などという風に表記します。 ここでは、経験値がある数字に達するとレベルが上がるという風にしたいと思います。ex.1では、「レベル×50」に達するとレベルが上がるようになっています。 「$level*50」は「レベル×50」という意味です。$expは$levelと同じく「exp」という箱です。敵を倒すと、 $exp+=10; といった感じで増えるようにします。10は増える経験値です。 「=<」は「右が左と同じかそれ以上」という意味の記号です。 なのでex.1のプログラムは、 「$levelに50をかけたものよりも$expが大きくなったら、$levelが上がって$expが0に戻る」という意味になります。 厳密に言うと、「同じ」も「大きい」ととらえられます。
長くなってしまったので切ります。
|
Re: Lv
投稿者 : アレ(FLA1Aaw101.fks.mesh.ad.jp)
- 2005/07/10(Sun) 11:13
No.8467
|
|
|
|
すいませんでした。 自分が馬鹿なのです。 あと、無理かとおもいますが、サンプルのプログラムをかいていただきたいです。 如何せんチュートリアルをやった程度なので^^; BATTLEはごま太郎様のプログラムですが、こちらを使わせていただいています。↓↓↓ extends TextChar; //戦闘用
//主人公キャラクターの能力 $name="おにぎり太郎"; //名前 $hp=100; //現在HP $max_hp=100; //最大HP $mp=100; //現在MP $max_mp=100; //最大MP $lv=100; //Level $attack=10; //攻撃力 $defend=10; //防御力
//敵キャラクターの能力 battle=new Array(); //能力値配列 battle.load($MYCHAR.monster); //データをロード e_name=battle.get(0); //名前 e_hp=valueOf(battle.get(1)); //HP e_mp=valueOf(battle.get(2)); //MP e_attack=valueOf(battle.get(3)); //攻撃力 e_defend=valueOf(battle.get(4)); //防御力
mode=0; //0が○が現れた。1が行動選択。2が敵へのダメージ結果表示。3が主人公のダメージ結果表示。4が戦闘終了 timestop=timestop(); //戦闘中は他のオブジェクトの動作を止める zOrder=-10; //このオブジェクトは文字表示に使っているため、ウィンドー(zOrderが0)よりも描写優先度が高い while(1) { //戦闘中常時表示部品 drawSprite($viewX+44+$tWidth,$viewY+58+$tHeight,$pat_win+3); //主人公スターテス用ウィンドー表示 drawText($viewX+$tWidth*3,$viewY+$tHeight*4,$hp,$clBlack,12,-10); //HP drawText($viewX+$tWidth*3,$viewY+$tHeight*5,$mp,$clBlack,12,-10); //MP drawText($viewX+$tWidth*3,$viewY+$tHeight*6,$lv,$clBlack,12,-10); //Level //戦闘処理 if (mode==0) { drawSprite($viewX+$screenWidth/2,$viewY+$screenHeight-50,$pat_win+4,0,0); //デカウィンドー表示 text=e_name+"が現れた!"; if ($enter) {setVisible(0);mode=1;update();$mplayer.play($se_enter);} } if (mode==1) { drawSprite($viewX+35,$viewY+$screenHeight-50,$pat_win+0,0,0); //選択肢表示 if (e_hp>0 && $enter) {mode=2;update();敵ダメージ=$attack-e_defend;e_hp=e_hp-敵ダメージ;$mplayer.play($se_enter);} else if (e_hp<=0 && $enter) {mode=4;update();$mplayer.play($se_enter);} } if (mode==2) { drawSprite($viewX+$screenWidth/2,$viewY+$screenHeight-50,$pat_win+4,0,0); //デカウィンドー表示 text=e_name+"に"+敵ダメージ+"のダメージを与えた!!";setVisible(1); if (e_hp>0 && $all) {mode=3;update();ダメージ=e_attack-$defend;$hp=$hp-ダメージ;$mplayer.play($se_enter);} else if (e_hp<=0 && $all) {mode=4;update();$mplayer.play($se_enter);} } if (mode==3) { drawSprite($viewX+$screenWidth/2,$viewY+$screenHeight-50,$pat_win+4,0,0); //デカウィンドー表示 text=$name+"は"+ダメージ+"のダメージを受けた!!"; if (hp>0 && $all) {setVisible(0);mode=1;update();$mplayer.play($se_enter);} else if (hp<=0 && $all) {mode=4;update();$mplayer.play($se_enter);} } if (mode==4) { drawSprite($viewX+$screenWidth/2,$viewY+$screenHeight-50,$pat_win+4,0,0); //デカウィンドー表示 text="戦闘は終わった。"; if ($enter) {$hp=$max_hp;$mp=$max_mp;timestop.releaseAll();timestop=null;die();$mplayer.play($se_enter);} } update(); }
|
Re: Lv
投稿者 : ごま太郎(i60-35-45-101.s02.a001.ap.plala.or.jp)
- 2005/07/10(Sun) 15:50
No.8476
|
|
|
|
まず、人のプログラムについて語るときには、誰のどのプログラムのどの部分かをはっきりと書きましょう。これはマナーの問題です。
それから、今回の戦闘についてですが、最初からTDRCの戦闘システムをいじくるのは無理な話です。 チュートリアルの入念にやりこみ、最低限変数というものと配列というものについての理解がなければそうそう改造できるものではありません。 ついでに、RPGは誰にでもプログラムできるもの(こつさえ知っていればアクションより楽)ですが、それだけにプログラミングの基礎力が大事な分野です。
一見したところ、私のRPG製作講座のサンプルゲームのスクリプトのようですね。 まず、一番上から一行ずつ記述しなおして(コピペしないで)プログラムを理解してください。改造はそれからです。
if (mode==4) { $exp++;//経験値を増やす if ($exp>10) {$level++;}//経験値が10より多くなるとレベルが上がる }
|
|