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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
1217
ink58エネルギーメーターについてのプログラム12解決


ink58

リンク

2006/12/17(Sun) 22:09:41|NO.4160

一定時間でエネルギーメーターが少しずつ増えていき、特定のボタンを押せば指定した分の
エネルギーメーター量を減らせるようにしたいのですが、まったく分かりません。
どうか教えてください。



この記事に返信する


ふほ

リンク

2006/12/17(Sun) 22:26:38|NO.4162

>一定時間でエネルギーメーターが少しずつ増えていき、特定のボタンを押せば指定した分の
エネルギーメーター量を減らせるようにしたいのですが、まったく分かりません。

手順を書くと

1.エネルギーの変数を仮に「E」とする。
2.ゲームがループする度、Eの数値を増やす
3.Eの数値が最大値を超えたら、最大値に戻しておく
4.ボタンが押されたらEの数値が消費量より大きいことを確認してから、減らす

という感じで、

プログラム的には、ご自分で言っているままプログラムすればいいと思いますが・・・・。



ink58

リンク

2006/12/19(Tue) 20:01:01|NO.4210

確かにそうゆう事なんですが、メーターの表示(格闘とかであるメーターとか)を表す方法
があまり分からないのです。具体的にスクリプトで示してもらえれば本当にありがたいの
ですが、、。実は、ぼくは小6でhspはつい最近はじめたばかりで、今は勉強中なのですが、
hspをやっている方々にとっては、これは、とても簡単なスクリプトなのかもしれませんが、
それを見てスクリプトの仕組みを知っていきたいので、もしよろしければ、
スクリプト投稿とアドバイスをお願いします。



ふほ

リンク

2006/12/19(Tue) 20:47:25|NO.4213

まあ、参考までに。


screen 0,640,480 e=0 *main e=e+1 if e>100 : e=100 getkey key,32 if key=1 { if e > 20 { e=e-20 } } redraw 0 color 255, 0, 0 boxf 0,100,e*6,120 color 255,255,255 boxf e*6+1,100,601,120 redraw 1 await 100 goto *main

必要最低限の事しかしていませんので、難しくはないと思います。
何をしているか自分で調べてみてください。きっと貴方の力になるでしょう。



ふほ

リンク

2006/12/19(Tue) 20:52:39|NO.4214

書き忘れましたが、

自分で調べても解らなければ、聞いてみてください。



ink58

リンク

2006/12/19(Tue) 22:26:35|NO.4221

ふほさん、本当にありがとうございます

少し質問なんですが

redraw 0
color 255, 0, 0
boxf 0,100,e*6,120
color 255,255,255
boxf e*6+1,100,601,120
redraw 1

一つ目のboxfのe*6は変数eに6を単に掛けているということですよね?
後、二つ目のboxfのe*6,100,601,120のところなんですが、この部分は
スペースキーを押したときの減り具合を表しているということですよね?
あと、e*6,100,601,120の矩形の右下X座標がなぜ600でなくて、601になっているの
かが、分かりません。何度も質問してすいません。



=,=

リンク

2006/12/19(Tue) 22:33:30|NO.4222

1px位気にしなくていいと思いますが、右に1pxメーターをずらすと言う事ではないでしょうか?



ink58

リンク

2006/12/19(Tue) 22:37:52|NO.4224

右に1pxメーターずらす意味はあるのでしょうか?



ink58

リンク

2006/12/19(Tue) 22:41:47|NO.4226

あとこのスクリプトでawait 1000で動かしたときに、スペースキーを押しても
メーターが減らないのですが、なぜなのでしょうか?(await 500では動きました)



ふほ

リンク

2006/12/19(Tue) 23:03:48|NO.4228

+1の件は、指摘されているように、1ドットずらしているだけです。
赤で箱を書いた後、その一番右端を白で塗らない為の配慮ですが、
実質的にはあまり意味は有りません。作る人の癖みたいなものです(笑



で、await 1000は、動きますよ?

ヒント

if e > 20 { e=e-20 }



は、何をしているか考えて見ましょう。
たとえば、await 1000なら、20秒待ってからスペースを押すと何か起こるかもしれません。



ink58

リンク

2006/12/19(Tue) 23:06:32|NO.4230

確かにawait 1000でも動きました(少し長押しする必要があったみたいです)

ふほさんのおかげでこのようなスクリプトの扱いがかなり分かりました
本当に有難うございました。



ふほ

リンク

2006/12/19(Tue) 23:13:23|NO.4231

いえ、長押しでなく、

最初から、eが20に足りていないと、減らない仕組みになっているだけなんです^^;

一定量以上メーターが上がっていれば、普通に押せば、減ります。



ふほ

リンク

2006/12/19(Tue) 23:17:06|NO.4232

・・・・・ああ、await 1000で、1秒まるまる停止しているから、
その間にスペースを押しても、反応しないと言う事か^^;

それなら確かに、長押しが必要です。

失礼しましたm(__)m



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