//====================================================================/
//                                                                    /
// KK-Multi Agent Simulator for Java                                  /
//                                                                    /
//====================================================================/

Version = 1.0;



//-------------------------------------------------------
// Component Tree
//-------------------------------------------------------
UNIVERSE {
    Space Space_K(0,0),Square_2D(50, 50, Loop, North, 1){
        AgtType WalkerA(0, 0)[50] {
            Dim X(0, 0) As Double = (0.0);
            Dim Y(0, 0) As Double = (0.0);
            Dim Layer(0, 0) As Integer = (0);
            Dim Direction(0, 0) As Double = (0.0);
            Dim Destination(0, 0) As Double = (0.0);
            Dim Speed(0, 0) As Double = (0.0);
        }
        AgtType WalkerB(0, 0)[50] {
            Dim X(0, 0) As Double = (0.0);
            Dim Y(0, 0) As Double = (0.0);
            Dim Layer(0, 0) As Integer = (0);
            Dim Direction(0, 0) As Double = (0.0);
            Dim Destination(0, 0) As Double = (0.0);
            Dim Speed(0, 0) As Double = (0.0);
        }
    }
}


//-------------------------------------------------------
// Agent Variable Initial Data
//-------------------------------------------------------
Initial_Value {
}


//-------------------------------------------------------
// Agent Rule
//-------------------------------------------------------
#begin_rule UNIVERSE
Univ_Init{

}

Univ_Step_Begin{

}

Univ_Step_End{

}

Univ_Finish{

}
#end_rule UNIVERSE




//-------------------------------------------------------
// Agent Rule
//-------------------------------------------------------
#begin_rule UNIVERSE.SPACE_K.WALKERA
Agt_Init{

// 初期値を設定します

My.X = 0
My.Y = rnd()*50
My.Direction = 0
My.Speed = rnd()*0.5 + 0.5
My.Destination = 0

}

Agt_Step{

// 前に進みます
Forward(My.Speed)

// 方向を修正します
If My.Destination> My.Direction and My.Destination< My.Direction+180  then
	Turn(3)
elseif	My.Destination< My.Direction-180   then
	Turn(3)
else
	Turn(-3)
end if

}
#end_rule UNIVERSE.SPACE_K.WALKERA




//-------------------------------------------------------
// Agent Rule
//-------------------------------------------------------
#begin_rule UNIVERSE.SPACE_K.WALKERB
Agt_Init{

// 初期値を設定します

My.X = 49
My.Y = rnd()*50
My.Direction = 180
My.Speed = rnd()*0.5 + 0.5
My.Destination = 180

}

Agt_Step{

// 前に進みます
Forward(My.Speed)

// 方向を修正します
If My.Destination> My.Direction and My.Destination< My.Direction+180  then
	Turn(3)
elseif	My.Destination< My.Direction-180   then
	Turn(3)
else
	Turn(-3)
end if

}
#end_rule UNIVERSE.SPACE_K.WALKERB




//-------------------------------------------------------
// Simulation Definition Division
//-------------------------------------------------------
Single_Simulation {
    Step_Max = 0;
    Time_Max = 0;
    End_Condition = "";
    Exec_Wait = 0;
    Exec_Order = Random;
    Random_Seed = 0;
    Log_File = "", Fixed, Append, 0;
    Replay_Log_File = "", Fixed, Append, 0;
    Redraw_Timing = Step;
    Redraw_Interval = 1;
    Garbage_Interval = 1;
}


//-------------------------------------------------------
// Simulation Loop Definition Division
//-------------------------------------------------------
Repeat_Simulation {
    Value_Change = None;
    Repeat_Max = 1;
}


//-------------------------------------------------------
// 2 Dimension Map Display Definition Division
//-------------------------------------------------------
Map_Output {
    Map_Space_Name = "UNIVERSE.SPACE_K";
    Map_Name = "Space_K";
    Font_Name = "Dialog";
    Font_Char_Set = 81;
    Font_Size = 12.0;
    Font_Style = 0;
    Font_Color = 0, 0, 0;
    Font_Background_Color = 255, 255, 255;
    Title = "";
    Axis_Label = "", "";
    Draw_Range = 0, 0, 50, 50;
    Ruled_Line = No;
    Remarks = Yes;
    Legend_Pos = Top;
    Background_Color = 0, 0, 0;
    Background_Transparent = No;
    Target_Layer = 0;
    Coordinate_Display = No;
    Space_Kind = Square_2D;
    BG_Pict = No;
    BG_Type = 0;
    BG_Var_Name = "";
    BG_File_Name = "";
    Disable = No;
    Position_x = 174;
    Position_y = 35;
    Size_x = 792;
    Size_y = 533;
    Origin_Position = 2;
    Output {
        Map_Element_Name = "WalkerA";
        Map_Element = Agent_Variable;
        Output_Expression = "UNIVERSE.SPACE_K.WALKERA";
        Draw_Line = No;
        Collection_Name = "";
        Line_Type = 0;
        Line_Arrow = 0;
        Line_Width = 0;
        Line_Color = 0, 0, 0;
        Agent_Color = 0,153,255;
        Marker_Id = 1;
        Icon_Type = 0;
        Icon_Var_Name = "";
        Icon_Transparent = No;
        Icon_Enlarg_Reduce = No;
        Icon_File_Name = "";
        Num_Display = No;
        Num_Var_Name = "UNIVERSE.SPACE_K.WALKER.NUM";
    }
    Output {
        Map_Element_Name = "WalkerB";
        Map_Element = Agent_Variable;
        Output_Expression = "UNIVERSE.SPACE_K.WALKERB";
        Draw_Line = No;
        Collection_Name = "";
        Line_Type = 0;
        Line_Arrow = 0;
        Line_Width = 0;
        Line_Color = 0, 0, 0;
        Agent_Color = 255,102,0;
        Marker_Id = 1;
        Icon_Type = 0;
        Icon_Var_Name = "";
        Icon_Transparent = No;
        Icon_Enlarg_Reduce = No;
        Icon_File_Name = "";
        Num_Display = No;
        Num_Var_Name = "";
    }
}


//-------------------------------------------------------
// Control Panel Definition Division
//-------------------------------------------------------
Control_Panel {
    Display_Area = 0, 0, 100, 100;
}


//-------------------------------------------------------
// Space Initial Value Definition Divsion
//-------------------------------------------------------
Space_Initial {
}


//-------------------------------------------------------
// Other Miscellaneous Data Definition Division
//-------------------------------------------------------
Others_Data {
    Indent = 4;
    Rule_Colored = Yes;
    Font_Name = "Dialog";
    Font_Char_Set = 0;
    Font_Size = 12.0;
    Font_Style = 0;
    Font_Color = 0, 0, 0;
    Font_Background_Color = 0, 0, 0;
    Window_Hide_Run = 1;
    Debug_Position_x = 75;
    Debug_Position_y = 75;
    Debug_Size_x = 400;
    Debug_Size_y = 200;
    Console_Position_x = 67;
    Console_Position_y = 512;
    Console_Size_x = 600;
    Console_Size_y = 120;
}