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开发JAVA java greenfoot_Java

在该网页选择合适的版本下载。

 

下面以Greenfoot -Windows-3.6.0版介绍。这时当前最新版本。

下载后。双击安装:

greenfoot开发JAVA java greenfoot_右键_02

单击“Next”按钮

 

greenfoot开发JAVA java greenfoot_Greenfoot_03

Install just for you(只为您安装)

Install for all users of this machine(为本机的所有用户安装)

按默认,单击“Next”按钮

 

greenfoot开发JAVA java greenfoot_greenfoot开发JAVA_04

 

按默认,单击“Next”按钮

 

greenfoot开发JAVA java greenfoot_右键_05

指定安装路径,单击“Next”按钮

 

greenfoot开发JAVA java greenfoot_右键_06

单击“Install”(安装)按钮

等待一会儿,

greenfoot开发JAVA java greenfoot_Java_07

 

单击“Finish”(完成)按钮。

 

打开Greenfoot,

greenfoot开发JAVA java greenfoot_右键_08

 

有朋友可能想换成中文界面,Greenfoot作为一款非常国际化的工具,自然可以的。

对于早期版本,进入Greenfoot根目录下的lib目录(如我是D:\Program Files\Greenfoot\lib),然后用记事本打开里面的greenfoot.defs。用记事本打开:

greenfoot开发JAVA java greenfoot_Greenfoot_09

将bluej.language=english这一行前面加上一个#,同时把#bluej.language=chinese这一行前面的#去掉,保存。重新进入Greenfoot就行了:

greenfoot开发JAVA java greenfoot_右键_10

 

对于较新版本,我们可以通过主界面中的菜单栏,Tools->Preferences...然后在下图所示的窗口中,选择Interface标签页,Language一选择Chinese,参见下图:

greenfoot开发JAVA java greenfoot_子类_11

然后重启就可以了。

为减少歧义,下面的介绍在英语界面下

 

现在看看Greenfoot主界面:

greenfoot开发JAVA java greenfoot_右键_12

说明:

(1).菜单栏

和大多数软件菜单栏的作用一样。没啥好说的,除了一些基本的文件操作。如打开、保存之外,我们基本不会用到菜单栏。

(2).游戏场景区域(也叫世界)

我们编辑好代码,并编译后,游戏场景这个区域显示游戏的内容,是整个游戏的运行容器,游戏的场景和角色在此进行交互和显示。

(3).控制面板

控制面板是我们控制游戏运行的地方。控制按钮用于对游戏进行即时掌控:“Run”按钮用于自动运行游戏,“Act”按钮用于单步运行游戏,“Reset”按钮让游戏回到初始情形,“Speed”滚动条用来调节游戏的运行速度。

(4).类列表(也叫场景信息栏)

直观的显示了游戏的组成部分及其结构,

类(Class)是Java(也是所有面向对象高级语言)的核心内容。我们写程序的时候,99%的时间是在写一个个的类。可以看到在类列表中,已经有World和Actor两个类了,它们俩是Greenfoot最为核心的两个类,这在之后会慢慢介绍。除了这两个已有的类之外,我们之后所写的每一个类,都会出现在类列表中。类之间有相互继承的关系(之后介绍),这层关系在Greenfoot中将会被类列表清晰地体现出来。

用鼠标右键单击场景信息栏中的类,这时可以看到一个弹出式菜单。

(5).分享按钮

也称它为导出按钮。按下它将会打开一个分享页面,可以选择将我们的游戏发布至官网、导出成独立的Jar包、导出成独立的网页等。

 

安装目录下的scenarios目录中是一些例子,参见下图:

greenfoot开发JAVA java greenfoot_右键_13

其中,java 中有三个游戏:ants、LAT、lunarlander; stride 中有二个游戏:pengu、trick-the-turtle。

看一看Greenfoot创建的项目的组成,这里以lunarlander这个示例游戏项目为例:

greenfoot开发JAVA java greenfoot_greenfoot开发JAVA_14

其中

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

 

greenfoot开发JAVA java greenfoot_右键_15

 

greenfoot开发JAVA java greenfoot_Java_16

类列表(也叫场景信息栏)中已经有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开发JAVA java greenfoot_子类_17

 

这时 Greenfoot 会自动创建一个目录,里面包含了与该游戏场景有关的所有文件。 不难发现,在右侧的场景 信息栏中显示了两个类的名称:“World”和“Actor”,它们分别是游戏世界和游戏角色的父类。需要指出的是,这两个类都是抽象类,并不能直接为它们创建对象,而是需要通过其子类来创建对象。参见下图:

