2005/B4
左という字を書くプログラム(課題1)†
//書道プログラム
// 作成者 satoshi
// 作成日 2005-11-2
void straight(int t){ //まっすぐ進む関数
OnFwd(OUT_A+OUT_C);
Wait(t);
Off(OUT_A+OUT_C);
}
void turn_right(int t){//右回転の関数
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(t);
Off(OUT_A+OUT_C);
}
void turn_left(int t){//左回転の関数
OnRev(OUT_A);
OnFwd(OUT_C);
Wait(t);
Off(OUT_A+OUT_C);
}
void back(int t){//バックする関数
OnRev(OUT_A+OUT_C);
Wait(t);
Off(OUT_A+OUT_C);
}
void up(int t){//ペンを上げる関数
OnRev(OUT_B);
Wait(t);
Off(OUT_B);
}
void down(int t){//ペンを下げる関数
OnFwd(OUT_B);
Wait(t);
Off(OUT_B);
}
task main(){
int turn_90=88,turn_180=180,go_15c=120,u=7,go_12c=90;//時間をはかって変数に入力
straight(go_15c);//左の横棒を書く
up(u);//ペンを上げる
straight(go_12c);//ここから↓
turn_left(turn_90);
straight(go_15c/4);
turn_left(turn_90);
straight(go_15c/2);
turn_left(2*turn_90/3);
back(go_12c);//ここまでで左の払いの書きはじめまで移動
down(u);//ペンを下げる
straight(go_15c);//払いを書く
up(u);//ペン上げ
straight(go_12c-15);//ここから↓
turn_left(turn_90+35);// (+35は環境の違いによる微調整)
back(65);//ここまでで左の「工」の部分の書きはじめまで移動
down(u);//ペン下げ
straight(go_12c);//ここから↓
up(u);
straight(go_12c/2-10);// (-10微調整)
turn_right(turn_90);
back(go_12c);
down(u);
straight(go_12c/2);
up(u);
straight(go_12c-10);
turn_right(turn_90+20);// (+20微調整)
back(30);
down(u);
back(go_12c+30);//ここまでで左の「工」の部分をかく
up(u);
}
- 実際の書いた字とロボの写真をのせました。
- 関数が多いので展開が遅い気がする。
- 関数なしで書いた方が早いのだろうか?
- 角度とかの時間を微調整してるので
- あんまり変数にした意味がなかったかも
- 関数はコンパイル時に展開されてしまいますが、サブルーチンは実行の度に呼ばれるのであまりプログラムのサイズが大きくなってダウンロードに時間がかかるようでしたら、サブルーチンも効果的に使ってみてください。 -- 松本(教員)
- プログラムは比較的よくまとまっていて簡潔に書けていますが、より分かりやすくするためにコメントをいれてみましょう。 -- まいける(TA)
- 動作の解説を入れるともっと見やすくなるのでは... -- ゆん(TAM)
- 見ました。 -- ゆん(TA)