CALENDAR
S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031
<< August 2019 >>
ARCHIVES
CATEGORIES
RECOMMEND
RECOMMEND
RECOMMEND
WiiRemoteプログラミング
WiiRemoteプログラミング (JUGEMレビュー »)
白井 暁彦,小坂 崇之,くるくる研究室,木村 秀敬
RECOMMEND
RECOMMEND
RECOMMEND
MOBILE
qrcode
<< 迷走は続きます | main | 5年も放置してしまいましたが >>
HSP初体験
 
 HSP - Hot Soup Processor - だそうです。
 2013年春まで完全ノーチェックでした。最近になって同僚の若者に教えられました。「え?使ってないの?」ってな感じです(笑)。要するにプログラム言語。最近この手のローカル環境で動くものは触ってないなあ、ということで、若者に負けじと早速インストール。
 うーん、ちょっと感動。その中身は、
 感動その1:GOTO文を30年ぶりに書いた(笑)
 感動その2:変数の宣言をしなくても使える
 感動その3:インタープリタ言語である(すぐ使える)
 感動その4:実行型ファイルに書き出すこともできる(実用でもある)
等、数え上げればきりがないです。思いっきりレトロな言語仕様。でも、けっこう使えちゃったりします。なかなか面白いです。



 で、早速なにか作ってみようと思いましたが、とりあえず以前Proce55ingで作った分子モデルをHSPで書き直してみました。
 いろいろ機能があるようなのですが、とりあえず今のスキルでは透明度は設定できませんでした。
;       分子運動のシュミレーションアニメーションモデル
;    2013.7.29 www.h2caster.net
;        <気体のモデル>
;

x1=0:y1=0 ; 画面左上の座標
x2=900:y2=640 ; 画面右下の座標

bnum=50  ; 分子の数
bspeed=20  ; 分子の速度(最大値)
randomize 

dim bsize,bnum    ;分子の大きさ
dim bx,bnum       ;分子のx座標
dim by,bnum       ;分子のy座標
dim bpx,bnum      ;分子のx方向加算値
dim bpy,bnum      ;分子のy方向加算値

; 分子モデルの生成
for i,1,bnum,1
bsize(i)=rnd(50)
bx(i)=rnd(x2)
by(i)=rnd(y2)
bpx(i)=bspeed/2-rnd(bspeed)
bpy(i)=bspeed/2-rnd(bspeed)
next

screen 0,x2,y2

*main
redraw 0 ;仮想スクリーンに描画
gradf 0,0,x2,y2,1,0,128 ; 画面クリア


; 分子の移動の描画
for i,1,bnum,1 ; 数分の分子を移動させるループ
;右方向へ移動している場合
if bpx(i) > 0 {
if bx(i) <= x2 : bx(i)=bx(i)+bpx(i)
if bx(i) > x2 : bpx(i)=0-bpx(i) : bx(i)=bx(i)+bpx(i)
}
;左方向へ移動している場合
if bpx(i) < 0 {
if bx(i) >= 0 : bx(i)=bx(i)+bpx(i)
if bx(i) < 0 : bpx(i)=0-bpx(i) : bx(i)=bx(i)+bpx(i)
}
;下方向へ移動している場合
if bpy(i) > 0 {
if by(i) <= y2 : by(i)=by(i)+bpy(i)
if by(i) > y2 : bpy(i)=0-bpy(i) : by(i)=by(i)+bpy(i)
}
;上方向へ移動している場合
if bpy(i) < 0 {
if by(i) >= 0 : by(i)=by(i)+bpy(i)
if by(i) < 0 : bpy(i)=0-bpy(i) : by(i)=by(i)+bpy(i)
}
next

; 分子を表示
for i,1,bnum,1
pos bx(i),by(i)
color 25,255,255
circle bx(i)-bsize(i)/2,by(i)-bsize(i)/2,bx(i)+bsize(i)/2,by(i)+bsize(i)/2
next

redraw 1 ; 実際のスクリーンに描画

stick key,0            ; 停止
if key&16 : stop
if key&2 : {
bspeed = bspeed + 5
for i,1,bnum,1
bpx(i)=bspeed/2-rnd(bspeed)
bpy(i)=bspeed/2-rnd(bspeed)
next
}
if key&8 : {
bspeed = bspeed - 5
for i,1,bnum,1
bpx(i)=bspeed/2-rnd(bspeed)
bpy(i)=bspeed/2-rnd(bspeed)
next
}
if key&1 : {
bnum = bnum + 20
for i,1,bnum,1
bsize(i)=rnd(50)
bx(i)=rnd(x2)
by(i)=rnd(y2)
bpx(i)=bspeed/2-rnd(bspeed)
bpy(i)=bspeed/2-rnd(bspeed)
next
}
if key&4 : {
bnum = bnum - 20
for i,1,bnum,1
bsize(i)=rnd(50)
bx(i)=rnd(x2)
by(i)=rnd(y2)
bpx(i)=bspeed/2-rnd(bspeed)
bpy(i)=bspeed/2-rnd(bspeed)
next
}




goto *main
 
| HSP | 18:38 | comments(0) | trackbacks(0) | pookmark |
コメント
コメントする









この記事のトラックバックURL
http://blog.h2caster.net/trackback/1068717
トラックバック