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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0619
AoriHSVカラーでスクリーンセーバー6解決


Aori

リンク

2011/6/19(Sun) 12:54:43|NO.39723

スクリーンセーバーを作ろうと思い、まず色をじっくり変えた背景を作ろうと思いました。
自分のやりたいことは、変数[h]か[s]か[v]が255を超えたら変数を少なくしていき、
変数が0になったら変数を足していくということをしたいわけですが、変数が0の時、
足していくことができません。
とりあえず、コードを載せておきます。

bgscr *start cls randomize h=rnd(256) s=rnd(256) v=rnd(256) if h>100:h-=50 if s>150:s-=50 if v>150:v-=50 *main onerror *main;エラー防止[ネストレベルが深い] /*色絵画*/ if vs=5:vv=5 if hs=5:hh=5 if ass=5:ss=5 if hh=0:h+=1 if hh=5:h-=1 if ss=0:s+=1 if ss=5:s-=1 if vv=0:v+=1 if vv=5:v-=1 /********/ /*色判定*/ if h<=1:hh=0 if h>=255:hh=5:hs=5 if s<=1:ss=0 if s>=255:ss=5:ass=5 if v<=1:vv=0 if v>=255:vv=5:vs=5 /********/ color pos 0,0 mes "h="+h pos 40,0 mes "s="+s pos 80,0 mes "v="+v await 2 hsvcolor h,s,v:boxf goto*main
どうか回答よろしくお願いします!



この記事に返信する


ORZ

リンク

2011/6/19(Sun) 13:13:08|NO.39724

まずインデントする。これは自分の分かりにくいソースコードを人様にせめて見てもらうための
最低限の心意気なので必ずヤる事。vsだのvvだのass(!?)だの意味の分かりづらい変数名を使うなら
コメントも必要だ。
珍妙なonerror等から察するにまだ経験値が足りないので以下のソースを見て自分で考えること。

#define MAX 255 hensuu=0 zoukabun=1 *main color 255,255,255:boxf color 0,0,0 pos 0,0:mes hensuu mes zoukabun hensuu+=zoukabun if hensuu\MAX=0:zoukabun=-zoukabun wait 1 goto *main



Aori

リンク

2011/6/19(Sun) 16:50:59|NO.39738

しょうもない質問してすみませんでした。
誠に簡単に解決したので削除しておきます

#define MAX 255 bgscr *start cls randomize h=rnd(256) s=rnd(256) v=rnd(256) if h>100:h-=50 if s>150:s-=50 if v>150:v-=50 *main 乱数=rnd(2) 乱数+=1 onerror *main;エラー防止[ネストレベルが深い] /*色絵画*/ if vのスイッチ=5:vv=5 if hのスイッチ=5:hh=5 if sのスイッチ=5:ss=5 if hh=0:h+=乱数 if hh=5:h-=乱数 if ss=0:s+=乱数 if ss=5:s-=乱数 if vv=0:v+=乱数 if vv=5:v-=乱数 /********/ /*色判定*/ if h<=1:hh=0 if h>=255:hh=5:hs=5 if s<=1:ss=0 if s>=255:ss=5:ass=5 if v<=1:vv=0 if v>=255:vv=5:vs=5 /********/ color pos 0,0 mes "h="+h pos 40,0 mes "s="+s pos 80,0 mes "v="+v await 2 hsvcolor h,s,v:boxf goto*main



Aori

リンク

2011/6/19(Sun) 16:51:31|NO.39739

解決Test



check

リンク

2011/6/19(Sun) 17:46:39|NO.39740

結局onerror云々については解決してないような…
onerrorはHSP内でエラーが発生したときに、
指定されたラベルに飛ぶようにする命令だぞ。



Aori

リンク

2011/6/28(Tue) 06:42:47|NO.39855

>>check様
onerrorは、取りあえず初めは「repeat~loop」を使っていましたので
時々[ネストが深すぎます]というエラーが出ていました。
なので、そのあとも再開するためにこの命令があります、が、
[goto*main]に変えたので方式が変わり、onerrorは関係なくなったので、消しておこうと思います
アドバイス有り難うございます



ORZ

リンク

2011/6/28(Tue) 10:18:40|NO.39856

ネストが深すぎるというのは、そもそも君のrepeat〜loopの構造がおかしくてHSPが
悲鳴を上げているということなので、onerrorを入れても根本的解決になっていない。
例えるなら『足の骨を折って超痛い。超痛くて食欲ないからあっさりしたものを食べよう』と
いうチンプンカンプンな対応を取っていることになる。骨折を直す努力をしよう。



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