Author Archives: Mr. M

Gridworld Bug Subclasses

 SlowBug class

A SlowBug is a Bug that poops Rocks instead of Flowers when it moves. However, since Rocks take a little bit longer to get out than Flowers do, a SlowBug takes THREE timesteps (three calls to act) before it is able to move like a normal bug .

A SlowBug is a Bug has the following behaviors and attributes:

  • a SlowBug has an instance variable called counter that is increased each time it acts
  • the default constructor for this class will set the bug’s color to green.
  • It also has a constructor that takes a color parameter :

    public SlowBug(java.awt.Color col)

  • After a SlowBug has waited two turns without doing anything, it acts exactly like a normal bug..
    At the end of each act, whether or not the bug has done anything, it increments counter variable.
  • the move method works the exact same as a regular Bug’s move, except instead of pooping a Flower in the space it leaves, it poops a Rock the same color as itself.

If you want, you can download SlowBug.gif and drag it into Eclipse or Bluej to use that image instead of the default Bug image.
The final result of running SlowBug would be something like the picture below.

 

FastBug

    FastBug is exactly like a normal bug, except it acts twice each “timestep” instead of just once. For example, in one timestep it will:

  • check if it can move, and if it can, it will move. If it can’t it will turn.
  • After it moves or turns, it will check if it can move again, and if it can, it will move. If it can’t, it will turn.

A FastBug is a Bug and should contain the following behaviors:

  • the default constructor for this class will set the bug’s color to red. It should also make it start out in a random direction (not always facing North like a normal bug does).
  • the act method should behave as described above
  • a FastBug is so fast, the flowers it leaves behind are already almost wilted when they come out. To do this, you will need to modify the move method so that the Flower it generates is not the same color as the FastBug, but five “shades” darker. To increase the darkness, use the Color class’s non-static darker()method five successive times on your color before passing it in to the Flower constructor.

If you want, you can download FastBug.gif and drag it into Eclipse to use that image instead of the default Bug image.

 

If you want an A, you must do FIsh:

Fish

Last year’s Marine Biology Case Study was similar to GridWorld, but it worked with Fish objects that have a 1/7 chance of breeding (or, more accurately, spontaneously generating children) each timestep and a 1/5 chance of dying each timestep. A Fish cannot move backwards, and our Fish will not turn, move, or generate children diagonally; it will only use the 4 cardinal directions North, South, East, and West. For this part of the lab, we are going to create a similar Fish in GridWorld.

A Fish is an Actor and should contain the following behaviors and attributes:

  • a shared, static instance variable: private static int nextAvailableID = 1; 
    A static variable is one that ALL instances of the class share. So the first fish that is made will initialize the static variable to 1; the others will keep using it.
  • a private int instance variable: private int myID;
  • a private static double instance variable for probabilityOfBreeding that is initialized to 1.0/7.0 and a private double instance variable for probabilityOfDying that is initialized to 1.0/5.0
  • Also, your fish should not die during the first 5 steps of the program.
  • the default constructor for this class should
    • set the Fish’s color to a random color. Use (Math.random()*256)typecast as an int to get random numbers between 0 and 255 for the Color constructor.
      • import java.awt.* to be able to initialize a new Color(double r, double g, double b);where r,g,b are each ints between 0 and 255 inclusive and represent the red, green and blue values of the color
    • The constructor should also make the Fish start out in a random direction (from North, South, East, or West…no other directions are allowed for a Fish). In the constructor, set      myID=nextAvailableID++;
      This means the first fish will get the ID 1, the next will get 2, the next will get 3, etc. Since nextAvailableID is static, it is shared amongst all fish.
  • override the public String toString() method as follows:
    public String toString()
    {
        return myID + " facing " + getDirection();
    }
  • protected boolean breed() method should be written that:
    • First calls Math.random() and checks to see if the number is the random number generated is >= probabilityOfBreeding. If it is, return false (your Fish did not breed this time).
    • Otherwise, if the random number was < probabilityOfBreeding, that means we will try to breed in all the empty locations in front, behind, to the left, and to the right of us.
      To do this, first find out how many empty locations you have above you, to your right, to your left, and below you.

      • If you have zero empty spaces above you, to your right, to your left, and below you, return false (you didn’t have an open space to generate children to so you couldn’t breed).
      • If you have one to four empty spaces, you will need create new Fish objects, then have them place themselves in the empty locations. When you are finished generating all the children you can, return true (you successfully bred).
  • protected void move() method should be written that:
    • checks for all valid, empty spaces above you, to your right, and to your left (Fish don’t move backwards, so we don’t check below you), then picks one of those to move to and goes there, changing directions to face the spot you are moving to (for instance, if you are going to an empty spot to your left, you turn left after you go there). If there are no empty locations you can go to, just stay still.
      Note: If you look through the GridWorld API in the Location class and Grid interface, you will find some methods very helpful in writing this method.
  • the act method should be overridden with the following code:
    public void act()
    {
    // Try to breed.
    if ( ! breed() )
    move(); 
    // Did not breed, so try to move.// Determine whether this fish will die in this timestep.
    if ( Math.random() < probabilityOfDying )
    removeSelfFromGrid();
    }

