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

MESSAGE うようよフォームで神経衰弱β v0.24 /山本 博信 (02/05/04(Sat) 12:52) [846]
......MESSAGE マシンパワーとゲームの仕様について /山本 博信 (02/05/05(Sun) 09:32) [851]
............MESSAGE 簡易ベンチマークをつけてみたらどうでし.. /しばた (02/05/05(Sun) 12:12) [853]
......MESSAGE Re[1]: うようよフォームで神経衰弱 /yuk (02/05/05(Sun) 19:29) [856]
......MESSAGE もう少しなんです /山本 博信 (02/05/12(Sun) 21:58) [881]
............MESSAGE Re[2]: もう少しなんです /yuk (02/05/12(Sun) 23:43) [883]
..................MESSAGE 色について /山本 博信 (02/05/13(Mon) 08:59) [886]
........................MESSAGE Re[4]: 色について /yuk (02/05/13(Mon) 14:06) [890]
..............................MESSAGE 明るさ判別サンプル /SWinX (02/05/13(Mon) 14:13) [891]
....................................MESSAGE すごい! /山本 博信 (02/05/13(Mon) 15:14) [892]
......MESSAGE 一段落 /山本 博信 (02/05/17(Fri) 07:42) [907]
............MESSAGE 簡略化のアイデア /SWinX (02/05/17(Fri) 23:17) [909]
..................MESSAGE Re[3]: 簡略化のアイデア /山本 博信 (02/05/19(Sun) 08:38) [917]


親記事 / ▼[ 851 ] ▼[ 856 ] ▼[ 881 ] ▼[ 907 ]
NO.846  うようよフォームで神経衰弱β v0.24
□投稿者/ 山本 博信 -(2002/05/04(Sat) 12:52:55)
□U R L/
{---プログラム掲示板投稿フォーム---
【ソフト名】うようよフォームで神経衰弱 β(バージョン 0.24)
【作 成 者】山本 博信(連絡先:minus-zero@kcc.zaq.ne.jp)
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.49
【転  載】可/(転載条件:ご自由に)
【改変運用】是非
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】無
【コメント】ほんの小ネタのつもりでしたが、やりだすと結構おくが深くて
      皆さんのアドバイスいただきつつ、改良しました。
      (少し変更があったのですが、スレッドが初めのほうに出るのが
       恥ずかしいので、マイナーチェンジしてます)
---投稿フォームここまで---}
'うようよフォームで神経衰弱
「あなたのマシンのCPUクロック数は」を、
『1GHz以上
500〜999MHz
500MHz未満
知らない』の、ボタンで選択
   もし、それが、『1GHz以上』ならば、速度=5。
   もし、それが、『500〜999MHz』ならば、速度=7。
   もし、それが、『500MHz未満』ならば、速度=10。
   もし、それが、『知らない』ならば、測定=オン
目隠しを、フォームとして、作成'以降のフォーム作成の瞬間を隠す
   その、スタイルは、枠なし。
   その、背景色は、オレンジ色。
   文字サイズ=22。文字色=白色。
   目隠しの、(5,80)へ、「しばらくお待ち下さい」と、文字描画。
   目隠しを、最前面。
   0.1秒、待つ。'これがないと文字描画が反映されない
   開始=今
*変数初期設定
   カウント=16
S=「ハートのA0,
ハートのA1,
スペードのA0,
スペードのA1,
ダイアのK0,
ダイアのK1,
クラブの40,
クラブの41,
ハートの70,
ハートの71,
スペードのQ0,
スペードのQ1,
ダイアの50,
ダイアの51,
クラブの100,
クラブの101,」
二枚目=オフ
一枚目=「」
クリック可=オン
文字サイズ=17
   
