忍者ブログ

主にウディタを使ってのゲーム製作についてのブログです  ※更新は不定期

[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

キュー操作解説
前回の記事にてキューの説明は省いていたので
今回はキューについての解説を行いたいと思います。

■キュー

キューによって実現できる処理について解説していきます。

例えば、リプレイ処理を実装するときに有効です。

←↑↓→キーで自機が移動するとして
ステージが終了した時点で今回のリプレイを保存する処理を考えます。

毎フレーム、入力されたキー情報をキューに入れていきます。
例えば 『
』が押された場合
』に該当する値をキューに入れます。
これを続けていくことにより、毎フレームの操作履歴がキューの中に格納
されます。

リプレイを再生するときは
キューから値を取り出すことによって
操作された順にキー情報を取得できます。
あとは取得した情報をもとに自動でキーを入力する
ようにすれば、リプレイ再生の完成です。




他にも例を挙げると
以下のような文字列が記述された
スクリプトファイルがあるとします。

@message
あいうえお
@wait 2
@message
かきくけこ

上記は
@messageで文章を表示
@waitでウェイトを実行する処理とします。

この場合、『
あいうえお』と表示されてから
次に2ウェイトおいてから
かきくけこ』と表示される処理です。

このファイルを処理するときに逐一読み込んで処理するのも
方法の1つですが、あらかじめ全てデータを読み込む方法も
あります。

後者の場合キューを用います。
まずは@messageを
命令格納用のキューに入れます。
そして次の『あいうえお』を別の文字列用のキューに入れます。
次は@waitを
命令格納用のキューに入れます。
その後、更に別の数値用のキューに『2』を入れます。

@message 命令格納用に入れる

かきくけこ』を文字列用に入れる

とすることによって
全てのスクリプトデータを読み込むことができます。
あとは命令格納用キューから順に命令を読み出して
命令の種類によって処理していくようにすれば
順番に命令を実行していくことが可能になります。

あらかじめ読み込んでおくことによって
残りの実行命令数なども管理できるので
管理性が高まります。


以上がキューの使用例の一例です。


このほかにもキューには
環状キュー(リングバッファとも言う)というものもあります。
これはデータの先頭と末尾がつながっているデータ構造に
なりますが、これを使うことで
ログの管理なども行えます。
末尾にどんどんデータが追加され、データがいっぱいになった場合
先頭のデータに上書きされていくため古いデータが自動的に削除
されていき、最新のデータだけが保存されるようになります。






拍手

PR
COMMENT
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
 管理人のみ閲覧
 
  • 無題
  • from: たかねぇ
グッジョブ!(  ̄▽ ̄)b☆
Woditoride - April Fool's Day Edition
┗最新版公開日 : 2018/04/01

WoditorOptimizer - Ver2.0.1
┗最新版公開日 : 2017/08/31

WoditorOptimizer - Ver1.00 -
┗旧バージョン : 2015/04/18

WECDeletor - Ver1.01 -
┗最新版公開日 : 2012/11/03
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
HN:
K-Shin07
性別:
男性
趣味:
ゲーム製作
自己紹介:
趣味でゲームを作っています
プログラマーです

開発ツール・使用言語等
WOLF RPG エディター
・HSP
・C
・VB
・Java
・C++
・C++/CLI
・C#
・アセンブラ
・Haskell

・PHP
・Ruby

・WPF

・DirectX( 9.0c )
・PhysX( 3.X系 )

Mail
 k07.alpha.stella[あっとマーク]gmail.com
[01/04 NONAME]
[01/04 NONAME]
[07/25 なつき]
[02/26 たかねぇ]
Copyright ©  -- α-Stella[R]_ブログ --  All Rights Reserved

Design by CriCri  /  Material by 妙の宴  /  Background by K-Shin07  /  powered by NINJA TOOLS / 忍者ブログ / [PR]