switch(keyCode)
{
case 38:/*上*/
if((灰太狼.y –移动的宽度)大于等于 0)
{
灰太狼.y -=移动的宽度
}
break;
case 40:/*下*/
if((灰太狼.y +移动的宽度)小于等于(窗体的高度-灰太狼的高度))
{
灰太狼.y +=移动的宽度
}
break;
case 37:/*左*/
if((灰太狼.x –移动的宽度)大于等于 0)
{
灰太狼.x -=移动的宽度
}
break;
case 39:/*右*/
if((灰太狼.x +移动的宽度)小于等于(窗体的宽度-灰太狼的宽度))
{
灰太狼.x +=移动的宽度
}
break;
&:/*其他按键*/
什么都不做
break;
}」
「为什么向下和向右的时候判断时要减去灰太狼的高度和高度啊?」
我挠了挠头,有些想不明白。
「这是因为我们描述一个控件的位置,其实是描述的这个空间最左上角那个点的位置信息。现在我们使用这个灰太狼这个控件是个正方形,并且它的变长为50像素。
当灰太狼移动到最左的时候,x=0;移动到最上的时候,y=0。但是移动到最右的时候,此时和窗体重合是右边,此时x=窗体的宽度– 50像素。
同理,当灰太狼移动到最下边的时候,和窗体重合的是下边,这个时候的y=窗体的高度– 50像素」
为了让我能够明白这其中的关系,老爹还特别打开是画图程序,给我详细画了出来。这么一来,我不想理解都难。
既然逻辑已经讲明白了,我只需要把老爹的讲述转译成代码就好了。虽然又犯了不少的错误,但在老爹耐心地指导下还是将bug一个一个都解决了,这么一来,灰太狼总算不会消失了。
通过实现这个功能我才深切的体会到,其实在实现某个功能之前,分析才是最重要的。只要把过程弄明白了,要实现具体的功能时就变得得心应手。
还有就是老爹说的这些理论我都明白,可是在写程序的过程中却漏洞百出,「看来纸上得来终觉浅」果然还是说得不错的。