If you want, you can download Fish.gif and drag it into Eclipse to use that image instead of the default Actor image.
It can be kind of hard to tell what is happening, but if you move your mouse over a Fish in the grid you can see the toString() printed out, which will tell you which unique fish id you are looking at. Since breeding, dying, and moving are random, there is no set way to guarantee what your grid will look like, but here is how mine looked after it ran a few times

 

while-if-elif-else Jeroo[Python]

Assignment  if_elif_else_while_D  

  • start at  (0,0)
  • end at (0,23)
  • use 1 loop
  • pick up the 1 flower and use the following while loo

Use this code at the start of your program

 

The map

if_elif_else_while_D_BEFORE

What the map and Jeroo looks like at the completion of the loop

if_elif_else_while_D_AFTER_2

 

 

 

 

Systematically Visit [python]

 

Parameters

  • 1 while loop
  • visit all cells that you can
  • pick up all flowers
  • your loop must terminate (ie your Jeroo cannot keep going around the field forever)

Map #1

Grade : 2/10

  • start in (0,0) with 625 flowers!
  • row by row, plant flowers until you to position (23,0) as shown in animation below.


 

Grade : 3/10

D:\My Drive\2021-22_gdrive\intro 2021-22\jeroo\maps-student\unit-5

  Download the island files 

The Maps


 Grade : 5/10

Grade : 8/10 

Note: Do not be fooled by how similar the next map is. You will probably have to rewrite some code to complete the next one.


 Grade : 9/10  (THE FIRST MAP THAT *MUST* BE SHOWN)

Grade : 10/10 
Want an “A”, you must do the following map

Extra credit:

Java String Assignments -intro-1

Java String Assignments

These exercises are introductory methods that require use of basic String methods including

  • substring()
  • length()
    • “abc”.length() – >3
  • concatenation

 

public boolean sameStrings(String string1 ,String string2)

Description: This method returns true if string1 and string2 are the same. Use the ‘.equals()’ method.

Method Call return value/output
sameStrings(“foo”,”f”) false
sameStrings(“foo”,”foo”) true
sameStrings(“abc”, “cba”) false

public boolean any2Same(String a,String b, String c)

Description: This method returns true if any 2 of the strings are the same. Remember: Use the ‘.equals()’ method.

Method Call return value/output
any2Same(“xz”,”f”, “xz”) true
any2Same(“xz”,”f”, “xt”) false
any2Same(“xz”,”xz”, “fff”) true
any2Same(“xtz”,”abc”, “abc”) true
any2Same(“xtz”,”a^c”, “a!c”) false

public String firstThirdLettters(String str)

Description: This method returns the first and third letters of str concatenated together.

Method Call return value/output
firstThirdLettters(“foo“) “fo”
firstThirdLettters(“abcdefg”) “ac”
firstThirdLettters(“ad!kjkj”) “a!”

public boolean sameFirst2Letters(String a, String b)

Description: This method returns the first 2 letters of a and of b are the same .

Method Call return value/output
sameFirst2Letters(“axt”, “axjjj”) true
sameFirst2Letters(“1%3″ , “3$1″) false
sameFirst2Letters(“a~dd” ,”~adt” ) false

public String concatTwice(String str)

Description: This method returns str concatenated with itself .

Method Call return value/output
concatTwice(“foo”) “foofoo”
concatTwice(“a”) “aa”
concatTwice(“abcdd”) “abcddabcdd”

public String concatWithComma(String str)

Description: This method returns str concatenated with itself and with a comma in between

