第八课 拓展绘图命令
【拓展绘图命令】
GoC为了方便画出一些常见图形,还提供了一些拓展的绘图命令,下表列出了画矩形、圆、椭圆的几个命令格式和功能。
函数格式 | 功能说明 |
pen.o( r ); | 以笔位置为圆心,r为半径,画空心圆。例如: pen.o( 50 ); 结果为 |
pen.oo( r, c ); | 以笔位置为圆心,r为半径,c为颜色编号,画实心圆。例如: pen.o( 50, 1 ); 结果为 |
pen.e( w, h ); | 以笔位置为圆心,在宽为w高为h的矩形内画空心椭圆。例如: pen.e( 50,100 ); 结果为 |
pen.ee( w, h, c ); | 以笔位置为圆心,c为颜色编号,在宽为w高为h的矩形内,画实心圆。例如: pen.ee( 50, 100, 4 ); 结果为 |
pen.r( w, h ); | 以笔位置为中心,w为宽,h为高,画空心矩形。例如: pen.r( 50,100 ); 结果为 |
pen.rr( w, h, c ); | 以笔位置为中心,w为宽,h为高,c为颜色编号,画实心矩形。例如: pen.rr( 50, 100, 9 ); 结果为 |
注:颜色编号可以用加强型的RGB形式。
【循环输入多组数据】
把输入语句放在循环结构内,就可以实现多次输入数据。下面通过几个例题,结合拓展的绘图命令,进一步学习输入语句的使用方法。
例题8.1:编程画下面形状的图形,使用cin语句让顶点4个圆的颜色由用户键盘输入。
样例程序8.1 | 图形 |
//prog:样例程序8.1 //author: teacher //2015.10.10
int main() { int c; for(int i=0; i<4; i++) { cin>> c; //键盘输入颜色 pen.fd(100).oo(20,c); pen.up().bk(100).down(); pen.rt(90); } return0; } | 键盘输入: 2 5 3 1 的运行结果图形。
|
例题8.2:编程实现动画:小球上下弹跳,弹跳高度由键盘输入。
样例程序8.2 | 图形 |
//prog:样例程序8.2 //author: teacher //2015.10.10
int main() { int high; //定义高度变量 cin>> high; //键盘输入高度 pen.up().bk(200); //调整开始位置
//========气球上升========== for(int i=0; i<high; i++) { pen.rr(50,50,_white); //清除一块 pen.fd(1); //上升 pen.oo(20,_brown); //画球 wait( i*0.01/high); //等待一定时间 }
//========气球下降========== for(int i=high; i>0; i--) { pen.rr(50,50,_white); //清除一块 pen.bk(1); //下降 pen.oo(20,_brown); //画球 wait( i*0.01/high);//等待一定时间 } return0; } | 键盘输入:300 等不同高度,可看到小球弹跳的高度不同。
|
新知识:
l 动画的方法是不断重复:清除原来的球,在新的位置画球,等待显示一定时间。
l 清除的方法是用与屏幕底色一样的颜色画矩形,覆盖原来的球。
l wait(s )命令是程序在这里要等待一会再继续运行。等待的时间s的单位是秒,例如wait(0.5 )就是等待0.5秒。
l 上升时,循环变量i不断增加,wait( i*0.01/high)的等待时间变大,给人感觉小球上升速度减慢。
l 下降时,for(int i=high; i>0; i--)就是循环变量i开始为high,然后每次减一(i--),i等于0时结束循环。i从大到小变化,等待时间也减少,给人感觉小球下降速度加快。
【练习】
一、输入6个月的平均气温,画6个宽10的矩形,矩形高度代表温度(直方图)。例如:输入:10 22 28 30 35 25,图形为:
二、利用画椭圆命令,动画显示一个飘动的气球。
三、 研究下面程序和图形,创作出自己的作品。
程序 | 图形 |
//prog:练习8.3 //author: teacher //2015.10.10
int main() { int r,c; //定义半径、颜色变量。 for(int i=0; i<5; i++) { cin>> r>>c; pen.oo(r,c); } return0; } | 输入: 100 1 80 2 60 3 40 4 20 5 (棒棒糖) |
//prog:练习8.4(生日帽) //author: teacher //2015.10.10
int main() { for(int i=15; i>0; i--) { pen.oo(i*4,i); pen.up().fd(10); } return0; } | (生日帽) |
【学习目标】
(1) 学会拓展绘图命令。
(2) 会用for循环变量从大到小变化。
(3) 初步掌握在for循环结构中输入多个数据。
(4) 学会简单动画编程方法。