課題
タートルグラフィクスで,次に示すようなデザインの「A」の文字を描くプログラムを作成し,プログラムを提出してください.
- 図中のパラメタw,h,sに具体的に値を設定したとき,設定された値に応じて「A」が描かれるように変数を使ってプログラムを記述してください.
- 「A」の文字のみを描いてください.上図のパラメタを表す文字(w,h,sなど),寸法を示している黒い線を描く必要はありません.
- 「A」の色は上図と同じである必要はありません.
- どこからどのように描いても構いません.描画の手順は自由に決めてください.
- パラメタw,h,sには適切に値が設定されると仮定して構いません.たとえば0以下の値が指定されるといったことを考える必要はありません.
- [重要] プログラムにおいては,変数や亀の動作にコメントを適切に添えて,プログラムの意味が分かりやすくなるように工夫してください. 各行に「直訳」にあたるコメントをつけることを求めるわけではありません. コメントの付け方については,サンプルプログラムも参考にしてください.
補足
今回はテンプレートは用意していません. 新しいファイルとしてプログラムを作成してください. プログラミングの方法について情報が必要であれば,これまでの課題を参照してください. たとえば「タートルグラフィクスによる自由制作」の課題が参考になるでしょう.
目次
Tips
- タートルグラフィクス
- 色表
- 四則演算に関する注意
- 乗算: 演算子は「*」です.数学のように記号を省略することはできません.
- 除算: 演算子は「/」です.
- 演算の優先順位
数学と同じです.括弧で優先順位を明示できます. ただし計算式での括弧には常に( )を使います. { }や[ ]は使いません. - markとback(タートルグラフィクスの機能)
markすると亀が現在位置と向きを記憶します(markを設置します). その後backすると亀がmarkした状態に戻ります. backするとそのmarkに関する記憶はなくなります(markを回収します).sz = 100 mark() # 現在の位置と向きを記憶する forward(sz) turn(120) forward(sz) back() # 記憶している場所まで線を描いて戻る.向きも記憶したときの状態に合わせる. mark() # 現在の位置と向きを記憶する(上のbackで最初のmarkは忘れられているため再度マークする) forward(sz) turn(-120) forward(sz) # 記憶している場所まで線を描かずに戻る.向きも記憶したときの状態に合わせる. begin_hover() back() end_hover()
この例で示している通りhoverしている間に「back( )」とすれば線を描かずに戻ります.
2つ以上(backしないまま)続けてmarkすることもできます. markは全て順番に記憶されます. markが2つ以上ある状態でbackすると最後にmarkした状態(最新のmark)に戻ります. この場合もそのmarkに関する記憶はなくなります(markが1つ減ります). backするたびにmarkしたときと逆順に新しいmarkから順位古いmarkに戻っていくことになります. なおmarkがないときにbackしても何も起きません.マークは「スタック」(stack)というデータ構造を使って管理しています.
サンプルプログラム
参考のために,サンプルプログラムを提供します.
注意
以下のことに注意してください.
- プログラムを変更した場合は,必ずファイルを保存して,その後プログラムを実行してください.
- ファイルを保存する.
- (再度)プログラムを実行する
- プログラムを実行してエラーがでたら「よくある質問」を参照してみてください. もちろん分からないことがある場合には演習中に質問してください.
- プログラムを提出する際には「課題提出に関する注意」を必ず守るようにしてください.