# CS2133: Computer Science II Assignment 3 solution

\$24.99

Original Work ?

## Description

5/5 - (1 vote)

1 Message in a Bottle (20 points)
Create a MessageFrame class extending JFrame and a MessagePanel class extending JPanel. Add the panel to the frame’s contentPane. The frame should be titled “Message in a Bottle” and should end the program when the close box is clicked. In the panel, draw a bottle shape using some combination of Graphics object methods like drawLine, drawPolygon, drawPolyline, drawRoundRect and drawArc (look up the Graphics object in the Java API for details). Make the bottle as attractive as you can, although you won’t be graded on artistic merit. In the center of the bottle shape, add a message string. Create a Message class with a main method that instantiates the MessageFrame and gets the ball rolling.
2 Sierpinski’s Triangle (30 points)
Sierpinski’s Triangle is a simple and famous example of a fractal image. It is built recursively from a simple set of rules, illustrated in Figure 2. Your task will be to create an application that illustrates a perfect Sierpinski triangle, regardless of how large the application frame is. As the user moves and resizes the application window, the triangle should be redrawn and made larger or smaller as appropriate. Your program should display a frame that is based on the size of the user’s screen. The paintComponent method of the panel on which you are drawing will be called whenever the frame is resized, so that happens automagically and you don’t have to worry about it. JPanels include a getHeight() and getWidth() method that you will be able to use to get the information you need for passing to a recursive draw function that you will write. The draw algorithm takes the coordinates of a square area of the screen as input. If that square is the size of a single pixel, it should call drawRect() on the Graphics object passed into paintComponent, drawing a one-pixel square somewhere on the screen. If larger, it should call the draw method three times recursively, once on the lower left quadrant of the square, once on the lower right, and once on an area centered above the other two (as illustrated in Figure 2). The solution will look a lot like Figure 3, with the largest triangle ﬁtting into the largest square area of the frame, and the smallest triangles being three pixels in size.
3 Minesweeper (50 points)
You are going to write the game of Minesweeper. The Minesweeper board is a graphical grid of squares. A certain number of squares, chosen randomly, conceal dangerous mines. Play proceeds
1
Figure 1: Example output for Problem 1. Feel free to be more creative than this.
Figure 2: Fractal representation of Sierpinski construction from Problem 2. (Image source: Wikipedia)
2
Figure 3: Representative illustration of the Sierpinski problem solution.
3
Figure 4: A half-completed game of Minesweeper with a rudimentary design.
when a user clicks on a square. If that square hides a mine, the game is over and the player loses. If not, then stepping on the square reveals the number of mines hidden by squares adjacent to that square – a number between 0 and 8. A player can right-click on a square to mark it as being potentially mined, and remove the mark with another right-click. Figure 4 shows a game in progress. Numbers represent squares that have been clicked, ’F’s are places the player has placed a ﬂag, and ’?’s are squares that have not yet been clicked. This is a singularly unattractive gameboard; you are welcome to add icons or grid squares or any other kinds of graphics to liven up your own version. You are responsible for designing and implementing the whole game. This is a big task; start early. Here are some suggestions.
• Model-View-Controller architecture! Implement a minesweeper class that plays the game without relying on any GUI elements, instead using method calls for making moves and sending information. This is the model. The paintComponent methods of your UI objects should ask this model what to display. This is the view. The event handlers should call the
4