Method Call return value/output
concatWithComma(“foo”) “foo,foo”
concatWithComma(“a”) “a,a”
concatWithComma(“abcdd”) “abcdd,abcdd”

public String sandwich(String bread, String meat)

Description: This method is easiest to understand by looking at the sample calls below

Method Call return value/output
sandwich(“a“,”b“) aba
sandwich(“xy“,”ab“) xyabxy
sandwich(“hi“,”bye“) hibyehi

public int lengthTimesTwo(String str)

Description: This method returns the length of str times 2.

Method Call return value/output
lengthTimesTwo(“foo”) 6
lengthTimesTwo(“a”) 2
lengthTimesTwo(“abcdd”) 10

 String prePendFoo(String str)

Description: prepend “foo ” to the input and return the concatenation.

Method Call return value/output
prePendFoo(“abc”) “foo abc”
prePendFoo(“x”) “foo x”
prePendFoo(“abcdd”) foo abcdd”

public int sumOfLengths(String a, String a)

Description: This method returns the sum of the lengths of String a and String b .

Method Call return value/output
sumOfLengths(“ab”, “jk1”) 5  ie ( 2 +3)
sumOfLengths(“jj”, “”) 2 (ie 2 + 0)
sumOfLengths(“a~dd” ,”6″ ) 5  ie ( 4  + 1)


**public String concat5Times(String str)

Description: This method returns str concatenated with itself 5 times (Do this with a loop)

Method Call return value/output
concat5Times(“foo”) “foofoofoofoofoo”
concat5Times(“a”) “aaaaa”
concat5Times(“abcdd”) “abcddabcddabcddabcdd”

Java Strings

Java  Strings

substrings1

climb-the-stairs-[python]

Climb The Stairs

For all these maps:

  • Start your jeroo in the bottom left , at 23,0
  • use 1 and only 1 while loop
  • you may only hop() 1 space at a time
  • pick the flower at the end.

 

Download Island Files

climb-the-stairs__1.jev

 

 

climb-the-stairs__2.jev

  

climb-the-stairs__3.jev

   

 

climb-the-stairs__4.jev

 

 

climb-the-stairs__5.jev

climb_the_stairs_7

 

climb-the-stairs__6.jev

climb_the_stairs_8

 

climb-the-stairs__7.jev  (GRADE BOOK)

climb_the_stairs_7

 

climb-the-stairs__8.jev (GRADE BOOK)

 

climb_the_stairs_8

 

climb-the-stairs__9.jev

**( Only if you want to get that ‘A’)

 

 

 

Pascal’s Triangle Recursion example

Pascal’s Triangle

Pascals Triangle presents a simple formula for expanding binomials. If you think a little bit about how Pascal’s Triangle determines each term, you should see that a recursive method is used!

The animation below demonstrates the recursive nature of Pascal’s Triangle.

Part I

Objective: to employ recursion to be able to print out an entire line of Pascal’s Triangle . Look at the animation, getting a particular term in a line is inherently recursive. This class should throw an ArithmeticException if you attempt to calculate an invalid Term. (quick example of how to throw an Exception)

Hint: You only need to use recusion to get the term of the expansion.

Part II

Now that you can print out an entire line of Pascal’s Triangle. Print out the entire triangle up to some degree ‘n’.

java-recursion-excercises-1

void countDown(int num)

Description: This method prints the numbers from num down to and including on new lines

Method Call output
countDown(5) 5
4
3
2
1
0
countDown(3) 3
2
1
0
void printRev(String s)

Description: This method prints each letter of String s on new lines in reverse order.

Method Call output
printRev(“abcdef”) a
b
c
d
e
f
printRev(“abc”) a
b
c

 

int sumLessthan(int n)

Description: This method returns the sum of all positive integers less than or equal to n

Method Call output
sumLessThan(4)   10 (4+3+2+1)
sumLessThan( 5 )  15 ( 5 + 4 + 3 + 2 + 1)

 

int sumLessthan(int n)

Description: This method returns the sum of all positive integers less than or equal to n

Method Call output
sumLessThan(4)   10 (4+3+2+1)
sumLessThan( 5 )  15 ( 5 + 4 + 3 + 2 + 1)

 

double average( int[] nums, int index)

Description: This method returns the average of all the elements in nums. The parameter ‘idnex’ is used to keep track of how far along you have gone in the array.

Method Call output
average({3,2,1}, 0)   2
average({3,2,2}, 0)    2.333333