Instructions
Objective
You need to write a java homework that implements basic procedural generation in Java. Procedural generation involves creating algorithms to generate content, such as landscapes or levels, on-the-fly rather than designing them manually. In this assignment, you'll explore how to use Java to generate random terrain or patterns, providing a unique experience each time the program runs. Utilize Java's libraries and control structures to define the rules for generating content dynamically. By accomplishing this task, you'll gain a better understanding of Java programming concepts and enhance your skills in algorithmic thinking and problem-solving, which are crucial in software development.
Requirements and Specifications

Source Code
APP
import java.util.Scanner;
public class App {
    public static void main(String[] args) throws Exception {
        //Create scanner
        Scanner sc = new Scanner(System.in);
        // First, get size of marray from user
        System.out.print("Enter size of array: ");
        int N = Integer.valueOf(sc.nextLine());
        // Now, create a 2D array of size NxN
        Zone zones[][] = new Zone[N][N];
        // Now, generate the top-left zone by using a AverageDenResidential object, since this one
        // can randomly generate all other zones (including itself)
        zones[0][0] = new AverageDenResidential().generateNeighbor();
        System.out.print(zones[0][0].toString());
        // Now, populate all the array.
        for(int i = 0; i < N; i++) {
            for(int j = 0; j < N; j++) {
                if( i == 0 && j == 0)
                    continue; // Ignore indx (0,0) since this one was generated outside the loop
                if(i == 0) // first row
                {
                    zones[i][j] = zones[i][j-1].generateNeighbor(); // ask the object to the left to generate the neighbor
                }
                else // subsequent rows
                {
                    // Check if we are at the first element in the row i
                    if(j == 0) {
                        // Ask the first object in the previous row to generate the neighbor
                        zones[i][j] = zones[i-1][j].generateNeighbor();
                    }
                    else
                    {
                        // Ask both the object "up from" and the one "to the left" to generate neighbors
                        // and flip a coin to pick one
                        // First, flip coin
                        double chance = Math.random();
                        Zone upfrom = zones[i-1][j].generateNeighbor();
                        Zone leftfrom = zones[i][j-1].generateNeighbor();
                        if(chance < 0.5) // pick the one from up
                        {
                            zones[i][j] = upfrom;
                        }
                        else // pick one from the left
                        {
                            zones[i][j] = leftfrom;
                        }
                    }
                }
                // Print
                System.out.print(zones[i][j].toString());
            }
            // We are jumping to a new row, so print a new line
            System.out.print("\n");
        }
        // Close Scanner
        sc.close();
    }
}
AVERAGE DEN RESIDENTIAL
import org.newdawn.slick.Color;
import org.newdawn.slick.Graphics;
public class AverageDenResidential extends Zone {
    // Constructor
    public AverageDenResidential()
    {
        // Set color
        color = Color.gray;
    }
    @Override
    public void drawSelf(Graphics g) {
        // TODO Auto-generated method stub
    }
    @Override
    public Zone generateNeighbor() {
        // TODO Auto-generated method stub
        // Generate random number between 0 and 1
        double chance = Math.random();
        if(chance <= 0.05) // first 5%, generate a Industrial
            return new Industrial();
        else if(chance > 0.05 && chance <= 0.1) // second 5%, generate LowDenResidential
            return new LowDenResidential();
        else if(chance > 0.1 && chance <= 0.3) // 20%, HighDenResidential
            return new HighDenResidential();
        else if(chance > 0.3 && chance <= 0.5) // 20%, Commercial
            return new Commercial();
        else if(chance > 0.5 && chance <= 0.7) // 20%, RecreationSpace
            return new RecreationSpace();
        else // 30%, AverageDenResidential
            return new AverageDenResidential();
    }
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return "A";
    }
}
RECREATION SPACE
import org.newdawn.slick.Color;
import org.newdawn.slick.Graphics;
public class RecreationSpace extends Zone {
    // Constructor
    public RecreationSpace()
    {
        // Set color
        color = Color.blue;
    }
    @Override
    public void drawSelf(Graphics g) {
        // TODO Auto-generated method stub
    }
    @Override
    public Zone generateNeighbor() {
        // TODO Auto-generated method stub
        // Generate random number between 0 and 1
        double chance = Math.random();
        if(chance <= 0.05) // first 5%, generate a HighDenResidential
            return new HighDenResidential();
        else if(chance > 0.05 && chance <= 0.15) // 10%, generate AverageDenResidential
            return new AverageDenResidential();
        else if(chance > 0.15 && chance <= 0.3) // 15% Commercial
            return new Commercial();
        else if(chance > 0.3 && chance <= 0.55) // 25% LowDenResidential
            return new LowDenResidential();
        else // 45% RecreationSpace
            return new RecreationSpace();
    }
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return "R";
    }
} 
Similar Samples
At ProgrammingHomeworkHelp.com, we offer top-notch assistance with programming assignments, ensuring timely and accurate solutions. Our expert team is proficient in various languages and platforms, dedicated to helping you excel in your studies. Trust us for reliable and high-quality programming homework support.
Java
Java
Java
Java
Java
Java
Java
Java
Java
Java
Java
Java
Java
Java
Java
Java
Java
Java
Java
Java
