寒假日报day9

今天呢,换个思路走了,先停一停数据爬虫的工作,赶赶其他作业的进度,

上次scala呢,写完了第一个实验,今天写了第二个实验,即模拟图形绘制的实验

不多说,上代码:

 1 package com.ms.firstWork
 2 
 3 object SecondWork {
 4 
 5   def main(args: Array[String]) {
 6     val p = new Point(10, 30)
 7     p.draw;
 8     val line1 = new Line(Point(0, 0), Point(20, 20))
 9     line1.draw
10     line1.moveTo(Point(5, 5)) //移动到一个新的点
11     line1.draw
12     line1.zoom(2) //放大两倍
13     line1.draw
14     val cir = new Circle(Point(10, 10), 5)
15     cir.draw
16     cir.moveTo(Point(30,20))
17     cir.draw
18     cir.zoom(0.5)
19     cir.draw
20   }
21 
22 }
23 
24 
25 case class Point(var x: Double, var y: Double) extends Drawable {
26   var Px: Double = x
27   var Py: Double = y
28 
29   def shift(deltaX: Double, deltaY: Double) {
30     Px += deltaX
31     Py += deltaY
32   }
33 
34   override def draw(): Unit = {
35     println("Point:(" + Px + "," + Py + ")")
36   }
37 }
38 
39 trait Drawable {
40   def draw() {
41     println(this.toString)
42   }
43 }
44 
45 abstract class Shape extends Drawable {
46   def moveTo(point: Point)
47 
48   def zoom(step: Double)
49 
50   def draw()
51 }
52 
53 class Line(point1: Point, point2: Point) extends Shape {
54   override def moveTo(point: Point): Unit = {
55     point1.shift(point.Px, point.Py)
56     point2.shift(point.Px, point.Py)
57   }
58 
59   override def zoom(step: Double): Unit = {
60     var tempx = (point2.Px + point1.Px) / 2 - point1.Px
61     if (tempx < 0) {
62       tempx = 0 - tempx
63     }
64     var centerx = ((point2.Px + point1.Px) / 2)
65     var zoomlengthx = (tempx * step)
66     point1.Px = centerx - zoomlengthx
67     point2.Px = centerx + zoomlengthx
68 
69     var tempy = (point2.Py + point1.Py) / 2 - point1.Py
70     if (tempy < 0) {
71       tempy = 0 - tempy
72     }
73     var centery = ((point2.Py + point1.Py) / 2)
74     var zoomlengthy = (tempy * step)
75     point1.Py = centery - zoomlengthy
76     point2.Py = centery + zoomlengthy
77   }
78 
79   override def draw(): Unit = {
80     println("Line:(" + point1.Px + "," + point1.Py + ")--(" + point2.Px + "," + point2.Py + ")")
81   }
82 }
83 
84 class Circle(point: Point, r: Double) extends Shape {
85   var R=r
86   override def moveTo(point: Point): Unit = {
87     this.point.Px=point.Px
88     this.point.Py=point.Py
89   }
90 
91   override def zoom(step: Double): Unit = {
92     R=R*step
93   }
94 
95   override def draw(): Unit = {
96     println("Circle center:(" + point.Px + "," + point.Py + "),R=" + R)
97   }
98 }
View Code

 

运行截图:

 

 这个比较简单,在菜鸟,w3school上都有教程,我个人推荐w3school因为这个比较新,教程较菜鸟版本比较适应我们,菜鸟有一些过时。

posted @ 2020-02-02 18:25  masuo  阅读(125)  评论(0)    收藏  举报