Top > OOobbs3 > 27

OOobbs3/27 Edit

  • サマリ: 落ち物ゲー
  • 環境: Calc
  • 状態: 投稿
  • 投稿者: はにゃ??
  • 投稿日: 2010-10-05 (火) 02:04:34

質問 Edit

Calc のマクロで速度を向上させる目的で試しに落ち物ゲーを作成してみました。面倒なので更新しません・・・と書きましたが、音を付けてみました。

  • 右キー: 右移動
  • 左キー: 左移動
  • 下キー: 下へ移動
  • D キー: 右回転
  • A キー: 左回転
  • Esc キー: 終了

セルの背景色で色分けしていますが、直接色をセルに設定しているのではなく、条件付き書式で色を変更しています。マクロで条件付き書式を設定するといくつでも設定できるため、複数のスタイルで色を切り替えることができます。 セルの値を setDataArray メソッドで設定するのは比較的動作が早いので、色が多い場合には有利かもしれません。

下記の設定で動作速度向上を目指しています。

oDoc = ThisComponent
oDoc.disableSetModified() ' 変更ステータスの変更を不可に
oDoc.enableAutomaticCalculation(False) ' 自動計算無効
oDoc.IsAdjustHeightEnabled = False ' セルの高さ自動調整を無効、ステータスバーの更新表示を抑制
oDoc.IsUndoEnabled = False ' やり直しを無効に、ほとんど効果なし?

IsAdjustHeightEnabled を False に設定すると、背景色設定時の速度が向上します、スタイルでの適用でも効果あり。値を設定するような操作には効果がありません。 効果のありそうな項目は以下のものです。

  • 並べかえ
  • フィル
  • リンク更新
  • セルの結合
  • スタイル適用
  • 文字変換
  • セルの内容の消去
  • オプションの変更
  • コピー/貼り付け
  • setDataArray/setFormulaArray

効果音の再生は OOoBasic/Generic/MultiMedia 参照。

バグ Edit

  • T を最上部で回転させようとするとエラーになることがある
  • J を右端で、同上

GetSystemTicks について。

  • Windows 環境では GetTickCount 関数で、システムが起動してからの経過時間を msec で取得、unsigned long 型に変換してから返します。49 日程度でオーバーフロー。
  • Windows と OS2 以外の環境では time.h の gettimeofday 関数を利用して時刻を取得、msec に変換した後に fmod 関数 で unsigned long の最大値で割った余りを返します。

OOo Basic には unsigned long 型はなく、GetSystemTicks 関数の帰り値は Long 型で定義されているので、どちらの場合にも long 型の範囲を超えるとオーバーフローして負の値の範囲になります。受け取る変数の型が問題ではなく、先に long に変換されているので・・・。

コレを埋めるには・・・。

回答 Edit

  • DrawNextBoard 関数の一行目でランタイムエラーが発生するのは環境の問題でしょうか? -- 七篠 2010-10-09 (Sat) 21:52:03
  • それよりも GetSystemTicks の関係上動かなく・・・。Windows 上では問題なく動作しますが、Sound テーマがなくてエラーになりますね。 -- はにゃ? 2010-10-10 (日) 17:19:44
  • ギャラリ関連を修正したものをおいておきました。DrawNextBoard は一行しか内容がありませんが、その中で利用している setDataArray 関数がランタイムエラーを吐くのは、セル範囲のサイズと設定するデータの配列のサイズが異なるときです。私の環境では問題なく動きます。WinXP OOo 3.2.1、Linux OOo 3.2.1。-- はにゃ? 2010-10-10 (日) 18:46:19
  • 読み取り専用で開いて実行するとランタイムエラーになりますね。 -- はにゃ? 2010-10-10 (日) 19:06:28
  • T3動きました。 L字ブロックを左端で回転させたら「110:9: 定義された範囲外のインデックス。」というメッセージボックスがでました。 -- 七篠 2010-10-10 (Sun) 21:13:55

感想,コメント,メモ Edit



Attach file: fileT3.ods 1068 download [Information] fileT2.ods 484 download [Information] fileT1.ods 67 download [Information]

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes