これは、自分が白チームである場合のプログラムです。
このプログラムでは、主に”wait”と”if”で状況を判断して動きます。
自陣側の固定オブジェクトを3つ音を鳴らしてタッチし、自陣側の奥の白の壁、
相手側の白の壁、相手側の青の壁を音を鳴らしてタッチします。その後は黒ラ
イン上以外で障害物にあたると音を鳴らして、方向を変えて進む無限ループに
切り替えます。
Private Sub cmtPerfect_Click()
RCX.SelectPrgm (3)
With RCX
.BeginOfTask (0)
.SetSensorType 0, 1 インプットポート1にタッチセンサー
.SetSensorMode 0, 1, 0
.On "0,2" モーターを動かし、2秒後に壁に
.Wait 2, 600 ぶつかっていれば、左に90度回転
して進む
.If 9, 2, 2, 2, 0
.On "0,2"
.Else
.AlterDir "0"
.Wait 2, 95
.AlterDir "0"
.EndIf
.Wait 2, 150
.If 9, 0, 2, 2, 0 その1.5秒後、固定オブジェクトに
.On "0,2" タッチしていれば、音を鳴らし、左に
.Else 90度回転して進む
.AlterDir "0"
.Wait 2, 10
.PlaySystemSound 1
.Wait 2, 85
.AlterDir "0"
.EndIf
.Wait 2, 300
.If 9, 1, 0, 2, 30 その3秒後、ライトセンサーの値が
.AlterDir "2" 30以上ならば、つまり黒ラインに
.Wait 2, 95 いなければ右に90度回転する
.AlterDir "2"
.Wait 2, 50
.EndIf
.Wait 2, 350
.If 9, 0, 2, 2, 0 その3.5秒後、固定オブジェクトに
.On "0,2" あたっていれば音を鳴らし、左に90
.Else 度回転
.AlterDir "0"
.Wait 2, 10
.PlaySystemSound 1
.Wait 2, 85
.AlterDir "0"
.EndIf
.Wait 2, 300
.If 9, 0, 2, 2, 0 その3秒後、壁にぶつかっていたら右に
.On "0,2" 回転し進む
.Else
.AlterDir "2"
.Wait 2, 110
.AlterDir "2"
.EndIf
.Wait 2, 500
.If 9, 0, 2, 2, 0 その5秒後に、固定オブジェクトに
.On "0,2" タッチしていたら音を鳴らし、右に
.Else 回転し進む
.AlterDir "2"
.Wait 2, 10
.PlaySystemSound 1
.Wait 2, 85
.AlterDir "2"
.EndIf
.Wait 2, 250
.If 9, 1, 0, 2, 50 その2.5秒後、白ライン上にいな
.On "0,2" ければ左に回転
.Else
.AlterDir "0"
.Wait 2, 60
.AlterDir "0"
.Wait 2, 100
.EndIf
.Wait 2, 1200
.If 9, 0, 2, 2, 0 その12秒後、奥の壁に触れていれば
.On "0,2" 左に回転
.Else
.AlterDir "0"
.Wait 2, 95
.AlterDir "0"
.EndIf
.Wait 2, 500
.If 9, 0, 2, 2, 0 その5秒後、左端の壁にあたっていれば
.On "0,2" 右に回転
.Else
.AlterDir "2"
.Wait 2, 95
.AlterDir "2"
.EndIf
.Wait 2, 200
.If 9, 0, 2, 2, 0 その2秒後、白ライン上の奥の壁にあた
.On "0,2" っていれば音を鳴らし、右に回転
.Else
.AlterDir "2"
.Wait 2, 10
.PlaySystemSound 1
.Wait 2, 90
.AlterDir "2"
.EndIf
.Wait 2, 700 その7秒後に左に回転し、壁にぶつかっ
.AlterDir "0" た所が白ライン上なら音を鳴らす
.Wait 2, 75
.AlterDir "0"
.Wait 2, 300
.If 9, 1, 0, 2, 50
.PlaySystemSound 1
.EndIf
.AlterDir "2"
.Wait 2, 95
.AlterDir "2"
.Wait 2, 200
.AlterDir "0"
.Wait 2, 95
.AlterDir "0"
.Wait 2, 250 その後右に回転し、2秒後に左回転
.If 9, 0, 2, 2, 0 2.5秒後に壁にぶつかっていれば
.On "0,2" 音を鳴らす
.Else
.AlterDir "2"
.Wait 2, 10
.PlaySystemSound 1
.Wait 2, 170
.AlterDir "2"
.EndIf
.Loop 2, 0 ここから無限ループへ
.If 9, 0, 2, 2, 0 左のタッチセンサーが触れると
.On "0,2" 少し右回転し、右のタッチセンサー
.Else が触れると少し左回転、という感じ
.AlterDir "2" で進み、黒ライン上以外で障害物に
.Wait 2, 10 ふれると音を鳴らす
.If 9, 1, 0, 2, 40
.PlaySystemSound 1
.EndIf
.Wait 2, 80
.AlterDir "2"
.Wait 2, 50
.EndIf
.If 9, 2, 2, 2, 0
.On "0,2"
.Else
.AlterDir "0"
.Wait 2, 10
.If 9, 1, 0, 2, 40
.PlaySystemSound 1
.EndIf
.Wait 2, 85
.AlterDir "0"
.Wait 2, 50
.EndIf
.EndLoop
.EndOfTask
End With
End Sub
トップへ
これからの予定
© 1997 susami@gaea.ocn.ne.jp