マイクロマウス迷路解析プログラムは完成
やっと完成させることができた!
原因は変数を用意するときの型である。
いまだに若干理解できていないが、そんな大きな値が入ると思っていなかったのでcharで宣言していたがunsignedで宣言したら、半分までしか処理されないバクが直った。
おかしいと思って考えてみると、これはオーバーフローしていると考えられたので、宣言を char から shortに変えてみた。
すると案外簡単に直ってしまった。
dami4はlongでkはcharで宣言されていた。
mapはshortである。dami4は256個用意された配列でmapは16×16個用意された二次元配列である。
for(y=0;y<16;y++){
for(x=0;x<16;y++){
map[x][y]=*(dami4+k);
k++;
}
}
kがcharでオーバーフローしたと考えられるが、8ビッド以上超える回数も繰り返す二重ループか?
しかも255回ループでなく半分の状態で処理が止まっていることからすると半分処理された時点でオーバフローしたことになる。
う~ん・・・なんでだろうっ・・・・もう少し考えてみる
今は壁データを配列に入れながらマウスがどこに向かって走行すべきなのかプログラム中
0 Comments:
Post a Comment
<< Home