Sを、反復(
      gyo=(回数-1)
    「カラフル{S#0#gyo}を、フォームとして、作成。」を、ひまわりする。
      その、可視は、オフ。
      その、スタイルは、枠なし。
      R=乱数(256)。G=乱数(256)。B=乱数(256)。'今迄当り前のように(255)使ってたけど0〜255得るんですものね
      その、背景色は、RGB(R,G,B)
      その、Xは、乱数(デスクトップの幅-150)。その、Yは、乱数(デスクトップの高さ-130)。
      その、高さは、80。その、幅は、170。

      「キャプション{S#0#gyo}を、ラベルとして、作成。」を、ひまわりする。
       //色をグレイスケールの明るさに変換
       CY=(77*R+150*G+29*B)/256'SWinX様に感謝(ただ私は赤緑色弱なので自分用は青の比率を少し上げてます)
       //明るさによって、文字色を決定
       もし、CY>127ならば、(
            その、フォント色は、黒色。
          S#1#gyo=黒色。'フォント色を、記録
          )
      でなければ、(
            その、フォント色は、白色。
          S#1#gyo=白色。
          )
      その、テキストは、「\n めくってね!!」
      その、サイズは(0,0,150,80)'yuk様に感謝
{それの値は循環の中でどんどん変化するので、オープンイベントへ渡す値を先に決めておく}
         「その、クリックした時は、(
            カード={S#0#gyo}。
            字の色={S#1#gyo}。
            オープンを、呼ぶ。)」を、ひまわりする。

「キャプション{S#0#gyo}を、カラフル{S#0#gyo}に、乗せる。」を、ひまわりする。
         
    S#2#gyo=乱数(10)-5。もし、S#2#gyo>=0ならば、S#2#gyo=S#2#gyo+1。'X軸速度
    S#3#gyo=乱数(10)-5。もし、S#3#gyo>=0ならば、S#3#gyo=S#3#gyo+1。'Y軸速度
   )
   'Sを、文字列として扱う・・・バージョン1.50で修正してくださいました。作者様に感謝!!

   目隠しを、最背面。'最前面のまま、可視をオフにするとほかのフォームが出てこれなくなる
   目隠しの、可視は、オフ。
   Sを、反復(
         「カラフル{それ#0#0}の、可視は、オン。」を、ひまわりする。
         )
0.1秒、待つ
   
   一段落=今
   一段落と、開始の、秒差'しばた様に感謝
   準備時間=それ
   もし、測定=オン、ならば(
   もし、準備時間<=1、ならば、速度=5。
      違えば(もし、準備時間=2、ならば、速度=7。
         違えば(もし、準備時間=3、ならば、速度=9。
            違えば、速度=12。
            )
         )
      )
      
      120秒後に、タイムオーバーへ飛ぶ、タイマー設定。
*循環
Sを、反復(
      識別=それ#0#0
      横移動=それ#2#0
      縦移動=それ#3#0
         「カラフル{識別}の、X=(カラフル{識別}の、X)+{速度}*{横移動}」を、ひまわりする。
         「カラフル{識別}の、Y=(カラフル{識別}の、Y)+{速度}*{縦移動}」を、ひまわりする。
         
         0.1秒、待つ。{これもSWinX様よりアドバイスあり、
                     待ち時間でなく速度でゲームスピードを調整することにしました}
         )
{以下の処理中に、行削除が起きるとSの中身がめちゃくちゃになる}
      クリック可=オフ
Sを、反復(
      識別=それ#0#0
      横移動=それ#2#0
      縦移動=それ#3#0
          「cx=カラフル{識別}の、X」を、ひまわりする
          「cy=カラフル{識別}の、Y」を、ひまわりする
          もし、(cx<=0)または、(cx>=(デスクトップの幅-150))ならば、S#2#(回数-1)=横移動*(-1)。
          もし、(cy<=0)または、(cy>=(デスクトップの高さ-130))ならば、S#3#(回数-1)=縦移動*(-1)。
         )
         クリック可=オン
         'Sを、文字列として扱う
   循環へ、飛ぶ。

*オープン
   '同じフォームのクリック防止
   もし、(クリック可=オフ)または、(カード=一枚目)ならば、戻る。
         それ=カード
         1文字、右端削除
         比較=それ
         フォント色=字の色
      キャプション&カードの、テキストは、「\n {比較}」
      その、サイズは(0,0,150,80)
      もし、二枚目=オフならば、(
            一枚目=カード
            記録=比較
            二枚目=オン
            さっきの色=字の色
            戻る。
            )
      違えば、(
         0.5秒、待つ。
         記録と、比較で、文比較
         もし、それが、はいならば(
               「おみごと!」と、言う。
               カラフル&カードの、可視は、オフ。
               カラフル&一枚目の、可視は、オフ。
               カウント=カウント-2
                  もし、カウント=0ならば、おめでとうへ、飛ぶ。
               Sの、0列目から、「{カード}」を、表検索。
               Sの、それ行目を、行削除
               S=それ
               Sの、0列目から、「{一枚目}」を、表検索。
               Sの、それ行目を、行削除
               S=それ
               'Sを、文字列として扱う。
               )
         違えば、(
               「残念!」と、言う。
               フォント色=字の色。
               キャプション&カードの、テキストは、「\n めくってね!!」
               その、サイズは(0,0,150,80)
               フォント色=さっきの色。
               キャプション&一枚目の、テキストは、「\n めくってね!!」
               その、サイズは(0,0,150,80)
               )
         二枚目=オフ。
         一枚目=「」
         )
   戻る。
*タイムオーバー
   「時間切れです。{カウント}枚残ってしまたっね」と、言う。
   おわり。
*おめでとう
   タイマー解除
   完了=今
   完了と、一段落の、秒差
   腕前=それ
   もし、腕前<=60、ならば、「早いね、名人級!」と、言う。
   違えば、(もし、腕前<=110、ならば、「なかなかやるね」と、言う。
      違えば、「危ないところだったね、ぎりぎりクリアだよ」と、言う。
      )
   おわり。
母艦浮上        



▲[ 846 ] / ▼[ 853 ]
NO.851  マシンパワーとゲームの仕様について
□投稿者/ 山本 博信 -(2002/05/05(Sun) 09:32:27)
□U R L/
 実は、昨晩やっと自作マシンの1300MHzが動作するようになり、このゲームを実行したのですが、
フォームの動きが速くて、クリックがついて行けません。
 それまでは、200MHzだったので、むしろ遅く感じていました。
このような動きのあるゲームを作るとき、そういったことも考慮しないといけないとつくづく思った次第です。
 0.001秒、待つ。
この部分をマシンスペックに応じて変えればよいのでしょうが・・
 皆さんは、その辺どう対処されているのでしょうか・・・・おや、ここは質問掲示板じゃ無かったですね、失礼しました!!



▲[ 851 ] / 返信無し
NO.853  簡易ベンチマークをつけてみたらどうでしょうか?
□投稿者/ しばた -(2002/05/05(Sun) 12:12:36)
□U R L/
 こんにちは〜。私は、Duron750MHzですが、やっぱり、クリックすら
難しい状況です。

 ひとつ提案。超超超ー簡易ベンチマーク機能をつけて、
乱数計算などをさせます。CPUのよって、かかる時間は違いますので、
それで、「10〜20秒は、○秒待つ。」みたいにすれば、いいんじゃな
いでしょうか?

もっとも、CPUに負担を掛けたりしてたら、不正ができちゃいます。。。

乱数計算100回とかだと、ちょっと多いかもしれません。ユーザーに
ストレスを与えてしまうし。。。。(「しばらくお待ちください」の画面で
実行すればいいかも♪)


 ベンチの処理は、「簡易!ベンチマーク!」というスレッドが
プログラム発表掲示板にありますので、参考にしてみてください。

************************************************************************
P.S 200MHzは、すごいですねぇ・・・。コンパイルとか、時間かかりますよね。
  普段は使わないけど、Pen100MHzマシンなんかも、持ってたりします。(笑)
  でも、ADSL回線でバリバリインターネットしてますよ。。。
  



▲[ 846 ] / 返信無し
NO.856  Re[1]: うようよフォームで神経衰弱
□投稿者/ yuk -(2002/05/05(Sun) 19:29:20)
□U R L/ ../../
>「キャプション{C}を、ラベルとして、作成。」を、ひまわりする。
>その、サイズは(0,0,150,80)
>その、テキストは、「\n めくってね!!」
>その、クリックした時は、(それ={C}。オープンを、呼ぶ。)」を、ひまわりする。

えっと、ラベルのサイズは、テキストを設定した後に設定しないと、正しく反映されません。
正しく反映されているかどうかを見るには、適当な色に背景色を設定した後、「その、透過処理は、オフ。」にするといいです。

ラベルがちゃんとした大きさなら、もう少しめくりやすいかな、と思います。

発想とか、すごくおもしろいので、がんばってくださいませ。



▲[ 846 ] / ▼[ 883 ]
NO.881  もう少しなんです
□投稿者/ 山本 博信 -(2002/05/12(Sun) 21:58:29)
□U R L/
 しばた様・yuk様、貴重なご意見有難うございます。
すぐにも、返事を書きたかったのですが、御二人のアドバイスを取り入れた物を書いてから
と、思っていましたので・・・でも今週は結構仕事も忙しく、またプログラムも大変な深みに嵌って来まして
 とりあえず経過報告だけを。

 しばた様、HP見ました。中学生なのですね、驚きました、ベンチマーク・・よくできてますね。(びっくり)
奨めていただいたように、ユーザーのマシンスペックを判断してゲームスピードを調整するアイデア取り入れます
ただ、ゲームに関係ない計算をするのはどうかと思ったので、フォーム作成にかかった時間で、判断しようかと・・・
 yuk様、貴重なアドバイス有難うございます。色つけて透過オフは、母艦浮上しないと確認できず
ちょっと時間かかりました。ご意見全面的に取り入れます。
・・・あと、HP見てびっくりしました、作業待ちのフォーム、目的は違いますが私の目隠しも似たような発想で・・(そういえば、ひまわり始めて間もない頃一度コピペしてマシンが固まったような)
思いついたときは、なかなかいけてると思っていたのですが、その時の事が頭に残っていたのですねー
 
 その他、始めから抱えていた問題ももう少しで解決できそうです。・・具体的にいうと

1・フォームの色をRGB(乱数(255)・・・で決めると、白っぽいとき文字が見えない
2・低速マシンは特に”可視は、オフ”となっているフォームの座標移動の待ち時間がストレス。

これらを解決するため二次元配列に、フォームの名前・速度・色・何行目か、という情報を格納するところまでいってます。
 あとは、行削除のタイミングが・・・これが難しく悩んでいるところです。

近いうちなんとかしたいと、思っています

それでは、またよろしくお願いします



▲[ 881 ] / ▼[ 886 ]
NO.883  Re[2]: もう少しなんです
□投稿者/ yuk -(2002/05/12(Sun) 23:43:13)
□U R L/ ../../
参考にしていただいて励みになります。

ところで、

>1・フォームの色をRGB(乱数(255)・・・で決めると、白っぽいとき文字が見えない

とのことですが、ご存じかもしれませんがRGB値は各数字の合計値が大きくなればなるほど色が白っぽくなります。
と言うことは、数字をコントロールすれば色の明るさを何となくコントロールできます。
たとえば、暗い色にしたかったら、乱数(255)ではなく、乱数(100)にしてみる。
明るい色が良かったら、(乱数(100)+155)にしてみるなど。

情報を格納するのは割と面倒な作業だと思うので、(それこそエクセルとか使った方がいいかも)ちょっと提案してみました。
応援してます。



▲[ 883 ] / ▼[ 890 ]
NO.886  色について
□投稿者/ 山本 博信 -(2002/05/13(Mon) 08:59:01)
□U R L/
 実は、その方法も考えたのですが、たとえばRGB(255,0,0)とかRGB(210,0,210)
のような鮮やかな色(一部数値が高くても、白が目立つ)許可するためには、条件式が複雑になりすぎて・・・
 乱数(150)ぐらいにすると中間色と暗い色ばっかりになってしまうんですよねー



▲[ 886 ] / ▼[ 891 ]
NO.890  Re[4]: 色について
□投稿者/ yuk -(2002/05/13(Mon) 14:06:58)
□U R L/ ../../
合計値の問題なんですよね。
適当な合計値を指定してやって、それを適当なところで分割する。
で、各値が255以上にならないように調整する…
やはり複雑になりすぎますか…

たとえば、RGBの各値を足して500を越えていたら色を指定し直すとか…
時間がかかりすぎる可能性があるのでボツですね…

RGBじゃなくて
LAB(?)などが使えるとその辺の指定は楽なんですが…



▲[ 890 ] / ▼[ 892 ]
NO.891  明るさ判別サンプル
□投稿者/ SWinX -(2002/05/13(Mon) 14:13:05)
□U R L/
{YIQのY(輝度)を判定基準にした例}
参考URL=『http://village.infoweb.ne.jp/~muraken/mpt/color_reduction/?sect2
灰色で、画面クリア。
MX=(母艦の、幅)-80
MY=(母艦の、高さ)-30
40回(
   X=乱数(MX)
   Y=乱数(MY)
   //色を適当に決める
   R=乱数(256)
   G=乱数(256)
   B=乱数(256)
   C=RGB(R,G,B)
   「(X,Y)に、ラベル{回数}を、ラベルとして、作成。」を、ひまわりする。
      その、テキストは、「{R},{G},{B}」
      その、背景色は、C
      その、透過処理は、オフ。
   //色をグレイスケールの明るさに変換
   CY=(77*R+150*G+29*B)/256
   //明るさによって、文字色を決定
   もし、CY>127ならば、その、フォント色は、黒色。
      でなければ、その、フォント色は、白色。
)



▲[ 891 ] / 返信無し
NO.892  すごい!
□投稿者/ 山本 博信 -(2002/05/13(Mon) 15:14:37)
□U R L/
 興奮・目から鱗・脱帽・・・そして感謝!!



▲[ 846 ] / ▼[ 909 ]
NO.907  一段落
□投稿者/ 山本 博信 -(2002/05/17(Fri) 07:42:32)
□U R L/
ひどい有様だった物が、少しはマシになったかと思います。

しばた様
yuk様
SWinX様

たいへん有難うございます。

 ゲーム自体、特にすごいものが出来た訳ではないのですが、とても勉強になりました。

同じ初心者の方の参考までに、少し書きます。

1・・○○を、反復。としたとき、いくら”それ”の中身をいじっても、もとの配列は変化しません
最後に”それ”を、元の配列に返さないとだめみたいです。

2・・右端削除・表検索・行削除。初めは、文字列やcsv専用の命令かと思ってました。
(表検索のマニュアルなんてはじめてみたとき魔法みたいで???て、感じでしたし)
ゲームに、こんなに役立つとはねー(特に表検索様さま、です。行番号情報どうしようか行き詰まってた時マニュアルで再発見)

3・・そのほか、えーと、上の三人のレス読んでください。

・・・・まだある問題点

 フォームの座標がデスクトップの端かどうか判断して、速度を正負逆転させる処理中に
カードが合って、行削除がおきると、とんでもないことになります(これにも悩まされました)
このため上記処理中は、フォームクリックしても何も起きません、短い時間ですが、オヤ?と感じますね。

 16枚クリアして、タイマー解除までの隙間にタイムオーバーになる可能性があります。

他にもまだあるかもしれません、気づいた方、教えていただけると嬉しいです。

======

 あと、いろいろ複雑に処理したわりに、ゲームがあっけないので、ほとんどコードを使いまわしできる
”デスクトップアドベンチャー母艦を探せ”おまけにつけようかと思ったのですが。
コードが汚くなるのでやめました。

タイトルでぴんときた方、作って見てください。

それでは、またよろしくお願いします。



▲[ 907 ] / ▼[ 917 ]
NO.909  簡略化のアイデア
□投稿者/ SWinX -(2002/05/17(Fri) 23:17:35)
□U R L/
その、背景色は、RGB(R,G,B)
S#(回数-1)=それ。
無理にひまわりしなくてもいいような気がするんですが…

もしくは、もとからS#2#(回数-1)に代入するとか。
反復中の「それ」は、使い捨てぐらいのつもりがいいかも。

戻る必要のないときは、飛びましょう。
→もし、カウント=0ならば、おめでとうに、飛ぶ。

気になっちゃったんで、つい。



▲[ 909 ] / 返信無し
NO.917  Re[3]: 簡略化のアイデア
□投稿者/ 山本 博信 -(2002/05/19(Sun) 08:38:05)
□U R L/
度重なる、貴重なアドバイス感謝です

>無理にひまわりしなくてもいいような気がするんですが…

>もしくは、もとからS#2#(回数-1)に代入するとか。

>戻る必要のないときは、飛びましょう。

 おっしゃるとおりでございます。

どうもまだ作りなれていないせいか、はたまた性格が大雑把なのか、早く発表したいと言う気持ちも手伝って

所期の目的どおり動作し(ているように見え?)エラーが出なくなると、安心してしまってます

そこから更にしなければならない事が有るんですよね。

指摘してくださったところ直しました。
回数-1が多いのと()がごちゃごちゃになるので変数使いました

他に
初めの"Sを配列シャッフル"無意味なので削除
おめでとうへ、飛ぶ。の記述位置を変えましてタイムオーバー問題解消?

またよろしくお願いします。



- Child Tree -