greenfoot开发JAVA java greenfoot_Greenfoot_18

 

1.创建场景类

在类列表(也叫场景信息、场景信息栏)中,“World”类下,有一个系统自动产生的子类MyWorld。

 

【先简介,如何从头创建一个场景类:

使用鼠标右键点击“World ”类,在随后的弹出菜单中选择“New subclass ”,如图:

greenfoot开发JAVA java greenfoot_Greenfoot_19

你可以使用鼠标右键点击“World ”类,在随后的弹出菜单中选择“New subclass ”创建新子类;然后输入类名MyWorld2,然后点确定,MyWorld2类就创建完成了,它立马被添加到了类列表中。在类列表中可以看到有一个箭头从子类指向World类,清晰地勾画出了各个类之间的继承关系。

双击新建的子类MyWord2,你可以看到系统自动创建的代码框架。

我们不用MyWorld2删除之,方法:右击它,出现右键快捷菜单,

greenfoot开发JAVA java greenfoot_子类_20

单击“Delete”命令删除。

这一部分,大体了解即可,若看读懂也不要紧,可回头再看】

 

在这里我们使用系统自动产生的MyWorld子类,右键它,在弹出菜单中选择“Set image”,出现如下对话框:

可以使用Greenfoot提供的一些图片,也可以通过“Import for library…”导入图片,在此导入图片

greenfoot开发JAVA java greenfoot_Java_21

 

单击

greenfoot开发JAVA java greenfoot_Greenfoot_22

按钮出现菜单:

greenfoot开发JAVA java greenfoot_Java_23

 

通过“Import for library…”导入图片:

greenfoot开发JAVA java greenfoot_greenfoot开发JAVA_24

 

单击“确定”按钮,注意观察,你会发现MyWorld子类旁出现图标,参见下图:

greenfoot开发JAVA java greenfoot_Greenfoot_25

 

在类列表(也叫场景信息、场景信息栏)中,双击新建的子类MyWord,出现代码窗口:

greenfoot开发JAVA java greenfoot_greenfoot开发JAVA_26

可以看到系统自动创建的代码,你可以编辑之,

其中

addObject(new MyAct(), 200, 100); //设置演员初始位置,当按下reset按钮回到初始位置

这句是我后来添加的——在“Actor”类下建立子类MyAct后(详见后面)添加的,若未建立子类MyAct,将提示错误,特此提示。

 

单击其中的“Compile”按钮,场景区域发生了变化,参见下图:

greenfoot开发JAVA java greenfoot_Greenfoot_27

 

 

2.创建角色类

使用鼠标右键点击“Actor”类,在随后的弹出菜单中

greenfoot开发JAVA java greenfoot_子类_28

选择“New subclass ”,出现如下对话框:

 

greenfoot开发JAVA java greenfoot_Java_29

然后输入类名MyAct,然后点确定,MyAct类就创建完成了,它立马被添加到了类列表(场景信息栏)中。

 

右击MyAct子类,在右键弹出菜单中选择“Set image”,出现如下对话框:

greenfoot开发JAVA java greenfoot_Greenfoot_30

按上面的图示操作选中小企鹅点击“确定”按钮,

点击“确定”按钮,产生MyAct子类图标,参见下图:

greenfoot开发JAVA java greenfoot_右键_31

 

右键MyAct子类,在弹出菜单中选择“new MyAct()”,

greenfoot开发JAVA java greenfoot_子类_32

可以看到鼠标下方悬挂演员(actor)图像。那就是我们新建的MyAct了,将鼠标移至黑色世界中的任意位置点击左键放置MyAct,参见下图:

greenfoot开发JAVA java greenfoot_greenfoot开发JAVA_33

 

双击MyAct子类,出现代码窗口:

greenfoot开发JAVA java greenfoot_greenfoot开发JAVA_34

 

可以看到系统自动创建的代码,可以编辑之

其中

int x = getX();          //添加的语句↓
    int y = getY();     //
    x++;                    //
    setLocation(x, y);  //添加的语句↑

就是我添加的。

 

现在,可以使用控制面板上的控制按钮,试试看了。

 

将上面,我添加的代码前加//注释掉,单击代码窗口中的“Compile”按钮编译通过后,再使用控制面板上的控制按钮,试试看,对比之看看有什么不同。

 

最后提醒,本文中的例子,比较简单,意在让初学者有个概观并快速入门,以便有个感性了解;另外,请不要纠结小企鹅为什么不在冰上而在树上~~。

 

有了这些基础,再深入学习Greenfoot使用,应该减少不少挫折。