top of page

If文のエラーについて

artisoc4でポテンシャル法を用いて災害時の救助シミュレーションモデルを作成しようとしています。Univ_Step_Beginで決まったステップで救急隊エージェントを発生させたいのですが、実行しようとすると「ThenのあとにEndが必要です」というエラーが出てきます。どこにEndが必要か教えていただけますか。


以下はソースコードになります。

Univ_Step_Begin{
Dim ustep As Integer //現在のstep数

ustep = GetCountStep() //現在のステップ数を取得する


// 残りの救急隊エージェントを一定時間毎に2人ずつ配置する
if ((universe.Count_Rescue_Number > 2) and (ustep == 200)) then // 200ステップ経過したら

dim rescue as agt
dim k as integer

for k = 0 to universe.Count_Rescue_Number - 3
rescue= CreateAgt(universe.map.rescue)
// println(j)

do while true // 適切な場所にエージェントが置かれるまでループ
rescue.x = 0 // x座標を救助隊の出口に設定
rescue.y = 7 + Round(Rnd()) // y座標を救助値の出口に設定

// その場所が救助隊の出口で、人もいなければ、ループを抜ける
if universe.map.potential3(rescue.x, rescue.y, 0) == 0 and universe.map.position(rescue.x, rescue.y, 0) == false then
universe.map.position(rescue.x, rescue.y, 0) = true
break
end if
loop

next k


elseif ((universe.Count_Rescue_Number > 4) and (ustep == 400)) then // 400ステップ経過したら

// 残りの救急隊エージェントの生成
dim rescue as agt
dim k as integer

for k = 0 to universe.Count_Rescue_Number - 5
rescue= CreateAgt(universe.map.rescue)
// println(j)

do while true // 適切な場所にエージェントが置かれるまでループ
rescue.x = 0 // x座標を救助隊の出口に設定
rescue.y = 7 + Round(Rnd()) // y座標を救助値の出口に設定

// その場所が救助隊の出口で、人もいなければ、ループを抜ける
if universe.map.potential3(rescue.x, rescue.y, 0) == 0 and universe.map.position(rescue.x, rescue.y, 0) == false then
universe.map.position(rescue.x, rescue.y, 0) = true
break
end if
loop

next k


elseif ((universe.Count_Rescue_Number > 6) and (ustep == 600)) then // 600ステップ経過したら

// 残りの救急隊エージェントの生成
dim rescue as agt
dim k as integer

for k = 0 to universe.Count_Rescue_Number - 7
rescue= CreateAgt(universe.map.rescue)
// println(j)

do while true // 適切な場所にエージェントが置かれるまでループ
rescue.x = 0 // x座標を救助隊の出口に設定
rescue.y = 7 + Round(Rnd()) // y座標を救助値の出口に設定

// その場所が救助隊の出口で、人もいなければ、ループを抜ける
if universe.map.potential3(rescue.x, rescue.y, 0) == 0 and universe.map.position(rescue.x, rescue.y, 0) == false then
universe.map.position(rescue.x, rescue.y, 0) = true
break
end if
loop

next k


elseif ((universe.Count_Rescue_Number > 8) and (ustep == 800)) then // 800ステップ経過したら

// 残りの救急隊エージェントの生成
dim rescue as agt
dim k as integer

for k = 0 to universe.Count_Rescue_Number - 9
rescue= CreateAgt(universe.map.rescue)
// println(j)

do while true // 適切な場所にエージェントが置かれるまでループ
rescue.x = 0 // x座標を救助隊の出口に設定
rescue.y = 7 + Round(Rnd()) // y座標を救助値の出口に設定

// その場所が救助隊の出口で、人もいなければ、ループを抜ける
if universe.map.potential3(rescue.x, rescue.y, 0) == 0 and universe.map.position(rescue.x, rescue.y, 0) == false then
universe.map.position(rescue.x, rescue.y, 0) = true
break
end if
loop

next k


else

// println("何もしません")
// nothing to do

end if


}

