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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0427
fortunehill知ってると便利な豆。5解決


fortunehill

リンク

2011/4/27(Wed) 16:34:08|NO.38724

 ひょんな事からHSP-TVに書き込める様になったので
その切っ掛けになった事と2点書いてみました。
(もっと簡単で便利な豆あったら教え合いませんか?


/* repeat〜loopのカウンター変数 */ mref _Cx,68 #define ctype _Ct(%1=0) _Cx(66+limit(looplev-%1,0,31)*4) repeat 2 repeat 3 repeat 4 mes strf("%d %d %d",_Ct(2),_Ct(1),_Ct(0)) loop loop loop /* screenIDからhwnd */ mref _Bm,96+0 :pos 200,0 :mes "Screen(0)->hwnd = "+_Bm(13) /* hwndからscreenID */ #uselib "USER32.DLL" #cfunc global GetWindowLongA "GetWindowLongA" sptr,sptr #define ctype _Sn(%1=hwnd) GetWindowLongA(%1,-21) screen 9,,,2 :gsel 0 mref _Bm,96+9 :mes "Screen(9)->hwnd = "+_Bm(13) :mes "hwnd->ScreenID = "+_Sn(_Bm(13))



この記事に返信する


KA

リンク

2011/4/27(Wed) 20:20:41|NO.38731

切っ掛けと思われる部分は

repeat 2 A=cnt repeat 3 B=cnt repeat 4 C=cnt mes "A="+A+" B="+B+" C="+C loop loop loop
で、十分だと思いますが・・・。

可読性を難しくしない事も「豆」です。



ORZ

リンク

2011/4/27(Wed) 21:50:33|NO.38738

じゃあHSP関連書籍にまつわる豆知識を。全体的に私見まみれ。
・いまはどうだかとんとわからんが、昔のHSP本では

cn2=cnt
 という風に命名していた。cnt→cn2→cn3...という風に増えていってほしいみたいだ。

・『HSP2.6ゲームプログラミングクックブック』のソースはまともにインデント
 されてない物があり、どえらく見づらいので入門向けとはいかない。

・同じくゲームプログラミングクックブックのタイピングの絵がちょっとエロい。
 非常にいい傾向だと思う。

・『HSPではじめるCGI以下略』は子供のおもちゃとして自前のWebサーバーを用意して
 MySQLをぶっこめとか要求するので相当に敷居が高く、購読した子供達に
 深い絶望を振りまいたことだろう。

・10年前の本になってしまうが、『HSP2.55スクリプトプログラミング逆引きテクニック』
 はトップクラスにタメなる。これと2.55入門本を再販すれば掲示板の質問は
 4割弱削減され、計画停電対策にもなるしCO2も減るしいいことばかり起きるだろう。

・エンブレから出た『無料ツールでゲームプログラミング HSP編』もコストパフォーマンスが
 よく、きちんと勉強すればさらに掲示板の質問が2割は減少する。
 相変わらず絵がカワイイなチキショー

・最近出た本は何かこう、愛とか情熱が薄れている気がしてならない。古文書をアマゾソで
 入手すると、隣で新しい本を読んで唸っている友達を出しぬけるかもしれない。

・最近出た本の中では、逆引き辞典は割と良い感じがする。



fortunehill

リンク

2011/4/28(Thu) 06:06:55|NO.38752

 趣味レベルだと学習した時期や言語や程度で
変数名命名規則や定石が異なりますね。

入れ子の雑用変数はi,j,kだとか (判りやすい名前にしなさい)
字下げしないと見にくいだろうとか (一画面に収めたい)
マルチステートメントは見ずらいだろうとか(行数が増えるのが嫌)
GOTO使っちゃ駄目だろとか (制御文はIFとGOTOだけでいい)
何で同じ処理何回も書くの (ファンクション・サブルーチン面倒だから)
みたいな感じでしょうか。



/* UNIX系のセパレーターの方が便利かも */ /* 但しAPIによってまれに認識されない場合もある */ picload dirinfo(1)+"/sample/demo/logop.bmp",1 /* DLLが使用可能かどうか反射的に知る */ #uselib "user32.dll" #func global IsWindow "IsWindow" sptr #func global IsWindows "IsWindows" sptr pos 400,0 :mes "IsWindow -> "+varptr(IsWindow) :mes "IsWindows -> "+varptr(IsWindows) /* SYSTEMと言う予約語 (インタープリター時代の名残でしょうか?)*/ :mes "system -> "+system



info

リンク

2011/4/28(Thu) 12:19:58|NO.38762

*ローカル変数

オーバーヘッドを気にしない限り。使用メモリを最小限に抑えることができる。


#module #deffunc func_b local a1 , local a2 mes strf("\tfunc_b : a1 = %08x : a2 = %08x",varptr(a1),varptr(a2)) return #deffunc func_a local v1 , local v2 , local v3 mes strf("\tfunc_a : v1 = %08x : v2 = %08x : v3 = %08x",varptr(v1),varptr(v2),varptr(v3)) func_b return #global mes "func_b呼び出しの際のローカル変数のポインタ" func_b mes "func_a呼び出しの際のローカル変数のポインタ" func_a



fortunehill

リンク

2011/4/29(Fri) 12:16:20|NO.38794

ローカル変数はファンクション中で再定義出来ますね。
(根拠のない固定観念で出来ないと思い込んでいた、と言うより今までやらなかった)


#module #deffunc tes local ii,local ss dim ii,3 sdim ss,3 repeat 3 :ii(cnt) = rnd(100) :ss(cnt) = ""+rnd(100) :loop return ""+ii(1)+" - "+ss(1) #global tes mes stat mes refstr



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