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度より大きいなら時計回りで
		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
Last-modified: 2005-12-09 (金) 13:31:53