artisoc4でポテンシャル法を用いて災害時の救助シミュレーションモデルを作成しようとしています。Univ_Step_Beginで決まったステップで救急隊エージェントを発生させたいのですが、実行しようとすると「ThenのあとにEndが必要です」というエラーが出てきます。どこにEndが必要か教えていただけますか。


以下はソースコードになります。

Univ_Step_Begin{
Dim ustep As Integer //現在のstep数

ustep = GetCountStep() //現在のステップ数を取得する


// 残りの救急隊エージェントを一定時間毎に2人ずつ配置する
if ((universe.Count_Rescue_Number > 2) and (ustep == 200)) then // 200ステップ経過したら

dim rescue as agt
dim k as integer

for k = 0 to universe.Count_Rescue_Number - 3
rescue= CreateAgt(universe.map.rescue)
// println(j)

do while true // 適切な場所にエージェントが置かれるまでループ
rescue.x = 0 // x座標を救助隊の出口に設定
rescue.y = 7 + Round(Rnd()) // y座標を救助値の出口に設定

// その場所が救助隊の出口で、人もいなければ、ループを抜ける
if universe.map.potential3(rescue.x, rescue.y, 0) == 0 and universe.map.position(rescue.x, rescue.y, 0) == false then
universe.map.position(rescue.x, rescue.y, 0) = true
break
end if
loop

next k


elseif ((universe.Count_Rescue_Number > 4) and (ustep == 400)) then // 400ステップ経過したら

// 残りの救急隊エージェントの生成
dim rescue as agt
dim k as integer

for k = 0 to universe.Count_Rescue_Number - 5
rescue= CreateAgt(universe.map.rescue)
// println(j)

do while true // 適切な場所にエージェントが置かれるまでループ
rescue.x = 0 // x座標を救助隊の出口に設定
rescue.y = 7 + Round(Rnd()) // y座標を救助値の出口に設定

// その場所が救助隊の出口で、人もいなければ、ループを抜ける
if universe.map.potential3(rescue.x, rescue.y, 0) == 0 and universe.map.position(rescue.x, rescue.y, 0) == false then
universe.map.position(rescue.x, rescue.y, 0) = true
break
end if
loop

next k


elseif ((universe.Count_Rescue_Number > 6) and (ustep == 600)) then // 600ステップ経過したら

// 残りの救急隊エージェントの生成
dim rescue as agt
dim k as integer

for k = 0 to universe.Count_Rescue_Number - 7
rescue= CreateAgt(universe.map.rescue)
// println(j)

do while true // 適切な場所にエージェントが置かれるまでループ
rescue.x = 0 // x座標を救助隊の出口に設定
rescue.y = 7 + Round(Rnd()) // y座標を救助値の出口に設定

// その場所が救助隊の出口で、人もいなければ、ループを抜ける
if universe.map.potential3(rescue.x, rescue.y, 0) == 0 and universe.map.position(rescue.x, rescue.y, 0) == false then
universe.map.position(rescue.x, rescue.y, 0) = true
break
end if
loop

next k


elseif ((universe.Count_Rescue_Number > 8) and (ustep == 800)) then // 800ステップ経過したら

// 残りの救急隊エージェントの生成
dim rescue as agt
dim k as integer

for k = 0 to universe.Count_Rescue_Number - 9
rescue= CreateAgt(universe.map.rescue)
// println(j)

do while true // 適切な場所にエージェントが置かれるまでループ
rescue.x = 0 // x座標を救助隊の出口に設定
rescue.y = 7 + Round(Rnd()) // y座標を救助値の出口に設定

// その場所が救助隊の出口で、人もいなければ、ループを抜ける
if universe.map.potential3(rescue.x, rescue.y, 0) == 0 and universe.map.position(rescue.x, rescue.y, 0) == false then
universe.map.position(rescue.x, rescue.y, 0) = true
break
end if
loop

next k


else

// println("何もしません")
// nothing to do

end if


}

bottom of page