| 返信有り難うございます。 $()の使い方があやふやだったのでアドバイスを頂けまして非常に勉強になりました。 早速アドバイスして頂いた二点に手を加えてみましたが、 以下の部分でエラーが出てしまいました。 PS = "$(Call(MapReader,PX,PY))" の部分でエラーが出ているので、MapReaderの部分でのミスか記述ミスだと思うのですが・・・ なお、書き忘れていましたが、以前の状態であると PaintString "現在状態 = $(PS)" の部分でエラーが出ていたのでおそらくここもどこかおかしかった(おかしい)のだと思います。 よろしければまた皆さんのお手を化して頂けたらと思います。 よろしくお願いいたします。 以下が修正したソースになります。 迷路: Show Set PX 2 Set PY 2 Set PS 0 Cls Do While 1 Wait Click ClearPicture PaintString 0 0 "キーが押されました" For i = 1 To 229 If KeyState(i) Then PaintString "キー番号 = $(i)" If i = 37 Then #← Incr PY -1 If PY > 0 Then PS = "$(Call(MapReader,PX,PY))" If PS = 0 Then PaintString "西に進んだ" ElseIf PS = 1 Then PaintString "進めない" Incr PY 1 ElseIf PS = 3 Then Goto ゴール EndIf ElseIf PY < 1 Then PaintString "進めない" Incr PY 1 EndIf ElseIf i = 38 Then #↑ Incr PX -1 If PX > 0 Then PS = "$(Call(MapReader,PX,PY))" If PS = 0 Then PaintString "北に進んだ" ElseIf PS = 1 Then PaintString "進めない" Incr PX 1 ElseIf PS = 3 Then Goto ゴール EndIf ElseIf PX < 1 Then PaintString "進めない" Incr PX 1 EndIf ElseIf i = 39 Then #→ Incr PY 1 PS = "$(Call(MapReader,PX,PY))" If PS = 0 Then PaintString "東に進んだ" ElseIf PS = 1 Then PaintString "進めない" Incr PY -1 ElseIf PS = 3 Then Goto ゴール EndIf ElseIf i = 40 Then #↓ Incr PX 1 PS = "$(Call(MapReader,PX,PY))" If PS = 0 Then PaintString "南に進んだ" ElseIf PS = 1 Then PaintString "進めない" Incr PX -1 ElseIf PS = 3 Then Goto ゴール EndIf EndIf PaintString "現在位置 = ($(PX),$(PY))" PaintString "現在状態 = $(PS)" EndIf Next Loop ゴール: PaintString "Goal!" Refresh Wait Click Return
MapReader: Array Line "1111111;1010001;1010101;1010101;1000131;1111111" ";" Local MS 0 #Set Line1 1111111 #Set Line2 1010001 #Set Line3 1010101 #Set Line4 1010101 #Set Line5 1000131 #Set Line6 1111111 #MS = $(Mid($(Line[Args(1)]),$(Args(2)),1)) Return Mid($(Line[Args(1)]),$(Args(2)),1)
|