∧_∧ ┌────────────
◯( ´∀` )◯ < 僕は、神山満月ちゃん!
\ / └────────────
_/ __ \_
(_/ \_)
lll
_ ∩
( ゚д゚)彡 オッパイ!ポッパイ!ホッパー満パイ!
⊂彡
5 :
101 ◆IntTEmehas :05/02/17 06:08:05 ID:UEQJRU1w
>>1 乙。
>>3のうpろだのリンクは古いです。
立て続けにスレが落ちているので、これ以上落ちると存在価値が無くなるのであげますね。
で、ちょっとネタ振りついでに質問です。
1.メインルーチンを1つの流れの中に置きたいのですが、どんなコーディングが最適ですかね?
抽象的で申し訳ないですが、現在の拙作では、サブルーチンが独立しており、
例えば、リールフラッシュのサブルーチンへ行ったらフラッシュが終わるまで他の処理が停止しています。
これを全て同時に行う(行っているように見える)には、全体的なタイマーが必要になると思うのですが、具体的な案がありません。
285氏のオープンソースにヒントがありそうですが理解できない状況です。
2.ドットグラフィックを作るにあたって、おすすめのフリーのツールはありますか?
>>5 例えばY社WINフラッシュみたいなものでしたら
en_WinFlash.0=1,0,0,0,0,0,0,0,0
en_WinFlash.10=2,0,0,1,0,0,0,0,0
en_WinFlash.20=0,0,0,2,0,0,1,0,0
en_WinFlash.30=0,0,0,0,1,0,2,0,0
en_WinFlash.40=0,0,0,0,2,0,0,0,1
en_WinFlash.50=0,0,0,0,0,1,0,0,2
en_WinFlash.60=0,0,1,0,0,2,0,0,0
en_WinFlash.70=0,0,2,0,0,0,0,0,0
en_WinFlash.80=0,0,0,0,0,0,0,0,0
中略
en_WinFlash.230=-1
みたいなデータを作り、現在のコマ×10で得られるデータを参照してフラッシュするルーチンを作り、
メインループから呼ぶとか、そんなんでは駄目でしょうか?
7 :
101 ◆IntTEmehas :05/02/17 11:07:19 ID:UEQJRU1w
>>6 レスありがとうございます。
まさにそんな感じなんですが、質問の仕方が悪かったです。
例えば、リール停止時に『全消灯→全点灯→全消灯→全点灯』とフラッシュするとします。
今のままでは、リール停止→フラッシュ→払い出し、のように、それぞれのルーチンが終わってから次の処理を行うようになっています。
それを、フラッシュと払い出しを同時に行うようにしたいのです。
その時に、『全消灯→全点灯』の間隔や、払い出しの間隔もそれぞれ指定したいです。
フリゲで有名な各作品は、液晶描画とリール描画と同時に進行しているので、当然の技術なんだと思いますが…。
とりあえず、dsoundexのtimerを複数使って、それぞれの間隔を監視する変数に入れようと思うのですが、
コーディングのイメージが出来てないこともあって、すごく複雑になりそうです。
擬似プログラム的なフローチャートなどを提示していただけるとありがたいです。
>>7 例えば0.1秒ごとにフラッシュするとする場合、前回からの経過時間をdtとします。
timerって0.001秒単位でしたっけ?その経過時間の累積が100を超えた時(つまり0.1秒)に
フラッシュの状態を反転するルーチンを作り、払い出し中にもそれを呼び出す。
みたいにして各処理を呼び出すみたいな・・・
とかでは駄目?
動作が安定しているのでしたら各処理を何ループ毎に呼び出すとかでも良いのかもしれませんが、
現状のPCでは動作クロックが千差万別ですのでこれは使えないでしょうね。
昔やコンシューマーはこれでも平気でした。処理落ちしなければ(笑
9 :
101 ◆IntTEmehas :05/02/17 12:53:43 ID:UEQJRU1w
>>8 前者の方法でちょっとやってみます。
メイン開始
↓
フラッシュルーチンに行く前にtimer呼び出し→フラッシュのルーチンでもtimer呼び出してルーチン突入前と比較
↓
払い出しのルーチンに行く前にtimer呼び出し→払い出しのルーチンでもtimer呼び出してルーチン突入前と比較
↓
はじめに戻る
こんな感じでいいんですかね?
サブルーチンに行く前のtimerは1回でいいかもしれませんね。
心配は、どっかで余計な時間が掛かった時、その誤差が悪いように影響しなければいいんですが。
また、timerの正確性については異論があるようなのですが、とりあえずこんな感じの構成でやってみます。
>>9 timerの値は一度で良いですよ。んで、各処理別のタイマに加算。
目的地を超えたら0を代入ではなくその目標値(上の例だと100)をマイナスしておくと、細かい誤差もいずれ修正されます。
とりあえずがんばってみて下さい。
では〜
11 :
( ´∀`)ノ285:05/02/17 23:10:08 ID:FzhZQhCE
if ????_cnt_buf!(counter/C_????SPEED) {
????_cnt_buf = counter / C_????SPEED
????_cnt++
※※ タイマー基準一定間隔で処理する処理 ※※
}
おひさです&新スレ乙&ネタに乗っかって保守ageです。
おいらは液晶もフラッシュもタイマー使ってる部分は上の様な感じでやってます。
????の部分は処理毎にユニークな名前で
????_cnt_buf・・・・・前回処理した時のタイマーの値を保持する変数
C_????SPEED・・・・処理スピード(定数)コレの値の間隔で処理される
counter・・・・・・・・・タイマーの値を保持する変数(タイマー呼び出しはメインループで1回)
????_cnt・・・・・・・・・処理の基準になるカウンター
if 内で ????_cnt++ してるので一定間隔で1づつ増える様になります。で、コレを利用して
※※ タイマー基準一定間隔で処理する処理 ※※にて????_cntの値を元にアニメーションや
コイン払い出し、フラッシュのアニメーション処理をしてます。
複数の処理を同時に処理する場合
*MAIN
timer : counter = stat\1500
if 処理1_cnt_buf!(counter/C_処理1SPEED) {
処理1_cnt_buf = counter / C_処理1SPEED
処理1_cnt++
※※ 処理1 ※※
}
if 処理2_cnt_buf!(counter/C_処理2SPEED) {
処理2_cnt_buf = counter / C_処理2SPEED
処理2_cnt++
※※ 処理2 ※※
}
if 処理3_cnt_buf!(counter/C_処理3SPEED) {
処理3_cnt_buf = counter / C_処理3SPEED
処理3_cnt++
}
※※ 処理3 ※※
goto *MAIN
こんなイメージです。コレで各C_処理?SPEED間隔で各処理が実行されます。
フラッシュなど毎フレーム描画しないと上書きされて表示がおかしくなる部分は処理3の様に
処理?_cntのカウントだけ if 内でやって描画処理自体は外に出して毎フレーム行えばOKです。
コレだとゲーム状態に関係なく毎フレーム処理されてしまうので払い出し等のゲーム状態の影響を
受ける部分は実際には状態変数で括っています。
13 :
101 ◆IntTEmehas :05/02/18 11:28:39 ID:nZMjAdLW
>>10 もしかして親○氏でしたかね?
ありがとうございます。
>>11 おひさです。
非常にわかりやすかったです。
で、あとは※※処理※※の部分なんですが、
????_cntをうまく使わないと不細工なコードになってしまいそうですね。
_gameprocess_5.asが同じような構造になっているようなので参考にさせてもらいます。
ちなみに私の説明版はこんな感じでしょうか。ざっと作成してみました
変数説明は省略ということで・・・
timer : counter = stat
timer_cnt1_buf += counter
if (timer_cnt1_buf>=SPEED1){
timer_cnt1_buf-=SPEED1
timer_cnt1++
gosub *syori_1
}
>>13 では〜(笑