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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0429
hatterメルマガをやってみようかと...6解決


hatter

リンク

2010/4/29(Thu) 15:35:52|NO.32385

ちょっとメルマガをやってみようかと意気込んでみました。
まあ、ちゃんと続けれるかはどうかは分かりませんけどHSPのミニスクリプトを
毎日配信していこうかと思っています。気になる方は以下をご覧ください。

http://www.mag2.com/m/0001131950.html

なんかアイディアがありましたら教えてください!!
以上宣伝チックな宣伝でした。



この記事に返信する


gm

リンク

2010/4/30(Fri) 00:11:09|NO.32392

すいません。テトリス、インベーダーゲーム、過去ログの検索可能(現在可)。
私が読み慣れていないからと思いますがきれいなコードの書き方。
エラー処理、例外処理、到達できないコードなどを希望します。



テック

リンク

2010/5/1(Sat) 11:57:32|NO.32402

>ちょっとメルマガをやってみようかと意気込んでみました。
hatterさん、メルマガを見させてもらいました。
なかなかいい感じだと思います。
登録するかどうかは、もう少し考えてみようと思います。

>エラー処理、例外処理、到達できないコードなどを希望します。
gmさん、例外処理なら「HSP 例外」でググればありましたよ。
HSPには例外処理機構が無いので、マクロで実装していました。
↓以下参考URL
http://ja.doukaku.org/comment/8783/

稚拙なスクリプトですが、確認用にスクリプトを作成したので
載せておきます。
(ほんとは、Java準拠の形式にしたかったのですが、
余計なもの[try_end]が付いちゃいました^^;)
おそらくもっと上手く作れるのだと思います。
よろしければご教授お願いいたしますm(__)mペコリ


//==================================================================================================== // ファイル名:SampleHsp000.hsp // 内   容:HSP用例外処理機構 // 作 成 者:テック // 更 新 者:テック // 作 成 日:2010/05/01 // 更 新 日:2010/05/01 // 履   歴:2010/05/01 新規作成 // メ   モ:特殊マクロについて //       詳しくは、HSP Document Libraryの#defineのページにて //       マクロ:機能 //       %t :タグ名を設定する //       %n :ユニークなラベル名を生成する //       %i :ユニークなラベル名を生成し、スタックに積む //       %o :スタックに積まれた文字列を取り出す //       %p :スタックに積まれた文字列を取り出す(スタック維持) //       %s :引数パラメータをスタックに積む //       %c :改行を行う //==================================================================================================== // コンパイル時の設定を行う #cmpopt ppout 1 // プリプロセッサファイルを出力する //==================== マクロの宣言 ====================// // try文(ユニークなラベル名を生成し、スタックに積む。 //  かつ 必ず通るif文を定義する) //  スタック0(%p0):throw文のパラメータ保持 //  スタック1(%p1):ユニークなラベル名 #define global try %tExceptionHandle %i0 %i0 if(1) // try_end文(スタックを維持しながら、ラベルを生成する) #define global try_end %tExceptionHandle *%p1 %c // finally文(スタックから展開せず取り出し、必ず通るif文を定義する) #define global finally %tExceptionHandle %o0 %o0 if(1) // catch文(throwされた型が同じ場合に通るif文を定義する) #define global ctype catch(%1, %2) %tExceptionHandle \ %2 = %p0 %c \ if (vartype(%p0) == vartype("%1")) // throw文(スタック0に引数を設定し、ラベルにジャンプする) #define global throw(%1) %tExceptionHandle \ %p0 = %1 %c \ goto *%p1 %c // HSPのエントリーポイント // 引数 //  なし // 戻り値 //  なし try { mes "try1" throw 2147256 } try_end catch(int, nException) { mes "int : " + nException } catch(str, strException) { mes "str : " + strException } finally { mes "finally1" } try { mes "try2" // throw 2147256 throw "Test" } try_end catch(int, nException) { mes "int : " + nException } catch(str, strException) { mes "str : " + strException } finally { mes "finally2" } stop



木村

リンク

2010/5/2(Sun) 03:34:46|NO.32421

>>ちょっとメルマガをやってみようかと意気込んでみました。
 hatter様、メールマガジン拝見させていただきました。講座3回目のRPG基盤スクリプトは
面白かったです。これが一月経った暁にはどんなスクリプトになるか楽しみです。

 ところでgmさん。
>>到達できないコード
って、どういう意味なのでしょうか。無wait無限ループ、dialog大量発生、end無しonexit、
等々考えただけでも悪寒が走るようなソースしか思いつかないのですが。



gm

リンク

2010/5/2(Sun) 07:38:57|NO.32422

>>到達できないコードって、どういう意味なのでしょうか。

以下のようなコードを実行したら警告くらい出てほしいですよ。
複雑になったらどういうのが到達できないかわからなくなってきます。



goto *lab1 // The following statements cannot be reached: i = 9 i++ *lab1 mes "iの値を使うことができません。"

あと、多言語対応ソフトの作り方なんかも少し希望。
メール見ないタイプなので、メルマガちゃんと過去ログを読んでます。



u

リンク

2010/5/2(Sun) 09:49:53|NO.32423

アドバイスという形で思った事をいくつか…。

まず、mes命令から始めるという事はある程度初心者の読者を想定しているものと思われますが、
それにしてはスクリプトが少し不親切過ぎるのではないでしょうか。
color,boxfはおろかif命令も教えないのはちょっとおかしい気がします。
そもそも順序からすると色を表示するソースよりmes命令でのエスケープ,複数行にかけての表示法を第一回に添えておくべきではないかと思います。

またカラー指定は16進数単位で行っていますが、これらも10進数単位で表すのが一般的と言えます。
更にソースの方にも口を挟むと、ある程度はコメントを使った方が分かりやすいと思うのですがどうでしょうか。

とりあえずは集めたい読者のユーザー層を限定し、それらの層に絞った分かりやすい解説の仕方を目指していくべきだと思います。



hatter

リンク

2010/5/2(Sun) 11:33:50|NO.32424

> またカラー指定は16進数単位で行っていますが、これらも10進数単位で表すのが一般的と言えます。
それは分かってます。それに関しては注釈を添えたつもりでしたけど。
> 更にソースの方にも口を挟むと、ある程度はコメントを使った方が分かりやすいと思うのですがどうでしょうか。
そうですね。説明をするぐらいならコメントを挟んだ方が分かりやすいですね。

> color,boxfはおろかif命令も教えないのはちょっとおかしい気がします。
> そもそも順序からすると色を表示するソースよりmes命令でのエスケープ,複数行にかけての表示法を
> 第一回に添えておくべきではないかと思います。
> とりあえずは集めたい読者のユーザー層を限定し、それらの層に絞った分かりやすい解説の仕方を目指していくべきだと思います。
はい。なんか、最初は初心者向けで書いているように思いきや結構、吹っ飛んだ説明をしてましたね。
色々と指摘ありがとうございました。



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