投稿
ASA fusuian
SPROTでアナログ時計を作ってみようと思い立ちました! まずは秒針を表示。
12そうだね
プレイ済み
返信[1]
親投稿
ASA fusuian
なんか軸がズレてる感じなので、GCIRCLEで中心を表示。 やっぱり!てなわけで、SPHOMEとSPSCALEを組み合わせて調整。
0そうだね
プレイ済み
返信[2]
親投稿
ASA fusuian
TIME$(タイムドル)で、現在の時刻が取れます。 "時:分:秒"形式の文字列で、右側の二ケタ分が秒なので、RIGHT$(ライトドル)で取り出します。 文字列のままでは計算ができないので、VAL(バル)で数値に変換します。 VALはVALUE(バリュー)=値の略称ですね。 これで変数SEC(セク、SECOND 秒を略した)に0~59の現在秒が取れます。 SPROT(エスピーロット、SPRITE ROTATEの略称)の角度は0~360で指定するので、SECに6をかけます。 おお!なんか時計っぽい!
0そうだね
プレイ済み
返信[3]
親投稿
ASA fusuian
現状こんな画面。
0そうだね
プレイ済み
返信[4]
親投稿
ASA fusuian
同じように長針を作ります。 スプライト番号が1なのに気をつけて、秒針のコードをうまくコピペしましょう。 カギはMID$(ミッドドル、MIDDLE 真ん中の略称)でT$から分を取り出すところ。 MID$(T$,3,2)…「0から数えて」3文字めから、2文字取り出しています。
0そうだね
プレイ済み
返信[5]
親投稿
ASA fusuian
短針もほぼ同じ。スプライト番号は2で、SPHOMEとSPSCALEの値が現物合わせで変わって、T$の左の2文字をHOUR(アワー、時)に入れます。 SPROTの角度は360÷12=30をかけます。午後もこれでOK。
0そうだね
プレイ済み
返信[6]
親投稿
ASA fusuian
完成!いやちょっと待て。短針のアナログ感が足りなくないか。 8:30には、短針も8時と9時の間を指させたいねえ。
0そうだね
プレイ済み
返信[7]
親投稿
ASA fusuian
HOURをそのままSPROTに渡すんじゃなくて、MINを加えましょう。 HOUR×60で分単位に変換して、MINを足した値を新しい変数HM(Hour Minuteを略した)に入れます。 すると、12×60=720なので、HM÷2をSPROTに渡すと…
0そうだね
プレイ済み
返信[8]
親投稿
ASA fusuian
やった!朝メシにしよう!
0そうだね
プレイ済み
返信[9]
親投稿
ASA fusuian
おなかもふくれたので背景と文字盤をつけます。 10~12時はHEX$(ヘックスドル、HEXADECIMAL ヘキサデシマル=16進数の略称)を使ってサッとA,B,C時にしました。 HEX$が返す文字をASC(アスク、ASCII アスキーの略称)にかけると文字コードが取れます。 数字、アルファベットの大文字、一部の記号は、そのままスプライトの定義番号にできます。これ小技。 こうして作ったスプライトを、三角関数で外周にぐるっと置きます。
0そうだね
プレイ済み
返信[10]
親投稿
ASA fusuian
うーんちょっと違う。三角関数の0°は3時の方向か。
0そうだね
プレイ済み
返信[11]
親投稿
ASA fusuian
16行で、Aの初期値を1時の方向にセットすれば…
0そうだね
プレイ済み
返信[12]
親投稿
ASA fusuian
できた!
0そうだね
プレイ済み
返信[13]
親投稿
ASA fusuian
ふつうアナログ時計というと文字盤の要領で、三角関数でGLINEなんか使うところですが、回転と拡大機能が強化されたプチコン3号なら、ほぼSPROTだけで作れるんじゃないかというアイデアでした。 小さな時計に改造すれば、OSもどきプログラムなどに追加できると思います。
0そうだね
プレイ済み
返信[14]
親投稿
三角関数を使わないでアナログ時計を作る発想は面白いなと思いました~。 ただ文字盤のところで三角関数が出てきて少し残念だったので、文字盤をこのやり方にすればどうかなと思いました。
1そうだね
プレイ済み
返信[15]
親投稿
ASA fusuian
これは技ですね!あとで試してみます!
0そうだね
プレイ済み
返信[16]
親投稿
たまたま最近、SPLINKとSPANIMをつかって自機のまわりをグルグル回るオプションみたいな動きをさせるのを試してみてたんで、もしかしてこのやり方が使えるんじゃないかな?って思って試してみたら出来たみたいな感じでした〜
0そうだね
プレイ済み