APP下载

EasyX在C语言课程教学中的应用

2018-07-31李柯景

科教导刊 2018年7期
关键词:动画设计C语言

李柯景

摘 要 本文笔者通过多年的C语言课程的教学经验,提出了在C语言教学过程中引入EasyX图形库的必要性,介绍了通过绘制图形和制作动画的案例进行教学的方法,激发学生利用C语言进行编程的兴趣,提高学生的自主性和创新性。

关键词 EasyX C语言 动画设计

1 引入EasyX的必要性

C语言程序设计课是理论与实践相结合的课程,实践性很强,是高等院校的公共基础课程之一。近几年来,一般高校采用Visual C++ 6.0作为编辑环境进行C语言课程的讲解。尽管Visual C++ 6.0已经远远比从前的tubor C 2.0无论从界面上还是实际操作上简便了很多,但C语言课程的一些经典实例兴趣性不强,不容易激发学生的创新能力。如果能够将枯燥的C语言学习和图形界面以及电脑游戏结合到一起,从老师多次强调讲解程序的编写方法转变为让学生自己参与算法的设计和程序的编写,调动起学生的学习兴趣,提高学生的实践能力。EasyX让图形案例引入进C语言的课堂成为可能性。

2 EasyX图形库

标准的C中包含“graphics.h”这个头文件,具备强大的图形功能,利用C语言可以进行各种图形的绘制。但是在Visual C++ 6.0并不包含这个头文件。EasyX是针对 C++ 的图形库,可以帮助 C语言初学者快速上手图形和游戏编程。在Visual C++ 6.0的基础上安装EasyX只需下载压缩包,执行 Setup.hta,并跟随提示安装即可。如果想手动安装,需要include 和 lib 文件夹下的文件分别拷贝到Visual C++ 6.0对应的 include 和 lib 文件夹内即可。这样就将EasyX图形库引入到了Visual C++ 6.0中。可以利用EasyX图形库画出各种几何图形和移动的图形,也可以编写类似我们所熟悉的俄罗斯方块等小游戏,可以练习图形学的各种算法,等等。

3 EasyX的应用

3.1 绘制图形案例的应用

以往循环结构的典型案例包括像累计求和求乘积、最大公约数与最小公倍数、斐波那契数列等等数学问题,对于非专业的学生来说这些内容理解起来并不容易,也不容易产生兴趣,因而编程就变成了死记硬背程序。笔者根据多年的教学经验发现,当讲解到利用多重循环结构去输出各种图形组合时,学生的兴趣就比较大,因而图形案例是吸引学生主动学习的最佳途径。如果能够将结果用彩色的图案显示出来,并且能够让学生对程序的简要更改后就得到不同的艺术效果,则学生的兴趣和创新能力都会被提升起来,从而更好地提高教学效果。

比如利用EasyX图形库让学生画圆。

运行结果如图1所示。

利用这样一个简单的程序就可以实现在VC固定窗口大小和位置画出一个半径为60的圆。掌握了画出圆形的基本方法,提出问题让学生思考:如何画出不同半径的同心圆呢?只需要增加一条循环语句for(i=0;i<=200;i+=15) 即可。运行结果就会变为如图2所示。

其实,利用EasyX图形库还可以更丰富的应用吸引学生的兴趣。例如:如何让同心圆有层次的逐渐画出?如何让同心圆变色或改变位置?是否可以画出其他图形等等。学生可以利用图形库中的各种函数配合三种基本的程序结构举一反三,得到各种意想不到的效果,增加了学习积极性。

再比如让学生利用循环结构编写输出1至100的数字的例子。如果能够利用Easyx图形库中的函数让这100个数字如同打字机一样逐个输出,则更容易让学生理解循环变量、循環次数的真正含义。这样的表现方法,比调试程序更加简单直观易于理解,而且还能够激发学生的创造力,从而深刻理解循环的实质和多重循环的含义,让学生有兴趣去主动去探究循环更为广泛的应用。

3.2 动画设计案例的应用

