Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example ...
-
Upload
leon-watkins -
Category
Documents
-
view
240 -
download
0
Transcript of Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example ...
![Page 1: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/1.jpg)
CS 121Week 9 - Wednesday
![Page 2: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/2.jpg)
Last time
What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life
![Page 3: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/3.jpg)
Questions?
![Page 4: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/4.jpg)
Project 3
![Page 5: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/5.jpg)
2D Arrays
![Page 6: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/6.jpg)
Declaration
To declare a two dimensional array, we just use two sets of square brackets ([][]):
Doing so creates a variable that can hold a 2D array of ints
As before, we still need to instantiate the array to have a specific size:
int [][] table;
table = new int[5][10];
![Page 7: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/7.jpg)
Accessing 2D arrays
You have to index into 2D arrays twice in order to get an element Think of the first index as which row and
the second as which columnint [][] table = new int[5][10];
table[4][7] = 3;int x = table[4][7] + 5;
![Page 8: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/8.jpg)
Conway’s Game of Life A cell is represented by a block in a grid Each cell has 8 neighbors Simple rules for a cell “coming to life” or
“dying”:1. A live cell with fewer than 2 live neighbors dies
from loneliness2. A live cell with more than 3 live neighbors dies
from overcrowding3. A live cell with exactly 2 or 3 neighbors keeps
living4. A dead cell with exactly 3 living neighbors comes
to life
![Page 9: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/9.jpg)
Implementing Conway's Game of Life We can represent the grid of cells with a 2D
array of boolean values true means alive false means dead
Each iteration, we draw the grid onto the screen with StdDraw Black means alive White means dead
Then, we update the grid to contain the new values
The grid stores the state of the game We still have to use StdDraw to draw that state
![Page 10: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/10.jpg)
3D and Higher Dimension Arrays
![Page 11: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/11.jpg)
4th dimensional rocketships going up
It doesn’t have to stop at 2 dimensions! You can have 3 or more Here’s an example with 3 dimensions:
Unfortunately, the font gets small
int[][][] rubiksCube = new int[3][3][3];int count = 1;
for( int i = 0; i < 3; i++ )for( int j = 0; j < 3; j++ )
for( int k = 0; k < 3; k++ ){rubiksCube[i][j][k] = count;count++;}
![Page 12: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/12.jpg)
What does a 3D array look like? It looks like whatever you want it to You can visualize it in 3D if you want There are other techniques It’s just a way to store data It doesn’t actually look
like anything inside thecomputer
![Page 13: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/13.jpg)
Why use a high dimensional array? Sometimes you have data
categorized in several different ways For example, E-Town might keep
some statistics according to Year, Gender, and Race 0 – Freshman 1 – Sophomore 2 – Junior 3 – Senior
Perfect candidate for a 3D array
0 – Male 1 – Female
0 – African American
1 – Asian 2 – Caucasian 3 – Other
![Page 14: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/14.jpg)
Why not to use a high dimensional array Too many brackets Too much stuff
Total size used is the product of the length of all the dimensions
100 x 100 x 100 = 1,000,000 Hard to visualize, hard to imagine Up as high as 4 is sometimes useful Don’t go beyond 2 on a regular basis
![Page 15: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/15.jpg)
Method Overloading
![Page 16: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/16.jpg)
Overloading
By now, everyone should be familiar with the simple method that returns the maximum of two values:
public static int max( int a, int b ){
if( a > b )return a;
elsereturn b;
}
![Page 17: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/17.jpg)
A rose by any other name… What if we wanted to have a method with
the same name that took three arguments and gave the maximum of them?
public static int max( int a, int b, int c ){
if( a > b && a > c )return a;
else if( b > a && b > c )return b;
elsereturn c;
}
![Page 18: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/18.jpg)
Is that allowed?
Yes! All that we need is the parameters to
be different so that the compiler can figure out which function to use
The number or types (or both) of the parameters must be different
A different return type is not enough!
![Page 19: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/19.jpg)
Russian stacking dolls
We can even call one overloaded function from another:
public static int max(int a, int b, int c){
return max( max(a,b), c );}
![Page 20: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/20.jpg)
Confusion! Consider the following two methods:
Are they legally overloaded methods?
public static int flibble( int a, double b ){
return 10;}
public static int flibble( double a, int b ){
return 20;}
![Page 21: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/21.jpg)
Which one?
But, which one gets called if I have a line of code that says:
int x;x = flibble( 4, 5 );
No one knows!
![Page 22: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/22.jpg)
Quiz
![Page 23: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/23.jpg)
Upcoming
![Page 24: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/24.jpg)
Next time…
More method practice Lab 9
![Page 25: Week 9 - Wednesday. What did we talk about last time? 2D arrays Queen attacking pawn example Started Game of Life.](https://reader036.fdocuments.in/reader036/viewer/2022082215/5a4d1b497f8b9ab0599a4ca2/html5/thumbnails/25.jpg)
Reminders
Keep reading Chapter 8 of the textbook
Keep working on Project 3 Due this Friday