ひまわりユーザー プログラム掲示板 バックアップ
注意
ひまわりのススメ  □ ひまわり本家Home  □ 新着記事  □ 新規投稿  □ SEARCH  □ 参考プログラム集
ツリー表示

MESSAGE 新デジタル時計 /ミュージック ファイター(^o^)/ (02/08/13(Tue) 21:28) [1181]
......MESSAGE 激しく /yuk (02/08/14(Wed) 09:55) [1182]
............MESSAGE 新デジタル時計((改訂版)) /ミュージック ファイター(^o^)/ (02/08/14(Wed) 22:48) [1184]
..................MESSAGE ソースを短くするコツ。 /yuk (02/08/15(Thu) 01:47) [1187]


親記事 / ▼[ 1182 ]
NO.1181  新デジタル時計
□投稿者/ ミュージック ファイター(^o^)/ -(2002/08/13(Tue) 21:28:24)
□U R L/ http://isweb44.infoseek.co.jp/computer/jam-soft/
{---プログラム掲示板投稿フォーム---
【ソフト名】新デジタル時計 ((時-分Ver.))
【作 成 者】ミュージック ファイター(^o^)/
(連絡先:http://isweb44.infoseek.co.jp/computer/jam-soft/)
【種  別】フリーソフトウェア
【ひまわりのバージョン】Ver 1.52 1.52以上で実行して下さい
【転  載・改変運用】可
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】無
【コメント】
こんにちは。ミュージック ファイター(^o^)/です。
今回はデジタル時計のようなものを作りました。
何秒が表示されるものも作ったのですが、それは実行している
うちに無限のエラーがでます。ので、その部分は削除しました。
そのため秒が表示される部分が残っていますがすいません気にしないで下さい。
今回は行数が約2500行にもなってしまいました。
そのためソースを申し訳ありませんが、ホームページに掲載します。
実行する場合はその他の作業中のファイルは全て保存しておいてください。
何かあっても私は一切の責任は取れませんのでご了承下さい。
不都合があったら連絡下さい。 以上

      ↓以下に置いてあります↓
http://isweb44.infoseek.co.jp/computer/jam-soft/index/pro/digital.htm

それと、ある程度実行していると意味不明なエラーがでます。
申し訳ありません、本当はこういう事は自分で直すべきだと思うのですが、
エラーの意味がわかりません。分かったひとはこのレスに書きこんでください。
ので、実行したくなければそれでけっこうです。

---投稿フォームここまで---}



▲[ 1181 ] / ▼[ 1184 ]
NO.1182  激しく
□投稿者/ yuk -(2002/08/14(Wed) 09:55:28)
□U R L/ ../../
我が家では起動後約30分後くらいに「描画できません」みたいなエラーが出ました。
エラーの原因ですが、イメージの上に描画をしすぎたせい、かなぁ。
母艦の上に文字描画ってことは、つまり、母艦の上にデフォルトで乗っているイメージの上に文字描画している、と言うことなのです。(サポート掲示板や質問掲示板のすごく古い過去ログとか見てるとそういうことが載ってます。)

激しく直すとこんな感じになると思います。
「文字描画」よりも「表示」の方が速いので「表示」を使いつつ、見た目を同じにしました。
とりあえず、エラーにはなりません。
(見た目は同じだけど、これではまるで別のソフト…)

母艦=「新デジタル時計」
黒色で 画面クリア

母艦の、サイズは、(220,208,630,341)。
母艦の リサイズは オフ
母艦浮上。
*変数の設定
カウント=「
_  _     _  _     _  _
/ / / /   / / / /   / / / /
/ ̄/  / ̄/    / ̄/  / ̄/     / ̄/  / ̄/
 ̄    ̄      ̄    ̄      ̄    ̄ 」
カウント0=「
_
/ /
/ /
 ̄ 」
カウント1=「

 /
 /

カウント2=「
_
 /
/ ̄
 ̄ 」
カウント3=「
_
 /
 ̄/
 ̄ 」
カウント4=「

/ /
 ̄/

カウント5=「
_
/
 ̄/
 ̄ 」
カウント6=「
_
/
/ ̄/
 ̄ 」
カウント7=「
_
/ /
 /

カウント8=「
_
/ /
/ ̄/
 ̄ 」
カウント9=「
_
/ /
 ̄/
 ̄ 」

位置1は、(10,10)
位置2は、「({10*4/3*4+13},10)」
位置3は、「({10*4/3*11+8},10)」
位置4は、「({10*4/3*15+10},10)」
位置5は、「({10*4/3*22+13},10)」
位置6は、「({10*4/3*26+16},10)」

*部品の作成
イメージ1を、イメージとして、作成。
//その、透過処理は、オン。
その、幅は、母艦の、幅。
その、高さは、10*4/3+15。
その、位置は、(0,0)

イメージ2を、イメージとして、作成。
//その、透過処理は、オン。
その、幅は、母艦の、幅。
その、高さは、10*4/3+15。
その、位置は、(0,10*4/3*7+10)

ペン色は、黒色。
塗り色は、黒色。
イメージ1の、(0,0)から、((母艦の、幅),(イメージ1の Y)+10*4/3+15)へ、四角形描画。
イメージ2の、(0,0)から、((母艦の、幅),(イメージ2の Y)+10*4/3+15)へ、四角形描画。
文字色=RGB(0,128,0)
(10,10)へ、移動。
カウントと、表示。
文字色は、緑色。
イメージ1の (10,10)へ「 現在の時刻」と 文字描画
イメージ2の (10,0)へ「 {今日}」と 文字描画
(10,10)へ、移動。


    ・     ・
        ・      ・」と、表示。

{
取得=1
時刻設定
取得=「」
タイマー解除。
今に、「0:0:1」を、時間加算
現在時刻は、それ。
9回(もし、今=現在時刻ならば、抜ける。0.1秒、待つ。)
}

*時刻設定
0.1秒後に、時刻設定へ飛ぶ、タイマー設定

今の、「:」を、「」に、置換。
6桁の、ゼロで埋める
現在時刻は それ。
6回(
   現在時刻から、1文字、左端を切り取る。
   「桁{回数}は、それ。」を、ひまわりする。
   )

文字色=RGB(0,128,0)
(10,10)へ、移動。
カウントと、表示。
文字色は、緑色。
もし、桁1=0でなければ、(
   位置1に、移動。
   「カウント{桁1}と、表示。」を、ひまわりする。)

位置2に、移動。
「カウント{桁2}と、表示。」を、ひまわりする。

もし、桁3=0でなければ、(
   位置3に、移動。
   「カウント{桁3}と、表示。」を、ひまわりする。)

位置4に、移動。
「カウント{桁4}と、表示。」を、ひまわりする。

もし、桁5=0でなければ、(
   位置5に、移動。
   「カウント{桁5}と、表示。」を、ひまわりする。)

位置6に、移動。
「カウント{桁6}と、表示。」を、ひまわりする。

{もし、取得=1ならば、戻る。}
待機。



▲[ 1182 ] / ▼[ 1187 ]
NO.1184  新デジタル時計((改訂版))
□投稿者/ ミュージック ファイター(^o^)/ -(2002/08/14(Wed) 22:48:46)
□U R L/ http://isweb44.infoseek.co.jp/computer/jam-soft/
yukさんありがとうごさいます。おかげで解決しました。
原因は母艦への文字描画と、あとひとつ母艦への四角形描画でした。
今回のバージョンでは修正と削除をおこないました。
両方とも個人的には結構多く使う命令なので、知識不足かなとちょっと反省しています。
特に文字描画が好きなので今回もつかいました。そのためそれをカバーする為に四角形描画を作ることになり... という個人的なミスで、すいませんでした。
今後はちょっと色々な事を考えて作ります

申し訳ありませんが、まだソースが3500行くらいあるので
ホームページに掲載します。

↓新デジタル時計((改訂版))↓すいませんでした。
http://isweb44.infoseek.co.jp/computer/jam-soft/index/pro/digital.htm

ソースはZIP形式で圧縮してあります。(約4KB)

yukさんの作ったソフトはすごいですね。
いやー私も見習わなくては...
あのようなソフトはいったいどれくらいの時間でで完成したのですか、よければ教えてください。

エラーなどがあれば連絡下さい  以上。



▲[ 1184 ] / 返信無し
NO.1187  ソースを短くするコツ。
□投稿者/ yuk -(2002/08/15(Thu) 01:47:47)
□U R L/ ../../
拝見いたしました。

この形で書くのは割と難しいですね。
午前中に別物のようなソースを作って思いました。
普通だったらラベルを使えば一発って感じなのになぁ。


3000行を越すとなると、書き直すの、すごく大変だったと思います。
ソースが長いとなにが大変ってDEBUG作業ですよ。
本当に、ご苦労様です。

ところでソースですが、こういっちゃあ何ですが、ちょっと無駄が多いかな。(辛口です。)
具体的にどこが無駄かというと、何度も同じ作業を書き込んでる点。
例えば、
各「時」のイベントで、画面の表示をリセットするための、
 「88:88:88」を、表示。
は24回繰り返されています。
ここは、「画面初期化ラベル」みたいなのを作り、各「時」のイベントの冒頭で呼び出せば、23*11-α行は減ります。
更に行数を減らすなら、各「時」のイベントの冒頭ではなく、「時刻設定」ラベル内で呼び出した方がよいです。
また、「時」イベントで画面を初期化してあれば、「分」「秒」の各イベントで画面を初期化しなくても大丈夫だと思うんですが…
(憶測)→確認しました。大丈夫です。
それらを削除できるなら、激しく行数が減るかと。

ちょっとしたウラ技。
今回、各ラベルの名前が「0時」のように数字+時or分or秒になっていなかったのは、エラーが出るせいだと思います。
違いますか?

問い:エラーが出ないようにするにはどうすればいいか。
答え:ラベル名の末尾に数字を持ってくればよい。

ラベル名に数字を入れることができると何が楽か、というと、もちろんソースが短くなります。

例えば、
 もし 何時が 0なら(零時を、呼ぶ。)
と24回書いていたのを
(ラベル名を時0のように「時+数字」にした場合、)
 「時{何時}を、呼ぶ。」を、ひまわりする。
とたった1行、書けば済むのです。

この方法を使うと、ラベル名がちょっとおかしくなるけれど、ソースが格段に見やすくなります。
でも、直すの、めちゃめちゃ大変そう…

あと、蛇足。

ちょっとしたツッコミ。
最下行の近く。
秒の表示が「60」になることはないのでは?
同じく、24時、60分も。
「現在の時刻」と、「{今日}」それから数字の間のコロン(「:」)は最初から緑色で描画しておいても良いのでは?
それから、長時間、もしくは夜中に使う場合、日付は変わります。
そのときの処理は?
母艦のサイズを設定する場合、設定後に「母艦浮上」を使うとスマートです。

大量のソースを直す場合、「置換」が便利です。
今のひまわりエディタだと、改行を含む置換がやりづらいので
別のエディタを使ったほうがいいかも。


>あのようなソフトはいったいどれくらいの時間でで完成したのですか、よければ教えてください。

「あのような」ってどれのことでしょう。
じつは7つくらい(右クリックメニューのサンプルとか入れるともう少し)こちらで発表させていただいてまして。
制作にかかる時間はまちまちです。
AutoUPは作り始めてから発表するまで、記憶では1〜2ヶ月、かかってます。
ええと、記録によると、4/25に作り始めて、5/1に初回バージョン投稿?!
まじすか!がんばってたなぁ、私。

目覚まし時計とか、短いのだと30分くらい。
最近は、「プログラム命」でもなくなってきたので、少しづつ気長にプログラムしてます。
私の場合、暇なときにアルゴリズムを考え、打ち込むときは一気にが基本みたい。
寝る前とかにごにょごにょ考えてみたり、電車の中でぼーっと考えてみたり。
と、言うわけで、考えている時間を入れるとすごく長い時もあるけれど基本的に打ち込む作業時間は長くて三日。ただしドツボに陥っちゃったときはその限りにあらず。

ってかんじで。
よろしいでしょうか。



- Child Tree -