如果说简单的图形绘制依然不够吸引学生的兴趣,那么图像更加美观的动画设计则是学生容易接受和有兴趣的案例。所谓动画,其实是连续显示一系列图形而已。利用C程序去编写一些游戏小程序,就离不开图形的处理。比如,要实现雪花飞落,就需要天空作为背景,雪花作为新叠加的对象,让雪花的图像反复出现在背景图的不同位置,从而实现雪花落下的动画效果。

具体实现步骤:

3.2.1素材准备

1.jpg(背景图,如图3)、2.jpg(雪花图,如图4)、3.jpg(黑白位图,如图5)。其中3.jpg为2.jpg的掩码图,也就是黑白位图。可以通过PHOTOSHOP或者C语言编程等方法获得。

3.2.2算法准备

将1.jpg(背景图)、2.jpg(雪花图)、3.jpg(黑白位图)载入内存,首先按照背景图大小设置窗口大小,并显示出背景图,紧接着在初始位置让3.jpg(黑白位图)显示出来并与背景图进行与运算。从而预留出雪花的位置。最后在同一位置绘制2.jpg(雪花图)。具体代码:

#include

IMAGE bj, qj,ym;//声明存储三个图片的变量。

void main()

{

loadimage(&bj;,"1.jpg");//将图片1.jpg载入内存

loadimage(&qj;,"2.jpg");

loadimage(&ym;,"3.jpg");

initgraph(bj.getwidth(), bj.getheight());//根据背景图片的大小设置窗口大小。

putimage(0,0,&bj;);//把图片1.jpg导入到窗口中。

putimage(0,0, &ym;, SRCAND);//绘制雪花图片的黑白位图并与背景图片进行与运算。

putimage(0, 0, &qj;, SRCPAINT);//绘制雪花图与新的背景图进行或运算

Sleep(5000);

}

运行结果如图6所示。

通过这样一个简单的图像叠加的程序设计,引发学生的思考:如何让雪花移动从而产生让雪花飘落的效果?如何控制对象在背景图上移动的速度和方向?如何控制对象出现的时间和位置?如何让多个雪花大小不等速度不等地随意飘落等等。利用这些简单的动画设计,让学生理解了位运算、循环、随机数的产生等基础的编程知识,还可以让学生充分发挥他们的想象力运用自己所学知识进行综合的应用,分组讨论,开发类似于打字游戏这样的小游戏,给学生的想象力和创造力以发挥的空间,激发学生课下对C语言程序设计知识的学习兴趣,提高编程能力,从而达到更好的教学效果。

4 小结

高校非计算机专业学生的程序设计课程,重在培养学生的编程思维和能力。在C语言教学过程中引入EasyX,把枯燥的语法规则和算法记忆变为算法的灵活应用和实践,激发学生的主观能动性和创造性,把学习编程一件快乐和自主的事情,从而更好地提高教学效果,达到教学的根本目标。

参考文献

[1] 徐智杰.C语言平台下动画技术实现方法浅析[J]信息技术,2008(22):402-421.

[2] 殷志坚,段晓磊.基于EasyX的俄罗斯方块游戏的设计和分析[J].科技传播,2015(11):104-109.

[3] 王晓东.算法设计与分析(第三版)[M].北京:清华大学出版社,2014.

[4] 赵敏,庞蕊.基于EasyX 图形库的C语言课程改革研究与实践[J].电脑知识与技术,2015(11):228-230.

[5] 杨治明.C语言程序设计教程[M].人民邮电出版社,2012.

猜你喜欢

动画设计C语言
“C语言程序设计”课程混合教学探索
基于C语言的计算机软件编程技术探究
中职计算机C语言教学的探讨与研究
中职C语言单片机课堂教学中的趣味性探讨
计算机原理中C语言的应用价值
Flash动画设计的课程研究与互动探讨
二维动画场景色彩研究与应用
中专“Flash动画设计”课程教学的实践与思考
广西动画设计人才培养模式研究
汉代画像石艺术在现代动画教学中的实践研究