java for swarm 学习笔记4

学习笔记3没有体现面向对象。学习笔记4的功能和3是一样的,只不过用面向对象的方法来实现,就是先申明一个SimpleBug类,类有数据成员,成员函数,构造函数。

然后在StartSimpleBug中调用SimpleBug类。

需要掌握

1 import swarm.Globals;//任何类申明时都要用到。

2 import swarm.defobj.Zone;//Zone的定义

3 import swarm.objectbase.SwarmObjectImpl;//SwarmObjectImpl的定义

4 构造函数有六个参数

 public SimpleBug(Zone aZone, int wXSize, int wYSize, int X, int Y,

               int bNum)

Zone 参数表示世界的初始化。

 

SimpleBug类:

 

/SimpleJavaBug/SimpleBug.java

 

// SimpleBug.java

// Defines the class for our SimpleBug agents.

 

import swarm.Globals;

import swarm.defobj.Zone;

import swarm.objectbase.SwarmObjectImpl;

 

public class SimpleBug extends SwarmObjectImpl

{

    // These instance variables keep track of the size of a given

    // bug's world, its position within it, and its identity.

    int worldXSize;

    int worldYSize;

    int xPos;

    int yPos;

    int bugNumber;

 

    // Constructor to create a SimpleBug object in Zone aZone and to

    // place it at the specified X,Y location in its world. The bug

    // is also given a numeric id, bNum.

    public SimpleBug(Zone aZone, int wXSize, int wYSize, int X, int Y,

               int bNum)//构造函数

    {

     // Call the contructor for the bug's parent class.

     super(aZone);//暂时没搞明白

 

     // Record the bug's world size, its initial position and id

     // number.

     worldXSize = wXSize;

     worldYSize = wYSize;

     xPos = X;

     yPos = Y;

     bugNumber = bNum;

 

     // Announce the bug's presence to the console.

     System.out.println("SimpleBug number " + bugNumber +

                 " has been created at " + xPos + ", " + yPos);

    }

 

    // This is the method to have the bug take a random walk backward

    // (-1), forward (+1), or not at all (0) in first the X and then

    // the Y direction. The randomWalk method uses

    // getIntegerWithMin$withMax() to return an integer between a

    // minimum and maximum value, here between -1 and +1.

    // Globals.env.uniformRand is an instance of the class

    // UniformIntegerDistImpl, instantiated by the call to

    // Globals.env.initSwarm in StartSimpleBug. Note that the bug's

    // world is a torus. If the bug walks off the edge of its

    // rectangular world, it is magically transported (via the modulus

    // operator) to the opposite edge.

    public void randomWalk()

    {

     xPos += Globals.env.uniformIntRand.getIntegerWithMin$withMax(

                                      -1, 1);

     yPos += Globals.env.uniformIntRand.getIntegerWithMin$withMax(

                                      -1, 1);

     xPos = (xPos + worldXSize) % worldXSize;

     yPos = (yPos + worldYSize) % worldYSize;

    }

 

    // Method to report the bug's location to the console.

    public void reportPosition()

    {

     System.out.println("Bug " + bugNumber + " is at " + xPos +

                ", " + yPos);

    }

}

 

 

StartSimpleBug类:

在这里需要掌握:

1   Globals.env.initSwarm(),这是SwarmGlobal环境的一个静态方法。这个方法建立了Swarm的全局变量和方法,每一个Swarm程序都以它开始。它有四个参数:仿真的类的名字、Swarm的版本、报告Swarm漏洞的email地址以及运行程序的命令字符串。

 

/SimpleJavaBug/StartSimpleBug.java

 

// StartSimpleBug.java

// The Java SimpleBug application.

import swarm.Globals;

import swarm.defobj.Zone;

 

public class StartSimpleBug

{    // The size of the bug's world and its initial position.

    static int worldXSize = 80;

    static int worldYSize = 80;

    static int xPos = 40;

    static int yPos = 40;

 

    public static void main (String[] args)

    {

     int i;

     SimpleBug abug;

        // Swarm initialization: all Swarm apps must call this first.

        Globals.env.initSwarm ("SimpleBug", "2.1",

                     "[email protected]", args); //在这个过程中声明了SimpleBug用到的随机生成函数

 

     // Create an instance of a SimpleBug, abug, and place it

     // within its world at (xPos, yPos). The bug is created in

     // Swarm's globalZone and is given a "bug id" of 1.

     abug = new SimpleBug(Globals.env.globalZone, worldXSize, worldYSize,

                   xPos, yPos, 1);

 

     // Loop our bug through a series of random walks asking it to

     // report its position after each one.

     for (i = 0; i < 100; i++)

     {

         abug.randomWalk();

         abug.reportPosition();

     }

    }

}

 

 

转载于:https://www.cnblogs.com/proteus/archive/2012/07/11/2586499.html

你可能感兴趣的:(java for swarm 学习笔记4)