gridworld java_第5章 GridWorld第一部分

本文是关于AP计算机科学的GridWorld案例程序的初步介绍。首先,介绍了如何下载和安装GridWorld,以及如何在开发环境中运行BugRunner.java。接着,讲解了GridWorld中的对象、构造函数、类、实例、属性、访问器和修改器方法等概念。然后,展示了BugRunner.java的代码片段,并给出了几个练习,包括移动Bug、随机行走和创建彩色Bug。最后,提到了GridWorld中使用到的UnboundedGrid和Color类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5.1 让我们开始吧

让我们从这个AP计算机科学案例程序“GridWorld”开始学习吧。首先请下载安装“GridWorld”程序,你可以从如下链接下载:http://www.collegeboard.com/student/testing/ap/compsci_a/case.html。下载完成后解压缩,你会看到一个名叫“GridWorldCode”的文件夹,接着打开子文件夹projects/firstProject,里面包含一个名为BugRunner.java的源文件。接下来要做的就是拷贝这个源文件至你的项目下,并导入你的开发环境。这里也有一些相关帮助文档:http://www.collegeboard.com/prod_downloads/student/testing/ap/compsci_a/ap07_gridworld-installation_guide.pdf。当你运行BugRunner.java后,可以从这里下载GridWorld学生手册:http://www.collegeboard.com/prod_downloads/student/testing/ap/compsci_a/ap07_girdworld_studmanual_appends_v3.pdf。学生手册中使用了一些我还没有提到过的单词,为了开始学习,这里有一个快速预览:

在GridWorld世界中,包含了Bugs,Rocks和Grid自己,他们都属于对象(objects)。

构造函数(constructor)是一个可以创建新对象(new objects)的特殊的方法。

类(class)是一系列对象的集合;每一个对象都隶属于一个类。

一个对象也可以称作一个实例(instance),因为它是一个类的成员或者实例。

每一个属性(attribute)是一条关于对象的信息,比如颜色或者位置。

每一个accessor method是一个可以返回一个对象属性值的方法。

每一个modifier method是一个可以更改一个对象属性值的方法。

5.2 BugRunner

BugRunner.java 代码片段:

import info.gridworld.actor.ActorWorld;

import info.gridworld.actor.Bug;

import info.gridworld.actor.Rock;

public class BugRunner

{

public static void main(String[] args)

{

ActorWorld world = new ActorWorld();

world.add(new Bug());

world.add(new Rock());

world.show();

}

}

前三行是import声明,它们列出了在GridWorld这个程序中使用到的类(classes)。你可以找到有关这些类的相关文档: http://www.greenteapress.com/thinkapjava/javadoc/gridworld 。和之前我们看到的其他程序一样,BugRunner定义了一个类(class),这个类包含了一个main方法。在main方法的第一行我们创建了一个ActorWorld对象。new是Java中用来创建新对象的关键字。接下来的一行创建了一个Bug对象和一个Rock对象,并将它们加入了world对象(一个ActorWorld对象)中。最后一行用来将world展示到了我们的屏幕。

现在打开BugRunner.java让我们进行一些编辑,我们将

world.add(new Bug());

替换成如下两行

Bug redBug = new Bug();

world.add(redBug);

替换的这两行中,第一行我们声明了一个Bug类型的变量redBug,并将它指向我们创建的新Bug对象。我们可以用redBug来调用Bug对象的方法。试试如下代码:

System.out.println(redBug.getLocation());

注意:如果你在将Bug加入world中之前运行了此行代码,打印出的结果为空(null),这表明Bug还没有一个location。

调用另一些accessor method并打印Bug对象的一些属性试试。调用canMove,move和turn并确保你明白他们在做什么。现在让我们做些练习:

练习5.1

写一个名为moveBug的方法,将Bug对象作为方法的一个参数并在方法中调用该对象的move方法。完成后在main方法中调用这个方法。

修改moveBug方法,在其中调用canMove方法,使Bug只有在能够移动时移动。

修改moveBug方法,使它包含一个integer类型的参数n,并让它移动Bug对象n次(如果可以的话)。

修改moveBug方法,使其当Bug不能移动时调用turn方法。

练习5.2

Math类提供了一个名为random的方法,这个方法可以返回一个大小在0.0和1.0(不包括1.0)之间的double类型的数。

写一个名为randomBug的方法,将Bug对象作为一个参数并等概率地决定Bug的移动方向是0度,90度,180度还是270度,然后移动Bug对象(如果可以的话)。

修改randomBug方法来接收一个integer类型的n参数并重复n次。结果将是一个random walk,你可以阅读相关文档 http://en.wikipedia.org/wiki/Random_walk 。

想要看一个更长的random walk,你可以给ActorWorld一个更大的舞台。在源程序BugRunner.java的最顶层,添加以下声明:

import info.gridworld.grid.UnboundedGrid;

然后替换创建ActorWorld的语句为

ActorWorld world = new ActorWorld(new UnboundedGrid());

你应该可以运行程序进行上千步random walk(也许你需要使用滚动条搜寻你的Bug,哈哈)。

练习5.3

GridWorld使用了Java函数库中定义的Color对象。你可以阅读相关文档 http://download.oracle.com/javase/6/docs/api/java/awt/Color.html 。

想要创建不同颜色的Bug,我们可以引入Color:

import java.awt.Color;

然后你可以访问之前定义的颜色,比如Color.blue,或者创建一个新的颜色:

Color purple = new Color(148, 0, 211);

创建一些不同颜色的Bug对象,然后编写一个名为colorBug的方法,将Bug对象作为参数,读取它的location,sets和color等。

你通过getLocation方法取得的Location对象中包含getRow方法和getCol方法,这两个方法返回Interger类型数值。所以你可以这样取得bug对象的x坐标:

int x = bug.getLocation().getCol();

编写一个名为makeBugs的方法,传入一个ActorWorld对象和一个integer类型的n,然后创建n个Bug对象,通过每个创建的Bug对象的location来决定它的color。使用row数值来控制red比例,使用column来控制blue比例。

Vivado2023是一款集成开发环境软件,用于设计和验证FPGA(现场可编程门阵列)和可编程逻辑器件。对于使用Vivado2023的用户来说,license是必不可少的。 Vivado2023的license是一种许可证,用于授权用户合法使用该软件。许可证分为多种类型,包括评估许可证、开发许可证和节点许可证等。每种许可证都有不同的使用条件和功能。 评估许可证是免费提供的,让用户可以在一段时间内试用Vivado2023的全部功能。用户可以使用这个许可证来了解软件的性能和特点,对于初学者和小规模项目来说是一个很好的选择。但是,使用评估许可证的用户在使用期限过后需要购买正式的许可证才能继续使用软件。 开发许可证是付费的,可以永久使用Vivado2023的全部功能。这种许可证适用于需要长期使用Vivado2023进行开发的用户,通常是专业的FPGA设计师或工程师。购买开发许可证可以享受Vivado2023的技术支持和更新服务,确保软件始终保持最新的版本和功能。 节点许可证是用于多设备或分布式设计的许可证,可以在多个计算机上安装Vivado2023,并共享使用。节点许可证适用于大规模项目或需要多个处理节点进行设计的用户,可以提高工作效率和资源利用率。 总之,Vivado2023 license是用户在使用Vivado2023时必须考虑的问题。用户可以根据自己的需求选择合适的许可证类型,以便获取最佳的软件使用体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值