====== Review of Java Basics, IDEs, Intro to Two-Dimensional Arrays ====== ---- ===== Review of Java Basics (with an intro to IDEs) ===== * Integrated Development Environments * Recommended link: http://www.leepoint.net/notes-java/tools/10ide.html * Advantages over using simple text editors plus command line: * (Usually) Single environment for the program development cycle: editing, compiling, running/debugging programs * Visual error reporting * Many to choose from * Simple IDEs * Used in education, beginning programming * Today, we will use [[http://bluej.org|BlueJ]]. * Advanced IDEs * Used by "real" developers * Support large projects * Collaboration features * Support for multiple programming languages * Support for GUI building * Later, we'll try [[http://www.netbeans.org|NetBeans]] and maybe [[http://www.eclipse.org|Eclipse]]. ==== Lab Activity: Run bluej and try editing, compiling and running Java programs ==== * Login to Linux in HH 310. * Start a Terminal in Linux. * Create the "cs176" or "cs501b" folder, which will hold all your work for this course. * Start //bluej// in the Terminal. * Write a save a simple program. ---- ===== Introduction to Two-Dimensional Arrays ===== * Recommended link: http://www.fredosaurus.com/notes-java/data/arrays/arrays-2D.html * Lab Activity: Try writing a simple program that uses a 2-D array to store and print the following [[array of stars]] (asterisks): ***** * * ***** ---- ===== Example Application of Two-Dimensional Arrays: Minesweeper ===== * If you don't know what minesweeper is, see [[https://en.wikipedia.org/wiki/Minesweeper_(video_game)|Wikipedia]]. * You can also play a version of the game online at http://www.chezpoor.com/minesweeper/minesweeper.html. * What follows are some screens from a simple text-mode version of minesweeper. :) 1 2 3 4 5 6 7 8 9 -- -- -- -- -- -- -- -- -- 1 | - - - - - - - - - 2 | - - - - - - - - - 3 | - - - - - - - - - 4 | - - - - - - - - - 5 | - - - - - - - - - 6 | - - - - - - - - - 7 | - - - - - - - - - 8 | - - - - - - - - - 9 | - - - - - - - - - Enter a command to perform, where command is one of: 'o' to open a square 'f' to mark a square with a flag (F) '?' to mark a square with a question mark (?) 'c' to clear a square 'q' to quit the game Enter a command ( ): o Enter row & column coordinates of square separated by a space: 2 2 :) 1 2 3 4 5 6 7 8 9 -- -- -- -- -- -- -- -- -- 1 | - - - - - - - - - 2 | - 4 - - - - - - - 3 | - - - - - - - - - 4 | - - - - - - - - - 5 | - - - - - - - - - 6 | - - - - - - - - - 7 | - - - - - - - - - 8 | - - - - - - - - - 9 | - - - - - - - - - * Basic functionality: * Creation of program grid * Setting of randomly placed mines, computation of numbers in unmined squares * Drawing of user interface * Opening and displaying of grid squares specified by player * Setting of flags and question marks on grid squares specified by player * Advanced functionality: * Checking if the last move has won or lost the game * Clearing all surrounding unmined squares when an unmined square is opened * How might this be programmed? * Assuming this will involve two-dimensional arrays, how would the array (or arrays) be used? ----