seigot / tetris

A Tetris Game for programming education in Japanese
MIT License
30 stars 107 forks source link

179手目に時間が掛かると180手目が落ちない(179手目の時点で0.5sec遅れになっていたら180個目が落ちない) #59

Closed seigot closed 2 years ago

seigot commented 2 years ago

179手目に時間が掛かると180手目が落ちない (179手目の時点で0.5sec遅れになっていたら180個目が落ちない)

理想  179手目を処理した時点で180sec以内であれば最後の手を置いてから終了させたい。

現状  コールバック処理を終えた時点で179.5secを超えていたら終了する(最後の処理が179.5未満に始まっていたらOK)  179手目を処理した時点で0.5sec遅れになっていたら180個目が落ちなくなる(少し厳し目設定になっていそう)

対策案  案1.) 現状のまま  案2.) 時間を調整する  案3.) 何かしら代案を検討する

以下を確認する必要がある

影響範囲

seigot commented 2 years ago

https://github.com/seigot/tetris/blob/master/game_manager/game_manager.py

    elif (self.game_time >= 0 and elapsed_time > self.game_time - 0.5) or (current_block_index == BlockNumMax):
seigot commented 2 years ago

サンプルコードで180個落ちた際に以下のようになることがある。 結構時間にばらつきがあるので 179.8~180secあたりになるのをどう扱うのがよいか。

YOUR_RESULT

score:-2109,line:0,gameover:8,time[s]:179.847

seigot commented 2 years ago

180secをしきい値にすると、elapsed_timeのばらつきにより以下の問題が再発してしまう懸念

制限時間180secの間に落ちるブロックの落下回数が、180回 or 181回になってしまうことがある問題の修正 ただし1frameに1回ブロックが落ちてくる前提 7925e1ea0754ccd8535a408a11f0e226a23facab https://github.com/seigot/tetris/commit/7925e1ea0754ccd8535a408a11f0e226a23facab

seigot commented 2 years ago

pull request https://github.com/seigot/tetris/pull/61

seigot commented 2 years ago

このコミットで対策 https://github.com/seigot/tetris/commit/073b5a00beb5719faa0ed4c7992a2c03371ac810