Tutorial 2: Movement and Key Control
教程2:移动和键控
本篇将讲解如何实现移动以及如何通过键盘控制对象。
打开GF(Greenfoot),在类视图的Actor上右击,选择“new subclass”建立一个新类,设置好名字和图像,我这里设置的名字是“Crab”,图像是一只螃蟹,确定后,将Crab类放置到舞台上,此时点击Run螃蟹不会有任何反应,看来这是只懒螃蟹,我们检查下它会干些什么。
打开Crab类的代码编辑器查看其代码,当前act()下面的大括号内没有任何代码,这说明这只螃蟹目前什么都不会!
在这里添加代码就能够设置该对象的行为模式,这里我们要让它学会移动,在大括号内添加代码,完成后如下所示:
//====================
public void act()
{
move(4);
}
//====================
注意move是小写的,句末还有分号。
完成后进行compile编译,编译完成后,舞台会被重新实例化(调用世界的构造函数),你需要重新将螃蟹Crab类放置到舞台上。
点击Run运行,螃蟹开始向右侧滑动,最后卡在了边界上。你可以暂停程序,然后将螃蟹从右边拖到左边后再点击Run,它又开始动了。
多放置几只螃蟹到舞台上,随意放置,然后点击Run,这些螃蟹会集体向右移动,直到卡在边界上。
实际上螃蟹碰触到边界后,它们并没有停止“移动”这个行为,只是GF不允许它们移动到舞台区域以外,想想如果它们跑到外面去了,你怎么还能把它们拖回来。
move的作用请参照greenfoot api,就在GF的帮助里面,名字叫Greenfoot class documentation,后面将用到的turn也能查到,isKeyDown则要查JDK API了。
你可以通过设置代码中move后面括号内的数字来改变螃蟹的移动速度,增大该数字可以加快速度,减小则减慢速度。
试试设置一个负数。(螃蟹会向左移动)
我们继续给螃蟹设置新的行为模式,让他不要总是在直线上运动。打开Crab类的代码编辑器,在move命令后面另起一行继续添加代码:turn(3),改变后的act()如下所示:
//====================
public void act()
{
move(4);
turn(3);
}
//====================
编译并运行程序(别忘了重新设置舞台),螃蟹开始做圆周运动了!
摸索下如何设置move和turn的参数来控制螃蟹圆周运动的半径变小或变大。
turn(N)改变对象的方向,使得对象绕自身中心开始旋转,N表示旋转速度,大于零时顺时针转,小于0时逆时针转。
move(N)使对象沿当前方向移动(当前方向可以被turn(N)改变)
两者配合起来,就可以产生圆周运动。
前面说过,螃蟹碰触到边界时实际上并没有停止“移动”这个行为,只是他不能移动到舞台外,而现在,螃蟹碰触到边界后并不会像之前那样卡住,它会继续旋转并移动,然后就会离开边界。
下面我们来添加一些互动:用键盘上的左方向键和右方向键来控制螃蟹左转和右转。
新的act方法代码如下:
//====================
public void act()
{
move(4);
if(Greenfoot.isKeyDown("left"))
{
turn(-3);
}
if(Greenfoot.isKeyDown("right"))
{
turn(3);
}
}
//====================
编译,运行(别忘了重新设置舞台,这是第三次提醒了),现在你可以通过左右键来控制螃蟹转弯了。
检查按键的方法Greenfoot.isKeyDown(),括号内的参数就是待检测的按键的名称,比如"left"代表键盘上的左方向键,"right"代表右方向键。
如果你向用“a”和“d”键来控制左转和右转,那么相应的将代码中的left改成a,right改成b,引号保留不变(注意是英文引号)。
改变turn()方法括号内的数字,可以控制转向速度。
如果你在舞台中放入了多只螃蟹,运行时会发现,你的操作可以控制全部螃蟹同步运动,因为这些螃蟹都是基于同一个类:crab,它们执行着相同的代码。
试试看如果我们同时按下←键和→键会发生什么?
==========================================
完,参照了官方教程
教程2:移动和键控
本篇将讲解如何实现移动以及如何通过键盘控制对象。
打开GF(Greenfoot),在类视图的Actor上右击,选择“new subclass”建立一个新类,设置好名字和图像,我这里设置的名字是“Crab”,图像是一只螃蟹,确定后,将Crab类放置到舞台上,此时点击Run螃蟹不会有任何反应,看来这是只懒螃蟹,我们检查下它会干些什么。
打开Crab类的代码编辑器查看其代码,当前act()下面的大括号内没有任何代码,这说明这只螃蟹目前什么都不会!
在这里添加代码就能够设置该对象的行为模式,这里我们要让它学会移动,在大括号内添加代码,完成后如下所示:
//====================
public void act()
{
move(4);
}
//====================
注意move是小写的,句末还有分号。
完成后进行compile编译,编译完成后,舞台会被重新实例化(调用世界的构造函数),你需要重新将螃蟹Crab类放置到舞台上。
点击Run运行,螃蟹开始向右侧滑动,最后卡在了边界上。你可以暂停程序,然后将螃蟹从右边拖到左边后再点击Run,它又开始动了。
多放置几只螃蟹到舞台上,随意放置,然后点击Run,这些螃蟹会集体向右移动,直到卡在边界上。
实际上螃蟹碰触到边界后,它们并没有停止“移动”这个行为,只是GF不允许它们移动到舞台区域以外,想想如果它们跑到外面去了,你怎么还能把它们拖回来。
move的作用请参照greenfoot api,就在GF的帮助里面,名字叫Greenfoot class documentation,后面将用到的turn也能查到,isKeyDown则要查JDK API了。
你可以通过设置代码中move后面括号内的数字来改变螃蟹的移动速度,增大该数字可以加快速度,减小则减慢速度。
试试设置一个负数。(螃蟹会向左移动)
我们继续给螃蟹设置新的行为模式,让他不要总是在直线上运动。打开Crab类的代码编辑器,在move命令后面另起一行继续添加代码:turn(3),改变后的act()如下所示:
//====================
public void act()
{
move(4);
turn(3);
}
//====================
编译并运行程序(别忘了重新设置舞台),螃蟹开始做圆周运动了!
摸索下如何设置move和turn的参数来控制螃蟹圆周运动的半径变小或变大。
turn(N)改变对象的方向,使得对象绕自身中心开始旋转,N表示旋转速度,大于零时顺时针转,小于0时逆时针转。
move(N)使对象沿当前方向移动(当前方向可以被turn(N)改变)
两者配合起来,就可以产生圆周运动。
前面说过,螃蟹碰触到边界时实际上并没有停止“移动”这个行为,只是他不能移动到舞台外,而现在,螃蟹碰触到边界后并不会像之前那样卡住,它会继续旋转并移动,然后就会离开边界。
下面我们来添加一些互动:用键盘上的左方向键和右方向键来控制螃蟹左转和右转。
新的act方法代码如下:
//====================
public void act()
{
move(4);
if(Greenfoot.isKeyDown("left"))
{
turn(-3);
}
if(Greenfoot.isKeyDown("right"))
{
turn(3);
}
}
//====================
编译,运行(别忘了重新设置舞台,这是第三次提醒了),现在你可以通过左右键来控制螃蟹转弯了。
检查按键的方法Greenfoot.isKeyDown(),括号内的参数就是待检测的按键的名称,比如"left"代表键盘上的左方向键,"right"代表右方向键。
如果你向用“a”和“d”键来控制左转和右转,那么相应的将代码中的left改成a,right改成b,引号保留不变(注意是英文引号)。
改变turn()方法括号内的数字,可以控制转向速度。
如果你在舞台中放入了多只螃蟹,运行时会发现,你的操作可以控制全部螃蟹同步运动,因为这些螃蟹都是基于同一个类:crab,它们执行着相同的代码。
试试看如果我们同时按下←键和→键会发生什么?
==========================================
完,参照了官方教程