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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0124
初心者同時進行ができない10解決


初心者

リンク

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


とりあえずコピーペーストで動作するソースにしておいたほうがいいです。
それで、どこがおかしいのでしょうか・・・?



As

リンク

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作りをがんばって行きたいと思います。
また何かあればお願いします。



kz3

リンク

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



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