Greenfoot简介与使用入门
Greenfoot,是一个java集成开发环境(IDE、Integrated Development Environment),对任何用途都是免费的。这个系统以及它的文档可以重新发布而不需要任何费用 , 是针对那些想让自己熟悉如何使用Java的人而设计的,是一个功能完整的开发环境,可以使用Java方便地编写游戏和进行模拟。它还可以被用来作为Java语言的教程,以及设计2D小游戏。Greenfoot诞生于2007年,目前(2019年11月)Version: 3.6.0 (uses Java 11)。
Greenfoot需要JDK的支持。
JDK(Java Development Kit),Java 开发者工具包。它是Java官方提供给Java程序员的开发工具。但这依然是一个非常底层和基础的工具。没有JDK,Greenfoot是没办法运行的。早期版本需要先安装好JDK,再安装Greenfoot,新Greenfoot版本如Greenfoot Version: 3.6.0 (uses Java 11),在安装Greenfoot同时自动安装JDK。
Greenfoot使用两种语言java和Stride。Stride是一种基于框架的编程语言,它结合了基于块和基于文本的系统的许多优点。它是一种新的类似Java的语言,自2015年集成到了Greenfoot系统中。关于Stride语言在此不讲。
下载地址:https://www.greenfoot.org/download
在该网页选择合适的版本下载。
下面以Greenfoot -Windows-3.6.0版介绍。这时当前最新版本。
下载后。双击安装:
单击“Next”按钮
Install just for you(只为您安装)
Install for all users of this machine(为本机的所有用户安装)
按默认,单击“Next”按钮
按默认,单击“Next”按钮
指定安装路径,单击“Next”按钮
单击“Install”(安装)按钮
等待一会儿,
单击“Finish”(完成)按钮。
打开Greenfoot,
有朋友可能想换成中文界面,Greenfoot作为一款非常国际化的工具,自然可以的。
对于早期版本,进入Greenfoot根目录下的lib目录(如我是D:\Program Files\Greenfoot\lib),然后用记事本打开里面的greenfoot.defs。用记事本打开:
将bluej.language=english这一行前面加上一个#,同时把#bluej.language=chinese这一行前面的#去掉,保存。重新进入Greenfoot就行了:
对于较新版本,我们可以通过主界面中的菜单栏,Tools->Preferences...然后在下图所示的窗口中,选择Interface标签页,Language一选择Chinese,参见下图:
然后重启就可以了。
为减少歧义,下面的介绍在英语界面下。
现在看看Greenfoot主界面:
说明:
(1).菜单栏
和大多数软件菜单栏的作用一样。没啥好说的,除了一些基本的文件操作。如打开、保存之外,我们基本不会用到菜单栏。
(2).游戏场景区域(也叫世界)
我们编辑好代码,并编译后,游戏场景这个区域显示游戏的内容,是整个游戏的运行容器,游戏的场景和角色在此进行交互和显示。
(3).控制面板
控制面板是我们控制游戏运行的地方。控制按钮用于对游戏进行即时掌控:“Run”按钮用于自动运行游戏,“Act”按钮用于单步运行游戏,“Reset”按钮让游戏回到初始情形,“Speed”滚动条用来调节游戏的运行速度。
(4).类列表(也叫场景信息栏)
直观的显示了游戏的组成部分及其结构,
类(Class)是Java(也是所有面向对象高级语言)的核心内容。我们写程序的时候,99%的时间是在写一个个的类。可以看到在类列表中,已经有World和Actor两个类了,它们俩是Greenfoot最为核心的两个类,这在之后会慢慢介绍。除了这两个已有的类之外,我们之后所写的每一个类,都会出现在类列表中。类之间有相互继承的关系(之后介绍),这层关系在Greenfoot中将会被类列表清晰地体现出来。
用鼠标右键单击场景信息栏中的类,这时可以看到一个弹出式菜单。
(5).分享按钮
也称它为导出按钮。按下它将会打开一个分享页面,可以选择将我们的游戏发布至官网、导出成独立的Jar包、导出成独立的网页等。
安装目录下的scenarios目录中是一些例子,参见下图:
其中,java 中有三个游戏:ants、LAT、lunarlander; stride 中有二个游戏:pengu、trick-the-turtle。
看一看Greenfoot创建的项目的组成,这里以lunarlander这个示例游戏项目为例:
其中
images目录存放背景图片
Greenfoot 的安装文件里自带了许多的背景图片,可以在创建类的时候选择其中一张作为世界的背景,或者在类的弹出菜单中点击“Set image”选项,然后在图片库中进行选择。在Greenfoot 的官方网站上有更多可用的背景图片,若想使用来自那上面的图片或是自己制作的图片,可以把它们放进的游戏场景目录中的“images”目录内。接下来便可以打开“Set image'”或“New subclass ”对话框中选择合适的图片。外也可以通过Java 程序代码来设置背景图片使用setBackground();方法,如: setBackground("myImage.jpg");
sounds目录存放声音文件
在 Greenfoot 中播放音频是非常简单的,所需要做的只是将待播放的声音文件复制到游戏场景的“sounds”目录中,然后调用 GreenfootSound 类的playSound()方法即可,该方法使用音频文件名作为参数。
".java文件"即后缀(扩展名)为java的文件,这是源代码文件。
project.greenfoot文件是Greenfoot项目文件,保存特定于某个项目的Greenfoot特性;文件中包含的属性类型的例子包括类,目标位置和依赖。
现在,用Greenfoot打开lunarlander
类列表(也叫场景信息栏)中已经有World和Actor两个类及其子类了,你可以双击或右击看看;
在游戏场景区域右击看看;
点击控制面板中的按钮试试。
其中内容,参看下面的链接
greenfoot ApI(Chinese)
https://www.greenfoot.org/files/translations/Chinese/API/
Greenfoot 为编程人员提供了丰富的API (应用程序接口),通过调用这些API 可以方便地编写各种游戏操作。 Greenfoot 提供了几 个类: World 类、Actor 类、Greenfoo 类、GreenfootImage 类、MouseInfo 类、GreenfootSound 类、UserInfo类。
World 类和 Actor 类是抽象类,不能被直接使用,在设计程序时要创建它们的子类;World 类和 Actor 类分别作为游戏世界(场景)和游戏角色的父类, World是一个承载Actor游戏对象们的世界(场景)。它本身也是一个二维的坐标格网络。 在Greenfoot世界中,每一个物体(对象 Object)都称为一个 Actor。每个Actor都拥有一个相对于世界的坐标,和一个用于显示的外观(也就是:一个图标)。
GreenfootImage 类是一个图像类,主要为游戏世界和游戏角色提供图形及图形的绘制方法;Greenfoot 类提供了使用Greenfoot 自身框架的入口,例如暂停游戏运行或调整游戏速度等,这个工具类提供了一些控制游戏模拟和与Greenfoot系统互动的方法。MouseInfo 类是一个提供当前鼠标状态的一些信息,例如获取鼠标单击的坐标以及标识什么角色被点击等;GreenfootSound 类则提供了对游戏声音的播放和处理方法。UnserInfo类在Greenfoot网站的服务器上持久化地储存信息。
下面给出一个从头创建的简单例子:
编写自己的游戏程序
在编写自己的游戏之前,首先需要新建一个游戏场景,用菜单 Scenario->New Sreide Scenario并在随后弹出的对话框中为游戏场景设置存储路径和名字。
这时 Greenfoot 会自动创建一个目录,里面包含了与该游戏场景有关的所有文件。 不难发现,在右侧的场景 信息栏中显示了两个类的名称:“World”和“Actor”,它们分别是游戏世界和游戏角色的父类。需要指出的是,这两个类都是抽象类,并不能直接为它们创建对象,而是需要通过其子类来创建对象。参见下图:
1.创建场景类
在类列表(也叫场景信息、场景信息栏)中,“World”类下,有一个系统自动产生的子类MyWorld。
【先简介,如何从头创建一个场景类:
使用鼠标右键点击“World ”类,在随后的弹出菜单中选择“New subclass ”,如图:
你可以使用鼠标右键点击“World ”类,在随后的弹出菜单中选择“New subclass ”创建新子类;然后输入类名MyWorld2,然后点确定,MyWorld2类就创建完成了,它立马被添加到了类列表中。在类列表中可以看到有一个箭头从子类指向World类,清晰地勾画出了各个类之间的继承关系。
双击新建的子类MyWord2,你可以看到系统自动创建的代码框架。
我们不用MyWorld2删除之,方法:右击它,出现右键快捷菜单,
单击“Delete”命令删除。
这一部分,大体了解即可,若看读懂也不要紧,可回头再看】
在这里我们使用系统自动产生的MyWorld子类,右键它,在弹出菜单中选择“Set image”,出现如下对话框:
可以使用Greenfoot提供的一些图片,也可以通过“Import for library…”导入图片,在此导入图片
单击 按钮出现菜单:
通过“Import for library…”导入图片:
单击“确定”按钮,注意观察,你会发现MyWorld子类旁出现图标,参见下图:
在类列表(也叫场景信息、场景信息栏)中,双击新建的子类MyWord,出现代码窗口:
可以看到系统自动创建的代码,你可以编辑之,
其中
addObject(new MyAct(), 200, 100); //设置演员初始位置,当按下reset按钮回到初始位置
这句是我后来添加的——在“Actor”类下建立子类MyAct后(详见后面)添加的,若未建立子类MyAct,将提示错误,特此提示。
单击其中的“Compile”按钮,场景区域发生了变化,参见下图:
2.创建角色类
使用鼠标右键点击“Actor”类,在随后的弹出菜单中
选择“New subclass ”,出现如下对话框:
然后输入类名MyAct,然后点确定,MyAct类就创建完成了,它立马被添加到了类列表(场景信息栏)中。
右击MyAct子类,在右键弹出菜单中选择“Set image”,出现如下对话框:
按上面的图示操作选中小企鹅点击“确定”按钮,
点击“确定”按钮,产生MyAct子类图标,参见下图:
右键MyAct子类,在弹出菜单中选择“new MyAct()”,
可以看到鼠标下方悬挂演员(actor)图像。那就是我们新建的MyAct了,将鼠标移至黑色世界中的任意位置点击左键放置MyAct,参见下图:
双击MyAct子类,出现代码窗口:
可以看到系统自动创建的代码,可以编辑之
其中
int x = getX(); //添加的语句↓
int y = getY(); //
x++; //
setLocation(x, y); //添加的语句↑
就是我添加的。
现在,可以使用控制面板上的控制按钮,试试看了。
将上面,我添加的代码前加//注释掉,单击代码窗口中的“Compile”按钮编译通过后,再使用控制面板上的控制按钮,试试看,对比之看看有什么不同。
最后提醒,本文中的例子,比较简单,意在让初学者有个概观并快速入门,以便有个感性了解;另外,请不要纠结小企鹅为什么不在冰上而在树上~~。
有了这些基础,再深入学习Greenfoot使用,应该减少不少挫折。