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


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0716
クロRainBow.as 虹色を使えるモジュール3解決


クロ

リンク

2018/7/16(Mon) 01:10:10|NO.84788


;RainBow.as 虹色を使えるようになります made by kuro /*|---------------------------------------------------------------------------------------------| | | | RainBowReset ---最初に使用してください | | | | | | Raibow p1 | | | | p1 = 虹色の変化の速さ(await 16のときに1.0だと丁度いい?) | | | | p1の値が大きすぎると虹色にならないので調整してください | | | | 虹色の「R」,「G」,「B」の値はそれぞれ、「R@rb」,「G@rb」,「B@rb」に返されます | | | |---------------------------------------------------------------------------------------------|*/ #module rb #deffunc RainBowReset ;虹色をリセット R=128 : G=0 : B=0 Red=1 ;リセット用 Orange=0 Yellow=0 Green=0 LightBlue=0 Blue=0 Purple=0 Red2=0 Return #deffunc RainBow double Z_Change_rate ;変化の速さ(調整可) Passing = 1 R=double(R) G=double(G) B=double(B) Z = 256.0*Z_Change_rate ;-------------------------------------------------------------------; IF Red=1 { R=R+Z/127 : G=0 : B=0 } ;赤 255,0,0 IF (Red=1)&(R>255) : R=255 :Orange=1 : Red=0 : Return ;-------------------------------------------------------------------; IF Orange=1 { R=255 : G=G+Z/90 : B=0 } ;橙 255,165,0 IF (Orange=1)&(G>165) : G=165 : Orange=0 : Yellow=1 : Return ;-------------------------------------------------------------------; IF Yellow=1 { R=255 : G=G+Z/165 : B=0 } ;黄 255,255,0 IF (Yellow=1)&(G>255) : G=255 : Yellow=0 : Green=1 : Return ;-------------------------------------------------------------------; IF Green=1 { R=R-Z/255*4 : G=G-Z/105 : B=0 } ;緑 0,150,0 IF (Green=1)&(R<0) : R=0 IF (Green=1)&(G<150) : G=150 IF (Green=1)&(R=0)&(G=150) : Green=0 : LightBlue=1 : Return ;-------------------------------------------------------------------; IF LightBlue=1 { R=0 : G=G+Z/150 : B=B+Z/255*4 } ;水 0,255,255 IF (LightBlue=1)&(G>255) : G=255 IF (LightBlue=1)&(B>255) : B=255 IF (LightBlue=1)&(G=255)&(B=255) :LightBlue=0 : Blue=1 : Return ;-------------------------------------------------------------------; IF Blue=1 { R=0 : G=G-Z/255*4 : B=255 } ;青 0,0,255 IF (Blue=1)&(G<0) : G=0 IF (Blue=1)&(B>255) : B=255 IF (Blue=1)&(G=0)&(B=255) :Blue=0 : Purple=1 : Return ;-------------------------------------------------------------------; IF Purple=1 { R=R+Z/128 : G=0 : B=B-Z/127*2 } ;紫 128,0,128 IF (Purple=1)&(R>128) : R=128 IF (Purple=1)&(B<128) : B=128 IF (Purple=1)&(R=128)&(B=128) : Purple=0 : Red2=1 : Return ;-------------------------------------------------------------------; IF Red2=1 { R=R+Z/127 : G=0 : B=B-Z/128 } ;赤2度目以降 IF (Red2=1)&(R>255) : R=255 IF (Red2=1)&(B<0) : B=0 IF (Red2=1)&(R=255)&(B=0) : Red2=0 : Orange=1 : Return ;-------------------------------------------------------------------; Return ;============================================= #global



この記事に返信する


クロ

リンク

2018/7/16(Mon) 01:11:44|NO.84789

サンプルです


#include "RainBow.as" X=500 Y=200 screen 0,X,Y,,0,0 RainBowReset repeat redraw 0 RainBow 0.5 color R@rb,G@rb,B@rb Line X-1,-1,X-1,Y pos 0,0 gcopy 0,1,0,X,Y ;スクロール await 8 redraw 1 loop



クロ

リンク

2018/7/16(Mon) 01:19:05|NO.84790

HSVcolor命令でも似たようなことができますが、緑と青の間隔を調整して、緑をより濃い色にしました



クロ

リンク

2018/7/16(Mon) 04:22:01|NO.84791

色の変化具合を正確に揃えました。
虹色の初期の色を255,0,0にしました。

;RainBow.as 虹色を使えるようになります made by kuro(ver.1.0) /*|---------------------------------------------------------------------------------------------| | | | RainBowReset ---最初に使用してください | | | | | | Raibow p1 | | | | p1 = 虹色の変化の速さをp1倍にします | | | | p1の値が大きすぎると虹色にならないので調整してください | | | | 虹色の「R」,「G」,「B」の値はそれぞれ、「R@rb」,「G@rb」,「B@rb」で取得できます | | | |---------------------------------------------------------------------------------------------|*/ #module rb #deffunc RainBowReset ;最初にRaibowReset命令をしてください R=255 : G=0 : B=0 Red=1 Orange=0 Yellow=0   Green=0 LightBlue=0 Blue=0 Purple=0 Return ;============================================= #deffunc RainBow double Change_rate ;変化の速さ(調整可) R=double(R) G=double(G) B=double(B) ;-------------------------------------------------------------------; IF Red=1 { R=R+127.0/128*Change_rate G=0 B=B-1.0*Change_rate } ;赤 255,0,0 IF (Red=1)&(R>=255)&(B<=0) : R=255 : B=0 : Orange=1 : Red=0 : Return ;-------------------------------------------------------------------; IF Orange=1 { R=255 G=G+165.0/128*Change_rate B=0 } ;橙 255,165,0 IF (Orange=1)&(G>=165) : G=165 : Orange=0 : Yellow=1 : Return ;-------------------------------------------------------------------; IF Yellow=1 { R=255 G=G+90.0/128*Change_rate B=0 } ;黄 255,255,0 IF (Yellow=1)&(G>=255) : G=255 : Yellow=0 : Green=1 : Return ;-------------------------------------------------------------------;   IF Green=1 { R=R-255.0/128*Change_rate G=G-105.0/128*Change_rate B=0 } ;緑 0,150,0 IF (Green=1)&(R<=0) : R=0 IF (Green=1)&(G<=150) : G=150 IF (Green=1)&(R=0)&(G=150) : Green=0 : LightBlue=1 : Return ;-------------------------------------------------------------------; IF LightBlue=1 { R=0 G=G+105.0/128*Change_rate B=B+255.0/128*Change_rate } ;水 0,255,255 IF (LightBlue=1)&(G>=255) : G=255 IF (LightBlue=1)&(B>=255) : B=255 IF (LightBlue=1)&(G=255)&(B=255) :LightBlue=0 : Blue=1 : Return ;-------------------------------------------------------------------; IF Blue=1 { R=0 G=G-255.0/128*Change_rate B=255 } ;青 0,0,255 IF (Blue=1)&(G<=0) : G=0 IF (Blue=1)&(B>=255) : B=255 IF (Blue=1)&(G=0)&(B=255) :Blue=0 : Purple=1 : Return ;-------------------------------------------------------------------; IF Purple=1 { R=R+1.0*Change_rate G=0 B=B-1.0*Change_rate } ;紫 128,0,128 IF (Purple=1)&(R>=128) : R=128 IF (Purple=1)&(B<=128) : B=128 IF (Purple=1)&(R=128)&(B=128) : Purple=0 : Red=1 : Return ;-------------------------------------------------------------------; Return ;============================================= #global



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