|
|
2007/1/24(Wed) 17:48:05|NO.5084
今RPGに挑戦と思っているんですけど、
まず最初に戦闘シーンを作ろうとしています。
今回はエネルギーみたいなものがたまったら攻撃できるようにしたいんです。
そこでカウンタのようなものを作ろうとやっているんですがなかなかうまくできません。
repeat
repeat 4
if count(cnt\4)<=100 : conut(cnt\4)+1 : else : stop
boxf 10+(160*(cnt\4)),285,(10+(160*(cnt\4)))+count(cnt\4),305
loop
wait 4
loop
これなんですけど、なぜ何ないのかわかんないんです。
余り人に頼るのは良くないと思うんですけどどうか教えてください。
また、RPGを作るときに注意した方がいいことや、アドバイスなど良かったら教えてください。
(この前の質問の時は色々とありがとうございました。
言う機会がなかったので、この場を借りてお礼と返させていただきます?)
|
|
2007/1/24(Wed) 18:06:13|NO.5086
僕も良く指摘されていますが、不完全のサンプルはやめたほうがいいです。
このサンプルではまず配列countが無いとエラーがでます。
|
|
2007/1/24(Wed) 18:10:33|NO.5088
ゲージが最大まで溜まったらスペースキーを押すと0に戻るサンプル。
z=10
repeat
z++
redraw 0
color 0,0,0:boxf
if z>100 : z=100
if z=100 : color 255,255,255 : else : color 200,200,200
boxf 10,10,z+10,20
stick k
if k&16 : if z=100 : z=0
redraw 1
await 15
loop
|
|
2007/1/24(Wed) 18:11:39|NO.5089
とりあえず使えるようにしましたけど
結果がどうなったらいいのか分からない・・・・
dim count,10
repeat
redraw 1
redraw 0
color 0,0,0
boxf
color 0,255,0
repeat 4
if count(cnt\4)<=100 : conut(cnt\4)+1 : else : stop
boxf 10+(160*(cnt\4)),285,(10+(160*(cnt\4)))+count(cnt\4),305
wait 4
loop
wait
loop
とりあえずコピーペーストで動作するソースにしておいたほうがいいです。
それで、どこがおかしいのでしょうか・・・?
|
|
2007/1/24(Wed) 18:16:09|NO.5090
戦闘シーンといっても人によっていろんな種類のアルゴリズムの戦闘シーンが
あるわけで、一概に説明できるものではありません。
提示してもらったスクリプトをはめこんで実行しようとしても変数があわなかったりで
いろいろとバグがでてしまいます。
あとそのスクリプトでは配列変数countが配列として初期化されていないために
エラーがでるので、dim命令で初期化するようにしましょう。dim命令が実行さ
れると、配列全体の値も初期化されるので気をつけてください。
エネルギーを溜めて攻撃する部分をモジュール化し、
P_Attack flag(cnt),x(cnt),y(cnt)
などといった関数の中でキーの制御などを行い xとyで当たり判定で使うなど
と考えれば、わかりやすいかとおもいます。
flagは画像の表示非表示に使います。
|
|
2007/1/24(Wed) 18:38:03|NO.5091
何というか同時にゲージを増やしていきたいんですよ。
それぞれプレイヤーAは1ずつあがってBは2ずつあがって・・・そんな風にやりたいんです。
でもそれはここを少し換えればいいんです。
: conut(cnt\4)+1 :
<pre/>
だけどこれが同時に進行していかないんです。
ホント曖昧なんですけどもうちょっとアドバイスをください。
|
|
2007/1/24(Wed) 18:38:56|NO.5092
上のやつちょっと間違えました
|
|
2007/1/24(Wed) 19:18:01|NO.5094
結構いい加減ですがこんな感じでしょうか?
ber=0,0,0,0
speed=1,2,3,4
max=100
flg=0,0,0,0
repeat
color 255,255,255 :boxf
repeat 4
if ber(cnt)<max{
ber(cnt)+=speed(cnt)
if ber(cnt)>=max :ber(cnt)=max :flg(cnt)=1
}
color ,,255 :boxf 10,30*cnt+10,10+ber(cnt),30*cnt+28
pos max+20,30*cnt+10
mes ber(cnt)
if flg(cnt)=1 :pos 200,30*cnt+10 :mes "攻撃可能"
loop
wait 10
loop
|
|
2007/1/24(Wed) 19:26:08|NO.5095
ありがとうございます。
RPG作りをがんばって行きたいと思います。
また何かあればお願いします。
|
|
2007/1/24(Wed) 22:52:13|NO.5106
>ber=0,0,0,0
ちなみに「棒」を意味する英語は「bar」です^^
|
|
2007/1/25(Thu) 05:01:11|NO.5117
>>ber=0,0,0,0
>ちなみに「棒」を意味する英語は「bar」です^^
あわわわわっ。はずかしい。お騒がせしてどうもすみません。助かります。
一度 bar って書いていたのを書き直したのに間違いだったなんて・・・。
ご指摘本当に有難うございました、以後気をつけます。
一応 bar に直したの置いていきます。
#define MAX 100
randomize
speed=rnd(5)+1,rnd(5)+1,rnd(5)+1,rnd(5)+1
bar=0,0,0,0
flg=0,0,0,0
repeat
redraw 0
color 255,255,255 :boxf
repeat 4
if bar(cnt)<MAX{
bar(cnt)+=speed(cnt)
if bar(cnt)>=MAX :bar(cnt)=MAX :flg(cnt)=1
}
color ,,255 :boxf 10,10+cnt*30,10+bar(cnt),30*cnt+28
pos MAX+20,10+cnt*30
mes bar(cnt)
if flg(cnt)=1 :pos MAX+50,10+cnt*30 :mes "攻撃可能"
loop
redraw 1
wait 1
loop
それと今思いついた別のやり方。
バーの上限をそれぞれ変えて、
100パーセントかどうかで判断してみる。
#define MAX 100
#define PARTY_MAX 7
#define SPEED 1
randomize
repeat PARTY_MAX :complete(cnt)=rnd(10)*20+100 :loop
dim percent,PARTY_MAX
dim bar,PARTY_MAX
dim flg,PARTY_MAX
repeat
redraw 0
color 255,255,255 :boxf
repeat PARTY_MAX
if bar(cnt)<complete(cnt){
bar(cnt)+=SPEED
if bar(cnt)>=complete(cnt) :bar(cnt)=complete(cnt) :flg(cnt)=1
percent(cnt)=bar(cnt)*MAX/complete(cnt)
}
color ,,255 :boxf 10,10+30*cnt,10+percent(cnt),30*cnt+28
pos MAX+20,10+cnt*30 :mes percent(cnt)
if flg(cnt)=1 :pos MAX+50,10+30*cnt :mes "攻撃可能"
loop
redraw 1
wait 1
loop
| |
|