[ 情報基礎演習[全学向] >  情報基礎演習[全学向](2025・前期・月4/月5) 課題 >  [課題13] プログラミング ー 時計の描画 ]

[課題13] プログラミング ー 時計の描画

課題

以下に示すプログラムのテンプレートを使って, タートルグラフィクスで時計を描くプログラムを作成し,プログラムを提出してください.
時計の図

目次

  1. プログラムテンプレート
  2. Tips
  3. サンプルプログラム
  4. 注意

プログラムテンプレート

次に示すテンプレート(雛型)をプログラム作成に利用してください. このテンプレート(clock_template.py)はダウンロードする際に名前を適宜変更して保存した上で利用してください.

ダウンロードの方法:: リンクを右クリックして表示されるメニューから『リンク先のファイルを保存する』に相当する項目を選択します.

ファイルを保存するフォルダは前回と同じく次のようにしてください(別のフォルダにダウンロードした場合はファイルを移動させてください).

  ExBasicInfo > Programming

同じフォルダに「pyturtle.py」があることを想定しています. 今まで作成したプログラムも置いてあるはずです.

ダウンロードしたら,idleを起動してファイルを開いてみてください.

  1. Anaconda Prompt(Win)/ターミナル(Mac)を起動
  2. Windowsの場合,次のように入力
    idle  
    
    Macの場合,次のように入力
    idle3 
    
    idleの「Shell」が起動します.


  3. ファイルを開く
    idleの「Shell」でダウンロードしたファイルを開きます.
    [File] > [Open]
    idleの「Editor」が起動して,指定されたファイルが開かれます.

テンプレートの概要

このテンプレートでは時刻データを指定して,変数「hour」と「minute」に「時」と「分」の値をそれぞれ代入するようになっています. テンプレートはそのまま実行できます. まずは次の「時刻の指定方法」の説明を読んで,テンプレートのままで実行してみてください. 時刻を指定すると,その時刻をポップアップ画面に表示するようになっています.

プログラムでの時刻の指定方法

さて今回のプログラムは「idle]の「Editor」を介して次のように実行します.

[Run] > [Run Module]

実行すると「Python Turtle Graphics」という白いキャンバスのウインドウが新しく開きます. ウインドウが表示されたら,キャンバスの上でマウスを左クリックするか,[Enter]を押してください.

ここで画面に小さなウインドウが出てきます.そのウインドウの入力欄に「時」と「分」を空白文字で区切って指定します.次の例では「10時15分」を指定しています.

 10  15

時刻の入力を省略することもできます(何も指定しないで[OK]ボタンを押すか,[Enter]を押す). 省略した場合は,時刻はランダムに決定されます.

取り組む内容と課題の進め方

上で説明した通り,テンプレートでは実行した直後に時刻を指定するようになっています. この処理は次の行(9行目)で行われています.


    # 時刻データを得る(hour時minute分)
    # hour   = 0,1,...,23のいずれか
    # minute = 0,1,...,59のいずれか 
    hour,minute = feed_time("何時何分?",2)

この行の処理で時刻が指定されると,左辺の変数「hour」に「時」の値が代入され,変数「minute」に「分」の値が代入されます. さきほどの例と同じく「10時15分」を指定したとすると,上の処理が終わったときに, 次のように値が代入されることになります.

  hour = 10
  minute = 15

課題では,このようにして得られる変数hour,minuteの値に従って時計を描く亀の動作の記述をプログラムに追加してください. 指定される時刻次第で(つまりhour,minuteに代入される値次第で),描かれる時計の各針の向きも変わります.

課題には次のような手順で取り組むとよいでしょう.

  1. 時計盤(のみ)を描いてみる
  2. 短針(長針)を指定された時刻に合わせて描くようにする
  3. もう一方の針を指定された時刻に合わせて描くようにする (一つ描ければ,もう一つも同じ要領で描けるだろう)
  4. 余裕があれば,さらに拡張を試みる

時計盤や針などの描画する部品の形状パラメタは変数を使って記述しておくと, デザインの調整が楽になります.

[Option] 秒をデータとして追加する場合

秒を時刻データに含める場合は,テンプレートの次の行(9行目)を以下で説明するように変更します.


    # 時刻データを得る(テンプレートの場合)
    hour,minute = feed_time("何時何分?",2)

たとえば秒を表す変数をsecondとする場合は次のように書きます.


    # 時刻データを得る(「秒」を追加する場合)
    hour,minute,second = feed_time("何時何分何秒?",3)

また時刻表示のメッセージに秒のデータを含めるには,「say」の行を次のように変更します.


    say(f"{hour}時{minute}分{second}秒です")

このように「秒」を追加した場合でも,追加しない場合と同様にデータを入力できます. 時刻を指定しない場合はやはりランダムに決定されます.

なお「秒」の追加は課題としては必須ではありません.

Tips

サンプルプログラム

参考のために,サンプルプログラムを提供します.

注意

以下のことに注意してください.

[ 情報基礎演習[全学向] >  情報基礎演習[全学向](2025・前期・月4/月5) 課題 > [課題13] プログラミング ー 時計の描画 ]