[[2005/C3/しかた]]

「庄」の漢字を書くロボットのプログラムです。

 #define A 10 // 移動の基準
 #define C 100 // 方向転換の基準
 
 void idou(int x)// 移動する
 {
	OnFwd(OUT_A);
	OnFwd(OUT_C);
	Wait(x*A);
 }
 void houkou(int x)// 方向転換する
 {                           //ちなみに、与えられた引数の角度方向転換する
	if(x>180){     //180度より大きいなら時計回りで
 {                       //ちなみに、与えられた引数分の角度、方向転換する
	if(x>180){    //180度より大きいなら時計回りで
		OnFwd(OUT_A);
		OnRev(OUT_C);
		Wait((360-x)*C/90);
		Off(OUT_A+OUT_C);
	}
	else{              //180度以下なら逆時計回りで回転
		OnRev(OUT_A);
		OnFwd(OUT_C);
		Wait(x*C/90);
		Off(OUT_A+OUT_C);
	}
 }
 sub down()// 下げる
 {
	OnFwd(OUT_B);
	Wait(50);
	Off(OUT_B);
 }
 sub up()// 上げる
 {
	OnRev(OUT_B);
	Wait(50);
	Off(OUT_B);
 }
 task main()
 {
	down();
	idou(2);
	up();
	
	houkou(270);
	idou(3);
	houkou(90);
	down();
	idou(7);
	up();
	
	houkou(180);
	idou(7);
	houkou(90);
	down();
	///////curve///////
	repeat(10){
		idou(1);
		houkou(358);
	}
	up();
	
	houkou(20);
	houkou(180);
	idou(5);
	houkou(270);
	idou(3);
	down();
	idou(4);
	up();
	
	houkou(90);
	idou(2);
	houkou(90);
	idou(2);
	houkou(90);
	down();
	idou(5);
	up();
	
	houkou(270);
	idou(3);
	houkou(180);
	down();
	idou(7);
	up();
 }


感想
 中途半端に関数とか使ってみました。
 与えられた引数で、カーブとかも可能なプログラムを作りたかったのですが、
 妥協しました。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS