マイクロマウス製作六十七日目


こんにちは。

金曜の夜にたっぷり遊んで疲れた体を元に戻すために土曜日を浪費した松崎です。

土曜はそんな感じでぐったりまったり過ごしましたが、
日曜日はマイクロマウスの迷路の補修に行ってきました♪

カビを防ぐために、ステイン材を塗りました。
(…わたしはちょっと遅めにお邪魔したのでほとんど仕事していないのですが…)

写真 2013-08-25 11 05 15

↑なかなか見る機会のない(?)コースの裏側です。

しっかり乾かします。

写真 2013-08-25 14 33 44

見慣れた光景。
写真 2013-08-25 16 49 27

写真 2013-08-25 16 57 27

こんな風に収納されていたのですね!(こちらはハーフサイズのコースです)
写真 2013-08-25 16 56 54

みなさんにもお会いできてとても楽しかったです!
あと、マッピーについていろいろ教えていただけたのも大変嬉しかったです♪

はい、マイクロマウス研修です。
壁切れ補正をやっています。

前回のブログはこちら

以下のようなコースの場合に、壁があるほうを見て壁が切れるまで走ると、
コーナーなので無限に走ってしまうという問題が生じました。

写真 2013-08-22 12 01 37

これをどうやって解決したらいいんだろう??

ちょっと忙しそうなのり先生に「ヒントください!」と言ったら、
fast.cを見てみて。そこをちょっと書き換えたら問題は解決するはず…」
とのこと。

早速見てみました。

う~ん、う~ん。

個人的にはここが怪しいかなあと思いました。


	while((mypos.x != x) || (mypos.y != y)){		//ゴールするまで繰り返す


		switch(get_nextdir(x,y,MASK_SECOND,&glob_nextdir))	//次に行く方向を戻り値とする関数を呼ぶ
		{
			case front:									//直線をまとめて走るようにする
				straight_count++;
				break;
			
			case right:
				straight_for_fast(straight_count*SECTION,0);		//直線を走る
				rotate(right,1);						//右に曲がる
				straight_count = 1;						//走る直線の距離をリセット
				break;
			
			case left:
				straight_for_fast(straight_count*SECTION,0);		//直線を走る
				rotate(left,1);							//左に曲がる
				straight_count = 1;						//走る直線の距離をリセット
				break;
			
			case rear:
				straight_for_fast(straight_count*SECTION,0);		//直線を走る	
				rotate(left,2);							//後ろに向く
				straight_count = 1;						//走る直線の距離をリセット
				break;
		}
	
		mypos.dir = glob_nextdir;	//自分の向きを修正

でた!Switch文!!!

新キャラ!

Switch文はたくさんの選択肢を持つ分岐処理をよりすっきり書く方法のようです。

…で??

これをどうしたら昨日の問題を解決できるんだろう??

悔しいけど、のり先生のアドバイスなしで新しいことがまだできないぞ…><
というか、やはりプログラミングが難しい!!
わかれば楽しいけどわかるまでが遠いなあというイメージ。

今日はSwitch文という新キャラに悩まされました。

何かいい本はないものでしょうか?

おすすめがありましたらお教えいただけますと幸いです(;_;)


Posted in Report on the assembly of Pi:Co Classic