HSP | ●の周りを点がぐるぐる回るサンプル (東方地霊殿風)
HSP | ●の周りを点がぐるぐる回るサンプル (東方地霊殿風)
a_pos=320,440
a_angle=0.0,M_PI/2,M_PI,M_PI*3/2
*main
redraw 0
color 255,255,255 : boxf
stick key,15
if key&1 : a_pos(0)-4 : if a_pos(0)<20 : a_pos(0)=20
if key&2 : a_pos(1)-4 : if a_pos(1)<20 : a_pos(1)=20
if key&4 : a_pos(0)+4 : if a_pos(0)>620 : a_pos(0)=620
if key&8 : a_pos(1)+4 : if a_pos(1)>460 : a_pos(1)=460
a_angle(0)+0.07
a_angle(1)+0.07
a_angle(2)+0.07
a_angle(3)+0.07
color 255 : circle a_pos(0)-15,a_pos(1)-15,a_pos(0)+15,a_pos(1)+15
color ,,255
repeat 4
circle (a_pos(0)+sin(a_angle(cnt))*50+640)\640-5,a_pos(1)+cos(a_angle(cnt))*50-5,(a_pos(0)+sin(a_angle(cnt))*50+640)\640+5,a_pos(1)+cos(a_angle(cnt))*50+5
loop
redraw
await 15
goto *main
追加
title "操作方法 カーソルキ-:自機移動 Z,Xキー:点の個数を減らしたり増やしたり"
// 初期設定
a_pos=320,440
a_angle=0.0
a_mode=0
key_enable=0,0
// メインループ
*main
redraw 0
color 255,255,255 : boxf
color 200,200,200
pos 160,120 : font "MS Pゴシック",200 : mes ""+a_mode+"個"
// キーをチェックして自機移動
stick key,15
if key&1 : a_pos(0)-4 : if a_pos(0)<20 : a_pos(0)=20
if key&2 : a_pos(1)-4 : if a_pos(1)<20 : a_pos(1)=20
if key&4 : a_pos(0)+4 : if a_pos(0)>620 : a_pos(0)=620
if key&8 : a_pos(1)+4 : if a_pos(1)>460 : a_pos(1)=460
// 回転させる
repeat a_mode
a_angle(cnt)+0.07
loop
// 自機と周りの点移動
color 255 : circle a_pos(0)-15,a_pos(1)-15,a_pos(0)+15,a_pos(1)+15
color ,,255
repeat a_mode
circle (a_pos(0)+sin(a_angle(cnt))*50+640)\640-5,a_pos(1)+cos(a_angle(cnt))*50-5,(a_pos(0)+sin(a_angle(cnt))*50+640)\640+5,a_pos(1)+cos(a_angle(cnt))*50+5
loop
// Z,X keyで点の個数切り替え。押しっぱなしでも1つづつしか増減しない
getkey g_key,'Z'
if g_key=1 {
if key_enable(0)=0 {
a_mode-
if a_mode<0 : a_mode=0
gosub *mode_shift
}
key_enable(0)=1
} else {
key_enable(0)=0
}
getkey g_key,'X'
if g_key=1 {
if key_enable(1)=0 {
a_mode+
gosub *mode_shift
}
key_enable(1)=1
} else {
key_enable(1)=0
}
redraw
await 15
goto *main
// 個数変更時に点の配置変更
*mode_shift
repeat a_mode
a_angle(cnt)=M_PI*2*cnt/a_mode
loop
return
東方地霊殿風ってそういうことかww
実行してみて納得しましたww
いいですね!sinとcosの例としても良いサンプルです。
¥はマイナスにすると変な答えになってしまうので^^;
そうです、法の数だけ足してやればOKです。
ほお・・・
>Cookiesさん
ありがとうございます!
さらに地霊殿ぽく (?) 個数変更できるようにしました!
>フェルミウム湾さん
昔の私はsin,cosがよくわかっていなかったので回転どうやるんだろうとか思っていました!sin,cos使うと一発ですね!
「負の数\数」とやると「-(絶対値\数)」になっちゃうみたいです…。でもまあそもそも負の数の割り算のあまりなんてやったことないし、あるとしても定義しだいになるからしようがないですね…。
>橙さん
橙さんもHSPやりましょうよ!英語だけどC言語とかのコンパイラの面倒くさい処理とかは勝手にやってくれるので楽ですよ!
負の数であまりを出すのは意外とややこしく、
間違って書かれている文書もあるので注意が必要です。
Windowsの電卓でも間違ってる(?)みたいなので驚きましたが……
例えば-11÷3を計算するとき、
-3あまり-2とするのは間違いです。
あまりというのはあまった数のことなので、負になっちゃだめなんです。
よって、-11÷3=-4あまり1となります。
商を減らしてあまりは正にしなければならないのです。
このことで演算結果がおかしくなっちゃうんだと思います。
>>フェルミウム湾さん
へー。そうだったんですか。
一つ賢くなれました!ww
さすが数学のフェルミウム湾さん!
たしかにそういうことになりますね。
割られる数=a商+あまり
0≦あまり<割られる数
はふのかずでも成り立つんですね!一瞬気が付きませんでした!(一瞬だけ…)