BestAns

路漫漫其修远兮,吾将上下而求索

VC绘图/游戏简易教程--2:简单绘图,学习单步执行 铜牌收录

教程总目录:https://codebus.cn/bestans/post/concise-lesson-contents(里面包括VC下的graphics.h的配置方法)

本期目标

学会简单绘图,并学会简单调试。

先看看上一课的代码,我加上了注释

#include <graphics.h>			// 绘图库头文件,绘图语句需要
#include <conio.h>				// 控制台输入输出头文件,_getch()语句需要

int 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();				// 关闭绘图屏幕
	return 0;
}

解释:

  1. 创建的绘图屏幕 640x480,表示横向有 640 个点,纵向有 480 个点。左上角是原点 (0, 0),右下角坐标是 (639, 479),x 轴 向右为正,y 轴向下为正(和数学的 y 轴相反)。
  2. _getch 实现按任意键功能,按任意键后,程序继续执行。否则,程序会立刻执行 closegraph 以至于看不到绘制的内容。

学习基本调试技巧

程序执行的时候,是一条一条的语句依次执行的。现在通过调试来理解程序的执行。由于绘图程序有若干限制,请请务必按照以下步骤尝试(熟练了以后就可以随意些了):

先要在 VC 里编写代码,并编译成功,确保 0 错误。有错误的代码是无法调试的。

调试执行与断点

  1. 编译成功后,按 F5,直接调试执行,可以看到程序的执行结果。
  2. 光标点到“line(320, 120, 320, 360); // 画线(320,120) - (320,360)”这行,按 F9,会看到这行左边多了一个红点,这是断点标记。再按 F9 可以取消断点。也可以用鼠标点一下左边的的红点位置来设置断点。
  3. 再次按 F5,会看到代码执行到断点位置就不再执行了。程序断下来后,可以观察执行到此时的情况(如变量的值)。注意:由于绘图机制的限制,程序断下来时无法立刻看到绘图窗口的变化。
  4. 再次按 F5,程序会从断下来的位置继续执行,直到结束。
  5. 程序里可以设置多个断点。

单步执行

  1. 编译成功后,按一下 F10(单步执行),会看到屏幕上出现一个黄色的小箭头,指示将要执行的代码。
  2. 一下下按 F10,会看到黄色的小箭头逐步下移。注意:由于绘图机制的限制,程序断下来时无法立刻看到绘图窗口的变化。
  3. 在 _getch() 这行按下 F10 后,无法继续按 F10,因为执行 _getch() 语句后,程序在等待用户输入。这时候切换到绘图窗口,并按任意键,_getch() 即可执行完毕,再切换回 VC,可以继续调试。
  4. 直接按 F5 执行全部剩余程序,结束。

调试很重要,可以让你知道程序执行到哪里是什么效果,哪条语句执行出了问题等等。

更详细的调试资料,请看这里:http://pan.baidu.com/s/1eR6HT
该文档写的调试的东西比较多,看一下大概有个了解,以后都会用到(不过以后我就不再讲了)

注:

  1. 许多学校都忽略了调试部分,如果你不曾用过调试,请务必熟练该过程。
  2. win-tc 不带有任何调试功能,即便你不用 vc,也请不要使用 win-tc。调试是相当相当重要的。

作业

  1. 用线条画出更多的图形,要求不少于 10 条直线。
  2. 尝试单步调试自己写的代码,熟悉调试过程。

评论 (4) -

  • 请问一下,就上述程序而言,我在进行调试的时候,一步一步进行,然而应该画的线条,并没有说是一条一条的出现,在执行完getch();以后直接出现全部线条,这是什么原因造成的,或者说本来就是这个样子。(环境VS2010)

添加评论