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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0928
(´・ω・`)1回目は動くのに 2回目に0で除算しちゃう11解決


(´・ω・`)

リンク

2015/9/28(Mon) 06:40:50|NO.72006

1回目は正常に動くと思うのですが、起動したままでもうプレイしようとすると
0で割り算したと出てエラーが出てしまいます
どうやったら治りますかね?
ファイル↓
https://kie.nu/2KgM



この記事に返信する


HogeHoge

リンク

2015/9/28(Mon) 09:24:16|NO.72007

ソースコードを見させていただきました。
原因は多分、「maxgauge8」変数に何も数値がないから計算ができなくて、0で除算しているから
だと思います。
ちょっと修正してみました。(これで本当にいいのかなぁ・・・)

*gage color 0,255,0 maxgauge8=10 if ok<0.0 { ok=0.0 } if ok>maxgauge{ ok=maxgauge8 } gauge=(ok/maxgauge8*100*5+50) boxf 50,140,gauge,160 if gauge-425>0{ boxf 425,120,gauge,140 } if gauge>=maxgauge8 { gauge=maxgauge8 } color 0,0,0 return
こうすることで多分2回目もできると思います。
分かりにくい説明で申し訳ございません...



HogeHoge

リンク

2015/9/28(Mon) 09:25:28|NO.72008

訂正

*gage color 0,255,0 maxgauge8=10 if ok<0.0 { ok=0.0 } if ok>maxgauge8{ ok=maxgauge8 } gauge=(ok/maxgauge8*100*5+50) boxf 50,140,gauge,160 if gauge-425>0{ boxf 425,120,gauge,140 } if gauge>=maxgauge8 { gauge=maxgauge8 } color 0,0,0 return



Mituking[元mituki]

リンク

2015/9/28(Mon) 18:46:32|NO.72010

隧ヲ菴懷刀
文字化けw



(´・ω・`)

リンク

2015/9/28(Mon) 19:00:47|NO.72011

>>HogeHogeさん
そうするとゲージの機能が失われてしまうんです(´・ω・`)



暇人

リンク

2015/9/28(Mon) 19:30:55|NO.72013

> current+1
この変数が二回目にクリアされずに使われてる



スペース

リンク

2015/9/28(Mon) 19:35:51|NO.72014

>>(´・ω・`)さん
ソースコード軽く見てみました。
330行目でエラーが発生してるんですね。
これを見る限り、HogeHogeさんの言うようにmaxgauge8が0になるためこのエラーが発生します。
解決策として、maxgauge8を1回目と同じ値で初期化します。

*play y=0 ok=0.0 mcomb=0 judge=0 score=0 maxgauge8=12

関係ありませんが、
割算は整数型と実数型をちゃんと確認してから行わないと結果が小数点切り捨てで帰ってきます。
なので変数は整数型と実数型をしっかり意識してプログラムしないといけません。



k

リンク

2015/9/28(Mon) 19:48:29|NO.72015

0で割ることはできないので仕方ないですね

if maxgauge8=0 : maxgauge8=12 gauge=(ok/maxgauge8*100*5+50)
とりあえず一週目の12を入れてみましたけど・・・
どういう数値がくれば正解なのかわかりません^^;



暇人

リンク

2015/9/28(Mon) 19:49:43|NO.72016

デバッグの方法として
エラー行は
> gauge=(ok/maxgauge8*100*5+50)
で0除算エラーならmaxgauge8が0なのが原因なのは分かる
maxgauge8に代入してるのは
> maxgauge8=0.8*maxgauge
でmaxgaugeが0だった事が分かる
maxgaugeに代入してるのは
> maxgauge=don+ca
なので、don+caが0になってしまってる事が分かる
don+caの代入は
> if strmid(musicdata,current,1)=1 :don+1
> if strmid(musicdata,current,1)=2 :ca+1
これで、musicdata内に文字列が無いのかcurrentが不正な値なのか表示すれば分かる

結果としてcurrentが初期化されずに再利用してるため
musicdataの文字数を超えてstrmid()の意味が無くなってる



motchy

リンク

2015/9/28(Mon) 19:50:45|NO.72017

maxgauge8 をハードコーディングする話が出てきていますが、暇人さんが正解でしょう。
私も同じ結果に辿り着いてましたが、僅差で書き込むのが遅かったため止めました。



スペース

リンク

2015/9/28(Mon) 20:31:40|NO.72018

暇人さんの説明が完璧ですね。
基本的に、エラーが発生した場合はまずエラーコードで検索しどういう時に発生するのかを確認してください。
http://www.geocities.co.jp/Playtown-Yoyo/6130/hsp/hsp-error-number.html



(´・ω・`)

リンク

2015/9/29(Tue) 18:06:59|NO.72028

currentが原因でしたか・・・
ありがとうございます



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