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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0614
SqOcプログラムの短縮4解決


SqOc

リンク

2015/6/14(Sun) 22:42:12|NO.69786


repeat 1,2 if mmaxsave(cnt-1)<musicplace+2{ if musicplace+2<=mmaxsave(cnt)+mmaxsave(cnt-1){ pos 0,0:color 0,0,0 mes ""+categmoji(cnt)+"" } } loop repeat 1,3 if mmaxsave(cnt-1)+mmaxsave(cnt-2)<musicplace+2{ if musicplace+2<=mmaxsave(cnt)+mmaxsave(cnt-1)+mmaxsave(cnt-2){ pos 0,0:color 0,0,0 mes ""+categmoji(cnt)+"" } } loop repeat 1,4 if mmaxsave(cnt-1)+mmaxsave(cnt-2)+mmaxsave(cnt-3)<musicplace+2{ if musicplace+2<=mmaxsave(cnt)+mmaxsave(cnt-1)+mmaxsave(cnt-2)+mmaxsave(cnt-3){ pos 0,0:color 0,0,0 mes ""+categmoji(cnt)+"" } } loop

これを短縮させて、
kazu=4
だったら上のプログラムで、
kazu=5
だったら上のプログラムの
repeat 1,5
バージョンまで実行することってできますか?
できたら教えてください!!



この記事に返信する


スペース

リンク

2015/6/15(Mon) 11:10:53|NO.69794

このソースコードで何をどうしたいのかを書いてくれないと、答えようがありません。
また、掲示版に貼るソースコードはコピペしで実行できるものにした方がいいですよ。



KOMARI

リンク

2015/6/15(Mon) 14:27:21|NO.69795

短縮するのってすごく気持ちいいのでやってみた(・ω・)


//%1<%2<=%3かどうか #define global ctype CompareValue(%1,%2,%3) ( (%1<%2) && (%2<=%3) ) //個人的な主義(趣味)でモジュール化+関数化 #module //_var(val)+・・・+_var(val-(num-1))を計算 #defcfunc CalcVarSum var _var,int val,int num,local sum sum = 0 repeat num sum += _var(count-cnt) loop return sum //短縮の要求をされたもののうち、主要な部分 #deffunc MainFunc int kazu,local _cnt,local varsum //無限にrepeatが行われないように念のためエラー判定 if ( kazu < 1 ) { dialog "kazuの値が不正です" stop } //ここからが改造した主要な部分 repeat 1,kazu-1 _cnt = cnt //次にrepeatをまわす数、及びCalcVarSumでの参照に使用 repeat 1,_cnt //CalcVarSumで同じものを2回計算させないようにここで保持 varsum = CalcVarSum(mmaxsave@,cnt-1,_cnt-1) //CompareValueでif文2つを1つに短縮 if ( CompareValue(varsum,musicplace@+2,mmaxsave@(cnt)+varsum) ) { pos 0,0 color //0,0,0を省略したぶん、少し容量が・・・どうでもいいか(・ω・) mes ""+categmoji@(cnt) } // loop loop // return #global /* MainFuncの前に、"mmaxsave"と"musicplace"と"categmoji"の宣言と適切な処理をしておくこと */ kazu = 5 //ここで任意の"kazu"を指定 MainFunc kazu

テストランはしてないので間違いがあってもご愛嬌(ノ・ω・ヽ)
#moduleにする意味はないので、if(0)とかに置き換えてもらってもイインデスヨ
なんか結果的にごちゃごちゃしてしまった感は否めない・・・。



SqOc

リンク

2015/6/15(Mon) 16:44:20|NO.69797

KOMARIさんありがとうございます!!
解決しました!!
一応スクリプトを
複雑になってしまいましたがw

//mmcntの初期設定 mmscnt=2 repeat categorymax-1,0 //mmsfcategm,mmsfcategの初期化 mmsfcategm=0 mmsfcateg=0 repeat mmscnt-1,1 mmsfcategm=mmsfcategm+mmaxsave(cnt) loop repeat mmscnt,1 mmsfcateg=mmsfcateg+mmaxsave(cnt) loop repeat 1,mmscnt if mmsfcategm<musicplace+2{ if musicplace+2<=mmsfcateg{ color 0,150,255 boxf 15,50,225,100 pos 15,60:color 255,255,255:font msgothic,30 mes ""+categmoji(cnt)+"" } } loop mmscnt+1 loop



SqOc

リンク

2015/6/15(Mon) 16:44:53|NO.69798

解決



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