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


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
0924
むんらプログレスバーの進行状況によってmesが変化するプログラム?がわからない2解決


むんら

リンク

2024/9/24(Tue) 16:07:23|NO.102262

こんにちは。むんらと申します。
以下のプログラムで「p」が0なら「start」とmesを表示し17なら「17%」と表示させたいのですが、
これだとstartしか表示されません。どうすればいいでしょうか。
あ、調べてはみたんですがそれっぽいのは見つかりませんでした。
分かる人がいたら教えてくださると幸いです↓



//プログレスバーの大きさ bax=620.0 bay=25.0 //初期設定 p=0.0 ;0% buffer 1:color 0,217,0:boxf:gsel 0 ;バーの色設定 *main p=p+0.05 ;パーセントを増やす redraw 0 ;画面更新停止(ちらつき防止) color 255,255,255:boxf ;古いバーを消すため画面全体塗りつぶす pos 0,400:gosub *probar ;バーを貼り付けます redraw 1 ;表示 await 16 ;一旦停止 goto *main ;ループします *probar if p>100.0:p=100.0 ;100%超えないようにする gcopy 1,,,(bax/95)*p,bay ;バーを貼ります color 0,0,0 pos 310,400 if (p=100.0){ }else{ mes ""+int(p)+"%" if (p>=0.0){ mes "start" }else{ if (p>=17.0){ boxf mes "17%" } } } return ;13行目に戻ります



この記事に返信する


沢渡

リンク

2024/9/24(Tue) 17:03:50|NO.102264

下の方にあるifブロック群について、各ブロックの内容が実行される条件をまとめると、
以下のようになります。

if (p=100.0) { //pが100.0の時の処理 } else { //以下はpが100.0未満の時の処理(pが100.0を超えない処理を別途行っているので) mes ""+int(p)+"%" if (p>=0.0) { //pが100.0未満で、0.0以上の時の処理 mes "start" } else { if (p>=17.0){ //pが100.0未満で、0.0以上ではなく、17.0以上の時の処理(←ありえない) boxf mes "17%" } } }
「0.0以上ではなく、17.0以上である」などということはありえませんから、
このままでは「if (p>=17.0)」から始まる部分が実行されることはありません。

たとえば、以下のようにするのはどうでしょうか?

if p=100.0 { //pが100.0の時の処理 } else { //pが100.0以外の時の処理 mes ""+int(p)+"%" if p>=17.0 { mes "17%" } else { mes "start" //pが17.0未満の時に"start"が表示される。(0.0の時のみだと一瞬しか表示されないので) } }



むんら

リンク

2024/9/24(Tue) 17:57:35|NO.102265

>沢渡 正常に動きました。わざわざありがとうございます!!



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.102262への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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