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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0408
ヒラギノ行き詰まってしましました。16未解決


ヒラギノ

リンク

2014/4/8(Tue) 12:59:55|NO.61459

今、HSP エディタを作っています。
しかし、機能を付け加えすぎたのか、僕でもよく分からなくなってしましました。

ソースコードを公開するので、もしよければ、悪いところなど教えて頂けたらうれしいです。

https://dl.dropboxusercontent.com/u/88821392/Editor.zip

上記のファイルに含まれる、画像は、勝手に再配布したりしないでくださいね。

『hsp3.exe』『hspcmp.dll』『hsp3debug.dll』のライセンス
Copyright (c) 1997-2013 ONION software

command.txt は、YSR さんの作ったものを、一部編集して作ったものです。
(http://hsp.tv/play/pforum.php?mode=all&num=61416)

mod_lbgscr.as は、http://d.hatena.ne.jp/As_hsp/20091215/1260845837 に公開せれていたものを、編集して作ったものです。

PSD ファイルはPhotoshop じゃないと、開けません。



この記事に返信する


とおりすがり

リンク

2014/4/8(Tue) 15:29:33|NO.61460

見やすいデザインですね。タッチパネルで使う前提でしょうか?
ご自分で使ってみるとあれこれと「ああしたい」「こうしたほうがいい」というのが出て来ると思いますよ。
とりあえず、自分が使って便利なエディタを目指してみてはどうでしょうか。

あと、バグ?の報告ですが
長いスクリプトを読み込ませると、60行ぐらいスクロールしたところで動作が停止してしまいます。
(win VISTAと win 7環境)



check

リンク

2014/4/8(Tue) 15:29:33|NO.61461

何がどうなってよく分からないのかを説明してもらわないと、的確なアドバイスはできないぞ。
取り敢えず、処理ごとにいくつかのファイルに分けてみたらどうだ?
また、HSPには#deffunc、#defcfuncマクロで擬似関数が実装されている。
#module〜#globalで囲んだ中に#deffuncで必要な処理を分けると分かりやすい。

デフォルトのフォントが"monaco"だと、インストールされていない場合使えないので、
インストールされているフォントを確認してあれば使い、なければ別のフォントを使うようにしたらどうだ?

バグ:
・新規作成のタブを開くと、文字列があった以降の色が全て文字列と同じ色になってしまう。
・num = int(s) など、()が入ると"int"の部分が色分けされなくなる。

また、エディタの最小化と最大化ができるといいな。


余談だが、キーボードのスペルはkeyboardだ。
いくつかの箇所で間違っているところがある。



ヒラギノ

リンク

2014/4/8(Tue) 16:18:52|NO.61463

>とおりすがりさん
ご報告ありがとうございます。
たぶん、ソースコードの81~87行のループが原因かもしれませんが、それを外すと、色分けができなくなってしまうので、、、

>check さん
ご報告ありがとうございます。
81~87行のループが諸悪の根源です。Tab キーやスペースを押しても、フリーズしてしまいます。
あとは、自動入力補完機能も使い物になるレベルじゃありません。
キャレットが1000行目にあるときは、入力補完のウィンドウが、24024 px の位置に移動してしまったり、スクロールを取得できなかったりするんです。

どうでもいいですが、960*600(つまり、1.6 : 1)は黄金比になっていて、この比率を変えるつもりはありません。
ディスプレイが、1 : 1.6(本当は、1 : 1.618......)の比率であればいいのですけど。



YSR

リンク

2014/4/8(Tue) 17:39:45|NO.61464

 デバッグ祭りと聞いて飛んできました。GUIが毎度ながら特徴的ですね。
 早速スクリプトエディタで実行しようとしたのですが、ファイルが広範囲に
ばら撒かれているせいか、どのファイルがあれば実行できるのか分かりづらいです。
試行錯誤した結果、
 ・http://chokuto.ifdef.jp/download/からhscallbk.dll一式
 ・http://www.hpp.be/Software/Footy2/Default.aspxからFooty2一式
をDLする必要があると分かりました(ややこしい……)。
 試してみると、自動補完のウィンドウの下一部が「消えている」上、
そのウィンドウが他画面をアクティブにしてもせり出すことがあり、
また、入力途中で一旦止めてから入力し直すと表示がおかしくなることがありました。
 そして、件の81〜87行目(説明付きの方では82〜88行目)ですが、
そもそも謎のマジックナンバーだらけな上、毎回全部検索するという仕様では
(HSPの速度においては)重くなるに決まっています。思うに、
 ・先頭文字で予め命令リストを分けておき、呼び出し時に適用する
 ・文章が変更されていない時には呼び出さない(既にそうしている可能性もありますが)
など、なんとか軽くするための方策を考える必要があるかと思われます。また、
このコードでは、cntが32以下は3回・33以上132以下は2回・133以上1384以下では1回だけ
Footy2AddEmphasisが呼び出されていますが、何気にバグの予感がします。

 ところでスペースやタブを押したり、ファイルを開くだけでフリーズするのは
一体何が原因なんでしょう……?



KA

リンク

2014/4/8(Tue) 18:50:54|NO.61465

>>機能を付け加えすぎたのか、僕でもよく分からなくなってしましました。

なら、最初から作り直すのが最善の方法です。
良く分からない物を、その場しのぎで切り抜けていると後にツケが回ってきます。

一回作れたのだから、それを見ながら整理して作り直します。
このとき、コピペで切り貼りは同じ間違いの元です。
最初から書き直すつもりでやりましょう。


以下蛇足
完成をあせるあまり、短期間で評価と改修を繰り返していると、
「あれ!なんでこうしてるんだ?」と分からなく成りますよ。

ある程度の改善点がまとまったら、じっくり考えながら修正した
方が良いと思います。



ヒラギノ

リンク

2014/4/8(Tue) 19:40:21|NO.61466

>YSR さん
ご報告ありがとうございます!

>DLする必要があると分かりました(ややこしい……)。
いつもすみません。つい、わすれてしまって;;

>試してみると、自動補完のウィンドウの下一部が「消えている」上、
Footy2 にフォーカスが移ると、oncmd 系の機能が動作しなくなり、結果「消える」という現象が起こってしまします。

>そのウィンドウが他画面をアクティブにしてもせり出すことがあり、
>また、入力途中で一旦止めてから入力し直すと表示がおかしくなることがありました。
自動補完のウィンドウは、常に、最前列に持ってこないと、メインのウインドウに邪魔されて、
隠れてしまうため、いまのところ、最前列に表示する。という方法しかありません。

>また、入力途中で一旦止めてから入力し直すと表示がおかしくなることがありました。
2文字以上入力して、1文字消す。などの操作を行うと、そうなる可能性があるようです。
ごめんなさい;;

>そして、件の81〜87行目(説明付きの方では82〜88行目)ですが、
>そもそも謎のマジックナンバーだらけな上、毎回全部検索するという仕様では
>(HSPの速度においては)重くなるに決まっています。
cnt <= 32 は "#~"系の命令、 cnt <= 132 はマクロ、cnt <= 1384 はその他の命令を色分けします。
確かに、重複していますね...

>ところでスペースやタブを押したり、ファイルを開くだけでフリーズするのは
>一体何が原因なんでしょう……?
return により、何度も81〜87行目が実行されていたことが、原因でした。
とりあえず、return をすべてstop に置き換えることで、解決しました。(解決といえるのでしょうか?)
とおりすがりさんの
>60行ぐらいスクロールしたところで動作が停止してしまいます。
も解決しました!



ヒラギノ

リンク

2014/4/8(Tue) 19:46:54|NO.61467

>KA さん
>その場しのぎで切り抜けていると

>とりあえず、return をすべてstop に置き換えることで
まさに、これのことですね。。。

KA さんの言うとうり、一からやり直すべきですよね。
入力補完機能以外は、よくできたと思っていたのですが。

アドバイスありがとうございます!



HIJIKI

リンク

2014/4/8(Tue) 20:02:42|NO.61468

個人的には、ソースコードをひとつのファイルに書くのではなく
初期化処理はこのファイル、計算処理はこのファイル、サブルーチンはこのファイル、
などという風に分けて書くと
「わけわからん」というような状況になりづらい(なっても脱出しやすい)気がします。

以下は一例です。

//[Main.hsp]
//全体を統括するメインソース(このファイルをコンパイルする) //ここで全体の流れを把握するので、このファイル自体にあれこれ処理は書かず、 //可能な限りシンプルに維持するのが「わけわからん」を防止するコツです。 #include "Module.hsp" #include "Init.hsp" stop //以下サブルーチン #include "Subroutine.hsp"
このようなメインファイルに対し、
実際の処理や計算は別のファイルに書いてあげます。
//[Module.hsp]
//モジュールをインクルードするところ #include "Module/xxx.hsp" #include "Module/yyy.hsp"
//[Init.hsp]
screen 0, 640, 480 //など、初期化処理
//[Subroutine.hsp]
*Subroutine1 //処理 return *Subroutine2 //処理 return

私はこういうような書き方をよくします。
これは一例ですので正解はありません。
ヒラギノさんが管理しやすいようなまとめ方をするのがよいとおもいます。
とにかく言いたかったことは、経験上
ファイルを分けると管理しやすいですよということでした。

しょーもないことですが、スレッド名の「しましました」は笑いましたw



ヒラギノ

リンク

2014/4/8(Tue) 20:46:17|NO.61469

>HIJIKI さん
なるほどです。check さんも仰っていたことですね。
こういう書き方をするときは、HSPDeveloper.NET などの、統合開発環境があれば、便利ですね。
そういうような、プログラムにしたいです!

>しょーもないことですが、スレッド名の「しましました」は笑いましたw
失礼しました。タイプミスをしてしまいました。



drksugi

リンク

2014/4/8(Tue) 21:48:27|NO.61470

こんばんは. drksugiです.

Editorを使ってみて目から鱗でした. 応援しています.
バージョンアップを待っていますので, 開発を諦めないでください.



ヒラギノ

リンク

2014/4/8(Tue) 22:37:24|NO.61471

>drksugi さん
HSPDeveloper.NET の開発をした方に褒められるとは思いませんでした!
ありがとうございます!とても、光栄です。

drksugi さんもがんばってください!

ちなみにですが、WIndows Vista 以降には、標準で「Consolas」という視認性の高いプログラミング用フォントが搭載されているそうなので、次からは、それを標準フォントにしたいと思います。
Windows XP は、明日でサポートが終了してしまいますね。XP の方も、Office をインストールすると、「Consolas」が手に入るそうです。



YSR

リンク

2014/4/8(Tue) 23:17:02|NO.61473

>「Consolas」という視認性の高いプログラミング用フォント
それは知りませんでした……(普段はVS以外はMSゴシックにしていたので)
早速変更して様子見しますねー



YSR

リンク

2014/4/8(Tue) 23:26:07|NO.61474

……すみません。どうも「Consolas」は日本語に完全対応というわけではないようです。
(秀丸エディタで切り替えたら警告が出た)
この中のフォントでライセンス的に同封できるものがあればいいんですがね……
http://m.designbits.jp/13051409/



ヒラギノ

リンク

2014/4/8(Tue) 23:56:03|NO.61480

>YSR さん
Footy2 では、

Footy2SetFontFace idFooty, FFM_ANSI_CHARSET,"Consolas", 1 Footy2SetFontFace idFooty, FFM_SHIFTJIS_CHARSET,"メイリオ", 1
というふうに、欧文フォントと和文フォントに分けて書くことができるので、エラーにはなりません(?)

見てはいけないサイトを見てしまいました。
http://pooh.gr.jp/?p=6324

Windows のフォントリンク機能を使うことで英語フォントの足りない部分を指定した日本語フォント
で補うことができるそうです。



YSR

リンク

2014/4/9(Wed) 08:27:32|NO.61493

>NO.61480
 いや、フォントリンクするだけではライセンスに触れるわけではありませんよ……?
(合成に使えると明記されてないフォントw含めて合成するとマズいだけで)
 現在はライセンスの都合上「合成」する必要があるRitcyフォントを使っています。
 と言うより、欧文部分と日本語部分を別々に設定できるということは、
コンフィグとして2種類を分けて設定できるようにできるわけですか?



ヒラギノ

リンク

2014/4/9(Wed) 12:55:38|NO.61497

>YSR さん
Footy2 の説明書を見る限り、別々に指定できるはずです。たぶんです><)

http://i.imgur.com/HjPAT67.jpg
欧文は「Consolas」、和文は、「ヒラギノ角ゴ」というフォントをしていしています。
windows だと、あまりきれいに見えません。。。



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