アットウィキロゴ

GamemakerLiteでキューを使うには?

データ構造ってPro版のみじゃん・・Liteで何とかならないの?
→自前でキューオブジェクト作ればいいんじゃね

以下,文字列用キューオブジェクト及びスクリプト
デキューがちょっと頭悪いので要改善

[objQueue]
[Create Event]
 DataPointer = 0;

[Scripts:enuqueue]
 //enuqueue(QueueObject,Data)
 with(argument0){ 
     Data[DataPointer] = argument1;
     DataPointer+=1;
 }

[Scripts:deuqueue]
 //dequeue(QueueObject)
 var i,tmp;
 with(argument0){
     if(DataPointer>0){
         tmp = Data[0];
         for(i=0;i<DataPointer-1;i+=1){
             Data[i] = Data[i+1];
         }
         Data[i] = false;
         DataPointer-=1;
         return tmp;
     }else return "";
 }

使い方

キューオブジェクトを作成して,Scriptの引数にオブジェクトとデータを渡す.
queue = instance_create(x,y,objQueue);
enqueue(queue,"Fox");
enqueue(queue,"Cute");

dequeue(queue);
draw_text(x,y,dequeue(queue));
[出力]
Cute

同一インスタンスで複数のキューを扱いたいなら
queue  = instance_create(x,y,objQueue);
queue2 = instance_create(x,y,objQueue);
enqueue(queue ,"Fox");
enqueue(queue ,"Cute");
enqueue(queue2,"Love");

dequeue(queue);
draw_text(x,y,dequeue(queue)+dequeue(queue2));
[出力]
CuteLove

逆に複数インスタンスで同一のキューを扱いたいならglobalで作成すればいい
[objPlayer1]
global.queue  = instance_create(x,y,objQueue);
enqueue(global.queue ,"Fox");
enqueue(global.queue ,"Cute");
dequeue(global.queue);
[objPlayer2]
enqueue(global.queue ,"Love");
enqueue(global.queue ,"Favorite");
draw_text(x,y,dequeue(global.queue));
[出力]
Fox


名前:
コメント:

  • 登録タグ一覧
キュー データ構造
最終更新:2011年06月16日 03:38
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。