*1.書道ロボット [#kd961cb3] &ref(2005/C1/練習問題/IMGP0122.JPG,ヴェンジャミン大田); **プログラム [#sda4ca92] sub down() sub down() //筆を上げるサブルーチン { OnRev(OUT_B); Wait(010); Off(OUT_B); } sub up() sub up() //筆を下げるサブルーチン { OnFwd(OUT_B); Wait(010); Off(OUT_B); } void turn_right(int t) void turn_right(int t) //右に旋回するサブルーチン { OnFwd(OUT_A); OnRev(OUT_C); Wait(t); } void turn_left(int t) void turn_left(int t) //左に旋回するサブルーチン { OnFwd(OUT_C); OnRev(OUT_A); Wait(t); } void straght(int t) void straght(int t) //直進するサブルーチン { OnFwd(OUT_A+OUT_C); Wait(t); } task main() { down(); straght(060); Off(OUT_A+OUT_C); up(); OnRev(OUT_A+OUT_C); Wait(100); { // (「左」1画目) down(); //筆を下げる straght(060); //線を引きながら直進 Off(OUT_A+OUT_C); //停止 up(); //筆を上げる // (2画目) OnRev(OUT_A+OUT_C); Wait(100); turn_right(130); straght(040); Off(OUT_A+OUT_C); down(); straght(065); up(); OnRev(OUT_A+OUT_C); Off(OUT_A+OUT_C); //2画目の開始点まで移動 down(); //筆を下ろす straght(065); //線を引きつつ直進 up(); //筆を上げる // (3画目) OnRev(OUT_A+OUT_C); Wait(95); turn_left(120); straght(065); Off(OUT_A+OUT_C); down(); straght(045); Off(OUT_A+OUT_C); up(); Off(OUT_A+OUT_C); //開始点まで移動 down(); //筆を下ろす straght(045); //書く Off(OUT_A+OUT_C); //停止 up(); //筆を上げる // (4画目) OnRev(OUT_A+OUT_C); Wait(085); turn_right(104); straght(060); Off(OUT_A+OUT_C); down(); straght(030); Off(OUT_A+OUT_C); up(); Off(OUT_A+OUT_C); //開始点まで移動 down(); //筆を下ろす straght(030); //書く Off(OUT_A+OUT_C); //停止 up(); //筆を上げる // (5画目) OnRev(OUT_A+OUT_C); Wait(065); turn_left(100); straght(037); Off(OUT_A+OUT_C); down(); straght(056); Off(OUT_A+OUT_C); up(); Off(OUT_A+OUT_C); //開始点まで移動 down(); //筆を下ろす straght(056); //書く Off(OUT_A+OUT_C); //停止 up(); //筆を上げる } -初めギアが噛み合わなかったので、噛み合わせるために数時間無駄にした。プログラムを作って、動きもそれらしくなったから、紙に書いてみようとしたらタイヤに紙が絡まってうまくいかないこっとがっ多々あり、頑張って押えててもタイヤが指に当たったりして10回に6回は失敗した。その度に発狂しそうになった。 [#da6f692e] コメントどうぞ -せっかくなので void go_straight(int t) のような関数を定義してみましょう。少し簡明なプログラムになると思います。 -- [[松本(教員)]] &new{2005-11-11 (金) 22:46:44}; -プログラム自体は良くまとめられています。コメント文を入れるとより分かりやすくなるでしょう。 -- [[かとりーぬ(TA)]] &new{2005-11-25 (金) 19:06:38}; #comment