基礎プログラミングa 第11回 (12/5)

(Basic Programing)

はじめに

前回の要約

補足解説 メールの添付ファイルを取り巻く混乱

5 Staging モジュールを使った 少し進んだScalaプログラミング(2)

5.8 for を使った繰り返し

縦並びの九々
縦並びの九々
応用 (2重のループ の練習)

注)この場合は前述のような1つのforにまとめる書き方はできない。

5.9 例題集について補足:

直線で曲線
直線で曲線 円を三角に1 円を三角に2

5.10 いろんな図形を描いてみる(2)

市松模様

使う構文 if ~ else
演算子 % 整数の剰余
解説は別ページ

プログラム 実演例

ーーー (以下 5.11 ~ 5.13節は各自読んでおいて下さい)

5.11 色の指定(まとめ)

a 色の表現

線の色を指定する setPenColor(green) など
色を表す値として、

  1. 普通の(色を表す)英単語 が  リファレンス に pre-defineされたものとして列挙されていて、
     プログラム中に 変数や定数と同様に使える。
  2. HTMLのSVG規格で使われる色名が
    w3.orgのページ に書かれている。
     これは Stagngリファレンスにあるように
     namedColor(“mediumaquamarine”) のように文字列をnamedColor関数に渡して使う。

等が使えるが、自分でRGB値を指定してcolor関数で作ることもできる。

その他、色について

5.12 オブジェクトとしての描画関数

以前に、レシーバなしの関数呼出(forward()など)ではなく、
タートル t に対してメソッド呼出(t.forward() などの形)で呼び出したのと同様に、
描画関数の返す値(オブジェクト)を変数に記憶しておいて、
そのオブジェクトをレシーバ(ピリオドの左側)としてメソッドを呼び出すことができる。
メソッドとして、すでに描画した図形の、形や色を変える機能がいくつかある。

val c=s.circle(0,0,100)
animate{
	c.translate(-1,0)			// オブジェクトを相対移動
}
// 描画関数はオブジェクトを値として返す
// オブジェクトに様々なメソッドが使える

// 描画オブジェクトの属性を後から(メソッド呼び出しで)変更する例
val s=Staging
val c=s.circle(0,0,100)
c.setPenColor(blue)
c.setFillColor(yellow)

他に、rotate() ; 原点を中心に回転させる、scale() ;サイズを伸縮させる、
といったメソッドもある。

5.13 乱数を使ってみる

loop {
	val x=random(100)
	val y=random(100)
	circle(x,y,20)
	Thread.sleep(1000)
}
練習

(今日の内容をもとに、各自取り組んでみて下さい)

  1. 例題集(前回その前半を扱った)の、
    続き(7~12)をやってみる。
  2. 5.10 節に沿って、市松模様を描く(要提出)
  3. サイコロ(の役割を果たすプログラム)を作ってみる。
    例えば、ボタンを押してる間 転がり続ける(代わりに、画面上に表示された数字が変る)

以下は来週扱うこととします。

データの集合体を扱う

=> 解説は別ページ
実演したサンプルのページも参照)

以下の課題も、来週扱います。

(資料ページに反映することが遅れたため先行して取り組んでみた方もいるかと思いますが、 やってみた人はそれも含めて提出してみて下さいね)