VC-easyx绘图游戏简易教程要点.pdf
《VC-easyx绘图游戏简易教程要点.pdf》由会员分享,可在线阅读,更多相关《VC-easyx绘图游戏简易教程要点.pdf(37页珍藏版)》请在三一文库上搜索。
1、1:创建新项目 自己动手建立项目试试,并输入以下代码: #include void main() printf(“Hello World!“); 然后,输入以下代码试试(无需理解代码含义): #include #include void main() initgraph(640, 480); line(200, 240, 440, 240); line(320, 120, 320, 360); getch(); closegraph(); 执行后应该可以看到屏幕正中央有一个十字 2:简单绘图,学习单步执行 #include / 绘图库头文件,绘图语句需要 #include / 控制台输入输出头
2、文件,getch() 语句需要 void main() initgraph(640, 480); / 初始化 640x480 的绘图屏幕 line(200, 240, 440, 240); / 画线 (200,240) - (440,240) line(320, 120, 320, 360); / 画线 (320,120) - (320,360) getch(); / 按任意键 closegraph(); / 关闭绘图屏幕 解释一下: 1. 创建的绘图屏幕640x480 ,表示横向有640 个点,纵向有480 个点。注意:左上角是原 点(0,0) ,也就是说, y 轴和数学的y 轴是相反的。
3、2. getch 实现按任意键功能,按任意键后, 程序继续执行。 否则,程序会立刻执行closegraph 以至于看不到绘制的内容。 作业 用线条画出更多的图形,要求不少于10 条直线。 学习单步执行 完成作业后 (务必完成) ,开始试着单步执行刚才的程序,由于绘图和多线程等因素的限制, 请务必按照以下步骤尝试(熟练了以后就不用了): 1. 将 VC 取消最大化,并缩小窗口,能看到代码就行。 2. 按一下 F10 (单步执行),会看到屏幕上出现一个黄色的小箭头,指示将要执行的代码。 3. 当箭头指向initgraph语句时,按F10,能看到窗口发生了变化。 4. 将新的绘图窗口和VC 并排放,
4、相互不要有覆盖。这步很重要,否则绘图内容将会被VC 窗口覆盖。 5. F10 执行 getch 后,记得激活绘图窗口,并按任意键,否则程序不会继续执行。 6. closegraph后,直接按F5 执行全部剩余程序,结束。 单步执行很重要,可以让你知道程序执行到哪里是什么效果,哪条语句执行出了问题等等。 3:熟悉更多的绘图语句 常用的绘图语句 line(x1, y1, x2, y2); / 画直线(x1,y1)-(x2,y2),都是整形 circle(x, y, r); / 画圆,圆心为(x,y) ,半径为r putpixel(x, y, c); / 画点 (x,y) ,颜色 c 还有很多,如画
5、椭圆、圆弧、矩形、多边形,等等,请参考绘图帮助文件(目录页的绘图库 的下载里面有) 设置颜色 setcolor(c); / 设置绘图颜色,如setcolor(RED) 设置为红色等 常用的颜色常量可以用: BLACK 黑 DARKGRAY 深灰 BLUE 蓝 LIGHTBLUE 亮蓝 GREEN 绿 LIGHTGREEN 亮绿 CYAN 青 LIGHTCYAN 亮青 RED 红 LIGHTRED 亮红 MAGENTA 紫 LIGHTMAGENTA 亮紫 BROWN 棕 YELLOW 黄 LIGHTGRAY 浅灰WHITE 白 配出更多的颜色 颜色除了前面写的16 种以外,还可以自由配色。格式:
6、 RGB(r, g, b) r / g / b 分别表示红色、绿色、蓝色,范围都是0255 。 例如, RGB(255,0,0) 表示纯红色。 红色和绿色配成黄色,因此RGB(255,255,0) 表示黄色。 嫌调色麻烦可以用画笔里面的调色试试,调好了以后直接将数值抄过来就行。 例如,画两条红色浓度为200 的直线,可以写: setcolor(RGB(200,0,0); line(100,100, 200,100); line(100,120, 200,120); 用数字表示颜色 除了用 RGB(r,g,b) 方式外,还可以用16 进制表示颜色,格式: 0xrrggbb 例如, setcolo
7、r(0xff0000) 和 setcolor(RGB(255,0,0) 是等效的。 延时语句 这个很简单Sleep(n) 就可以表示n 毫秒的延时。例如延时3 秒,可以用Sleep(3000); 作业 1. 简单看一下绘图库的帮助文件,了解更多的绘图语句。 2. 绘制更丰富的图形内容,不低于20 行。 3. 将延时语句适当的插入上个作业的代码中,看看执行效果。 注:绘图语句不需要记住,用的时候翻翻手册就行。 -4:结合流程控制语句来绘图 范例 例如,画10 条直线的代码: #include #include void main() initgraph(640, 480); for(int y=
8、100; y #include void main() initgraph(640, 480); for(int y=0; y #include void main() initgraph(640, 480); for(int y=100; y #include void main() initgraph(640, 480); int c; for(int y=0; y #include #include void main() initgraph(640, 480); int c; double a; int x, y, r=200; for(a=0; a #include void mai
9、n() initgraph(640, 480); for(int y=0; y #include void main() initgraph(640, 480); for(int x=100; x #include #include void main() char c = 0; while(c != 27) if (kbhit() c = getch(); else c = .; printf(“%c“, c); Sleep(100); 结合上一课的简单动画,就可以做出来靠按键移动的图形了吧,看以下代码,实现a s 控 制圆的左右移动: #include #include void main
10、() initgraph(640, 480); int x = 320; / 画初始图形 setcolor(YELLOW); setfillstyle(GREEN); fillellipse(x, 240, 20, 20); char c; while(c != 27) / 获取按键 c = getch(); / 先擦掉上次显示的旧图形 setcolor(BLACK); setfillstyle(BLACK); fillellipse(x, 240, 20, 20); / 根据输入,计算新的坐标 switch(c) case a: x-=2; break; case d: x+=2; brea
11、k; case 27: break; / 绘制新的图形 setcolor(YELLOW); setfillstyle(GREEN); fillellipse(x, 240, 20, 20); / 延时 Sleep(10); closegraph(); 作业 请继续完成这个程序,实现以下功能: 1. 上下的控制; 2. 边界检测; 3. 结合kbhit 实现惯性移动(即按一下方向键,圆就会一直向这个方向移动) 注:上下左右等按键的控制,会返回2 个字符。由于该系列教程面向初学者,因此有兴趣 的请查看MSDN 。 8:用函数简化相同图案的制作 实际中有许多类似的图案,如果一一单独绘制,太麻烦。于是
12、,我们需要一个公用的绘制过 程,就是函数。 例如,我们需要画5 个三角形,位于不同的位置。我们可以将绘制单个三角形的过程写成 函数,函数内是一个独立的程序段,这个绘制过程很简单。 然后,在需要绘制的时候,调用这个函数即可。可以通过参数来解决细微差异(图案的坐标、 颜色等),例如: #include #include / 在坐标(x,y) 处,用颜色c 绘制三角形 void sanjiaoxing(int x, int y, int c) / 设置画线颜色 setcolor(c); / 画三角形的三条边 line(x, y, x+50, y); line(x, y, x, y+50); line
13、(x+50, y, x, y+50); void main() initgraph(640, 480); / 初始化图形窗口 sanjiaoxing(100, 100, RED); sanjiaoxing(120, 160, BLUE); sanjiaoxing(140, 220, GREEN); sanjiaoxing(160, 120, BLUE); sanjiaoxing(160, 160, GREEN); sanjiaoxing(220, 140, GREEN); getch(); / 按任意键继续 closegraph(); / 关闭图形窗口 再结合循环等控制条件,就能绘制更复杂漂亮
14、的图案了。试试运行下面程序,理解一下函数 的用处: #include #include void sanjiaoxing(int x, int y, int color) / 设置画线颜色 setcolor(color); / 画三角形的三条边 line(x, y, x+10, y); line(x, y, x, y+10); line(x+10, y, x, y+10); void main() initgraph(640, 480); / 初始化图形窗口 for(int x=0; x #include void main() initgraph(640, 480); / 初始化640 x
15、480 的绘图窗口 setlinestyle(PS_SOLID, NULL, 10); / 设置线宽为10,这样效果明显 rectangle(100,100,200,200); / 画一个矩形,当做背景图案 setwritemode(R2_XORPEN); / 设置XOR 绘图模式 setcolor(RED); / 设置画线颜色 line(50,0, 200,300); / 画线 getch(); / 等待按任意键 line(50,0, 200,300); / 画线( XOR 方式重复画线会恢复背景图案) getch(); / 等待按任意键 closegraph(); / 关闭绘图窗口 运行一
16、下, 看到第一次画线后,矩形与直线相交的部分,颜色变成了青色,青色就是白色和 红色XOR 的值。当再次以红色画线时,青色部分消失了,还原为完整的白色矩形框。 四、完整的范例 来一个相对完整的范例吧,就是钟表程序,三个表针用的都是XOR 方式绘制,请大家运 行体会一下XOR 的作用: #include #include (1) 回复 1 楼 2010-05-23 09:57 举报 | BestAns 吧主 9 #include void Draw(int hour, int minute, int second) double a_hour, a_min, a_sec; / 时、分、秒针的弧度值
17、 int x_hour, y_hour, x_min, y_min, x_sec, y_sec; / 时、分、秒针的末端位置 / 计算时、分、秒针的弧度值 a_sec = second * 2 * PI / 60; a_min = minute * 2 * PI / 60 + a_sec / 60; a_hour= hour * 2 * PI / 12 + a_min / 12; / 计算时、分、秒针的末端位置 x_sec = 320 + (int)(120 * sin(a_sec); y_sec = 240 - (int)(120 * cos(a_sec); x_min = 320 + (i
18、nt)(100 * sin(a_min); y_min = 240 - (int)(100 * cos(a_min); x_hour= 320 + (int)(70 * sin(a_hour); y_hour= 240 - (int)(70 * cos(a_hour); / 画时针 setlinestyle(PS_SOLID, NULL, 10); setcolor(WHITE); line(320, 240, x_hour, y_hour); / 画分针 setlinestyle(PS_SOLID, NULL, 6); setcolor(LIGHTGRAY); line(320, 240,
19、x_min, y_min); / 画秒针 setlinestyle(PS_SOLID, NULL, 2); setcolor(RED); line(320, 240, x_sec, y_sec); void main() initgraph(640, 480); / 初始化640 x 480 的绘图窗口 / 绘制一个简单的表盘 circle(320, 240, 2); circle(320, 240, 60); circle(320, 240, 160); outtextxy(296, 300, “BestAns“); / 设置XOR 绘图模式 setwritemode(R2_XORPEN);
20、 / 设置XOR 绘图模式 / 绘制表针 SYSTEMTIME ti; / 定义变量保存当前时间 while(!kbhit() / 按任意键退出钟表程序 GetLocalTime( / 获取当前时间 Draw(ti.wHour, ti.wMinute, ti.wSecond); / 画表针 Sleep(1000); / 延时1 秒 Draw(ti.wHour, ti.wMinute, ti.wSecond); / 擦表针(擦表针和画表针的过程是一 样的) closegraph(); / 关闭绘图窗口 五、作业 最后给出的绘制时钟的例子,很不完善,有不少问题。请完善该程序。例如样式上,表盘上 没
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC easyx 绘图 游戏 简易 教程 要点
链接地址:https://www.31doc.com/p-5198397.html