基礎プログラミングa 第10回 (11/28)

(Basic Programing)

はじめに

おわび

前回の要約

前回の積残し分

4.6 リサジュー(発展課題)
4.7 X軸 Y軸も 描いておこう
4.8 グラフを描く関数を作る

プログラム例
REPLでの対話の例

Jumpしてから描画
Jumpしてから描画

大筋

ーーー

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

importの方法

5.1 Staging を使ってみる

書き方として2つあります。
(Staging は大文字から始まることに注意)

  1. インポートして使う

     import Staging._
     circle(0,0,100)
    

    おすすめの書き方

  2. Stagingオブジェクトとして使う

     val s=Staging
     s.circle(0,0,100)
    

両方試みて下さい。

以下の例では最初の行(1,または2の)を省略します。

補足

5.2 座標の扱い

座標系

5.3 様々な描画オブジェクト

dot, line, rectangle, roundRectangle, ellipse, circle, arc…
これらは、オブジェクト名でもあり、メソッド名(描画関数の名前)でもある。
一つ一つ、試して見て下さい
ellipse arc

Shapeの分類
Shapeの分類
補足:
例)a: line (直線)を描くメソッド:

基本は、両端(始点、終点)の座標値を与えて呼び出す書き方。line

s.line(0,0,100,100)

こんな呼出方も用意されて(は)いる。

s.line(Point(0,0), Point(100,100))
例)b: arc (楕円弧または分割された楕円)を描くメソッド:

数値だけを与えるインタフェースの場合、6つのパラメータを渡す。arc

s.arc(cx,cy,rx,ry,s,e)

のように6つの値を与える。cx,cy は座標値、rx,ry はそれぞれの方向の半径、 s,e は角度である。

なお、例題集(後述)に、「円弧っぽいもの」という題材があるが、 この題材では、このarcメソッドは使わず、lineだけで図を構成する。(結果的に輪郭が円弧のように見える例として紹介した)

円弧

5.4 情報源

StagingModuleのオフィシャルページ にサンプルとドキュメントがあります。

5.5 いろんな図形を描いてみる(1)

曲線2

例題集 に沿って、プログラムを作成してみて下さい。
 同心円
 格子
 etc

補足解説

5.6 ついでに

  1. Thread.sleep(1000) などをループ内部に置いておくと 図が少しずつ描かれていくので動作(主に順番)がわかります。
  2. s.setPenColor(color(random(256),random(256),random(256))) を挟むと カラフルな図になります。 (第6回に例示したように rancol のような関数を作って呼んでもいい)

サンプル集 も参考にして下さい。

実演例(抄)

5.7 インタラクション

マウスの操作を使う

マウスを使うコード概略
マウスを使うコード概略
loop {
	     if(mousePressed) circle(mouseX,mouseY,100)
	}

入れ子

5.8 for を使った繰り返し

// ループのためのfor構文 の基本
//	ループ変数 <- 範囲生成式
for(i<- 1 to 100)
    circle(i*40,0,10)  // これは1重の for

さらに 2重の for (の 書き方1)平面充填

for(i<-1 to 10)		// 外側の for の中に
   for(j<-1 to 10)	// 内側の for がある
       circle(i*10,j*10,5)	

こういう構造を「入れ子」と呼びます。 こう書くこともできます(書き方2)

for(i<-1 to 10 ;	// セミコロンで区切る
    j<-1 to 10)		// 括弧内は1行につないでもOK
       circle(i*10,j*10,5)	

2重ループ この書き方で、例題のように円を縦横に敷き詰めて並べて描画させることができる。

実習課題

  1. 描画関数(Shape)各種 実際に使ってみる
  2. 例題集の1~6を解いてみる(宿題)