Criando o jogo Labirinto para dispositivos móveis
Veja nesta dica como desenvolver o jogo Labirinto para aparelhos J2ME.
Criando o jogo Labirinto para dispositivos móveis
Veja nesta dica como desenvolver o jogo Labirinto para aparelhos J2ME.
<B><SPAN lang=EN-US > </SPAN></B>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.util.Random;</SPAN><B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.util.Vector;</SPAN><B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.microedition.midlet.*;</SPAN><B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.microedition.lcdui.*;</SPAN><B><SPAN lang=EN-US >public class </SPAN></B><SPAN lang=EN-US >Maze </SPAN><B><SPAN lang=EN-US >extends </SPAN></B><SPAN lang=EN-US >MIDlet </SPAN><B><SPAN lang=EN-US >implements </SPAN></B><SPAN lang=EN-US >CommandListener {</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >MazeCanvas myCanvas;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >SelectScreen mySelectScreen;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Command myExitCommand = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Command(</SPAN><SPAN lang=EN-US >"Exit"</SPAN><SPAN lang=EN-US >, Command.EXIT, </SPAN><SPAN lang=EN-US >99</SPAN><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Command myNewCommand = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Command(</SPAN><SPAN lang=EN-US >"New Maze"</SPAN><SPAN lang=EN-US >, Command.SCREEN, </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Command myAlertDoneCommand = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Command(</SPAN><SPAN lang=EN-US >"Done"</SPAN><SPAN lang=EN-US >, Command.EXIT, </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Command myPrefsCommand </SPAN><SPAN lang=EN-US >= </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Command(</SPAN><SPAN lang=EN-US >"Size Preferences"</SPAN><SPAN lang=EN-US >, Command.SCREEN, </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public </SPAN></B><SPAN lang=EN-US >Maze() {</SPAN><B><SPAN lang=EN-US >try </SPAN></B><SPAN lang=EN-US >{ myCanvas = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >MazeCanvas(Display.getDisplay(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >));</SPAN><SPAN lang=EN-US >myCanvas.addCommand(myExitCommand);</SPAN><SPAN lang=EN-US >myCanvas.addCommand(myNewCommand);</SPAN><SPAN lang=EN-US >myCanvas.addCommand(myPrefsCommand);</SPAN><SPAN lang=EN-US >myCanvas.setCommandListener(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >catch</SPAN></B><SPAN lang=EN-US >(Exception e) {</SPAN><SPAN lang=EN-US >Alert errorAlert = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Alert(</SPAN><SPAN lang=EN-US >"error"</SPAN><SPAN lang=EN-US >, </SPAN><SPAN lang=EN-US >e.getMessage(), null, AlertType.ERROR);</SPAN><SPAN lang=EN-US >errorAlert.setCommandListener(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >errorAlert.setTimeout(Alert.FOREVER);</SPAN><SPAN lang=EN-US >errorAlert.addCommand(myAlertDoneCommand);</SPAN><SPAN lang=EN-US >Display.getDisplay(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >).setCurrent(errorAlert);</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >startApp() </SPAN><B><SPAN lang=EN-US >throws </SPAN></B><SPAN lang=EN-US >MIDletStateChangeException {</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(myCanvas != </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US >myCanvas.start();</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >destroyApp(</SPAN><B><SPAN lang=EN-US >boolean </SPAN></B><SPAN lang=EN-US >unconditional) </SPAN><B><SPAN lang=EN-US >throws </SPAN></B><SPAN lang=EN-US >MIDletStateChangeException {</SPAN><SPAN lang=EN-US >myCanvas = </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >System.gc();</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >pauseApp() {</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >commandAction(Command c, Displayable s) {</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(c == myNewCommand) {</SPAN><SPAN lang=EN-US >myCanvas.newMaze();</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >else if</SPAN></B><SPAN lang=EN-US >(c == myAlertDoneCommand) {</SPAN><B><SPAN lang=EN-US >try </SPAN></B><SPAN lang=EN-US >{</SPAN><SPAN lang=EN-US >destroyApp(</SPAN><B><SPAN lang=EN-US >false</SPAN></B><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >notifyDestroyed();</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >catch </SPAN></B><SPAN lang=EN-US >(MIDletStateChangeException ex) {</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >else if</SPAN></B><SPAN lang=EN-US >(c == myPrefsCommand) {</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(mySelectScreen == </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US >mySelectScreen = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >SelectScreen(myCanvas);</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >Display.getDisplay(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >).setCurrent(mySelectScreen);</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >else if</SPAN></B><SPAN lang=EN-US >(c == myExitCommand) {</SPAN><B><SPAN lang=EN-US >try </SPAN></B><SPAN lang=EN-US >{</SPAN><SPAN lang=EN-US >destroyApp(</SPAN><B><SPAN lang=EN-US >false</SPAN></B><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >notifyDestroyed();</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >catch </SPAN></B><SPAN lang=EN-US >(MIDletStateChangeException ex) {</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >}</SPAN><B><SPAN lang=EN-US >class </SPAN></B><SPAN lang=EN-US >MazeCanvas </SPAN><B><SPAN lang=EN-US >extends </SPAN></B><SPAN lang=EN-US >javax.microedition.lcdui.Canvas {</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public static final int </SPAN></B><SPAN lang=EN-US >BLACK = </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public static final int </SPAN></B><SPAN lang=EN-US >WHITE = </SPAN><SPAN lang=EN-US >0xffffff</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Display myDisplay;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Grid myGrid;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private boolean </SPAN></B><SPAN lang=EN-US >myGameOver = </SPAN><B><SPAN lang=EN-US >false</SPAN></B><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private int </SPAN></B><SPAN lang=EN-US >mySquareSize;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private int </SPAN></B><SPAN lang=EN-US >myMaxSquareSize;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private int </SPAN></B><SPAN lang=EN-US >myMinSquareSize;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private int </SPAN></B><SPAN lang=EN-US >myStartX = </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private int </SPAN></B><SPAN lang=EN-US >myStartY = </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private int </SPAN></B><SPAN lang=EN-US >myGridHeight;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private int </SPAN></B><SPAN lang=EN-US >myGridWidth;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private int </SPAN></B><SPAN lang=EN-US >myMaxGridWidth;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private int </SPAN></B><SPAN lang=EN-US >myMinGridWidth;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private int </SPAN></B><SPAN lang=EN-US >myOldX = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private int </SPAN></B><SPAN lang=EN-US >myOldY = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private int </SPAN></B><SPAN lang=EN-US >myPlayerX = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private int </SPAN></B><SPAN lang=EN-US >myPlayerY = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >setColWidth(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >colWidth) {</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(colWidth < </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US >mySquareSize = </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >else </SPAN></B><SPAN lang=EN-US >{</SPAN><SPAN lang=EN-US >mySquareSize = colWidth;</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >myGridWidth = getWidth() / mySquareSize;</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(myGridWidth % </SPAN><SPAN lang=EN-US >2 </SPAN><SPAN lang=EN-US >== </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US >myGridWidth -= </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >myGridHeight = getHeight() / mySquareSize;</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(myGridHeight % </SPAN><SPAN lang=EN-US >2 </SPAN><SPAN lang=EN-US >== </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US >myGridHeight -= </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >myGrid = </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >;</SPAN><B><SPAN lang=EN-US >return</SPAN></B><SPAN lang=EN-US >(myGridWidth);</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >getMinColWidth() {</SPAN><B><SPAN lang=EN-US >return</SPAN></B><SPAN lang=EN-US >(myMinSquareSize);</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >getMaxColWidth() {</SPAN><B><SPAN lang=EN-US >return</SPAN></B><SPAN lang=EN-US >(myMaxSquareSize);</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >getMaxNumCols() {</SPAN><B><SPAN lang=EN-US >return</SPAN></B><SPAN lang=EN-US >(myMaxGridWidth);</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >getColWidth() {</SPAN><B><SPAN lang=EN-US >return</SPAN></B><SPAN lang=EN-US >(mySquareSize);</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >getNumCols() {</SPAN><B><SPAN lang=EN-US >return</SPAN></B><SPAN lang=EN-US >(myGridWidth);</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public </SPAN></B><SPAN lang=EN-US >MazeCanvas(Display d) </SPAN><B><SPAN lang=EN-US >throws </SPAN></B><SPAN lang=EN-US >Exception {</SPAN><SPAN lang=EN-US >myDisplay = d;</SPAN> <B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >width = getWidth();</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >height = getHeight();</SPAN><SPAN lang=EN-US >mySquareSize = </SPAN><SPAN lang=EN-US >5</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >myMinSquareSize = </SPAN><SPAN lang=EN-US >3</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >myMaxGridWidth = width / myMinSquareSize;</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(myMaxGridWidth % </SPAN><SPAN lang=EN-US >2 </SPAN><SPAN lang=EN-US >== </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US >myMaxGridWidth -= </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >myGridWidth = width / mySquareSize;</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(myGridWidth % </SPAN><SPAN lang=EN-US >2 </SPAN><SPAN lang=EN-US >== </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US >myGridWidth -= </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >myGridHeight = height / mySquareSize;</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(myGridHeight % </SPAN><SPAN lang=EN-US >2 </SPAN><SPAN lang=EN-US >== </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US >myGridHeight -= </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >myMinGridWidth = </SPAN><SPAN lang=EN-US >15</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >myMaxSquareSize = width / myMinGridWidth;</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(myMaxSquareSize > height / myMinGridWidth) {</SPAN><SPAN lang=EN-US >myMaxSquareSize = height / myMinGridWidth;</SPAN><SPAN lang=EN-US >}</SPAN> <B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(myMaxSquareSize < mySquareSize) {</SPAN><B><SPAN lang=EN-US >throw</SPAN></B><SPAN lang=EN-US >(</SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Exception(</SPAN><SPAN lang=EN-US >"Display too small"</SPAN><SPAN lang=EN-US >));</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >void </SPAN></B><SPAN lang=EN-US >start() {</SPAN><SPAN lang=EN-US >myDisplay.setCurrent(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >repaint();</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >void </SPAN></B><SPAN lang=EN-US >newMaze() {</SPAN><SPAN lang=EN-US >myGameOver = </SPAN><B><SPAN lang=EN-US >false</SPAN></B><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >myGrid = </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >myPlayerX = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >myPlayerY = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >myOldX = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >myOldY = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >myDisplay.setCurrent(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >repaint();</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >protected void </SPAN></B><SPAN lang=EN-US >paint(Graphics g) {</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(myGrid == </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >) {</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >width = getWidth();</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >height = getHeight();</SPAN>
<SPAN lang=EN-US >myGrid = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Grid(myGridWidth, myGridHeight);</SPAN><B><SPAN lang=EN-US >for</SPAN></B><SPAN lang=EN-US >(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >i = </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >; i < myGridWidth; i++) {</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >for</SPAN></B><SPAN lang=EN-US >(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >j = </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >; j < myGridHeight; j++) {</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(myGrid.mySquares[i][j] == </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US >g.setColor(BLACK);</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >else </SPAN></B><SPAN lang=EN-US >{</SPAN><SPAN lang=EN-US >g.setColor(WHITE);</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >g.fillRect(myStartX + (i*mySquareSize), </SPAN><SPAN lang=EN-US >myStartY + (j*mySquareSize), </SPAN><SPAN lang=EN-US >mySquareSize, mySquareSize);</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >g.setColor(BLACK);</SPAN><SPAN lang=EN-US >g.fillRect(myStartX + ((myGridWidth-</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) * mySquareSize), </SPAN><SPAN lang=EN-US >myStartY, width, height);</SPAN><SPAN lang=EN-US >g.setColor(WHITE);</SPAN><SPAN lang=EN-US >g.fillRect(myStartX + ((myGridWidth-</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) * mySquareSize), </SPAN><SPAN lang=EN-US >myStartY + ((myGridHeight-</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >) * mySquareSize), width, height);</SPAN><SPAN lang=EN-US >g.setColor(BLACK);</SPAN><SPAN lang=EN-US >g.fillRect(myStartX, </SPAN><SPAN lang=EN-US >myStartY + ((myGridHeight-</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) * mySquareSize), width, height);</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >g.setColor(</SPAN><SPAN lang=EN-US >255</SPAN><SPAN lang=EN-US >, </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >, </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >g.fillRoundRect(myStartX + (mySquareSize)*myPlayerX, </SPAN><SPAN lang=EN-US >myStartY + (mySquareSize)*myPlayerY, </SPAN><SPAN lang=EN-US >mySquareSize, mySquareSize, </SPAN><SPAN lang=EN-US >mySquareSize, mySquareSize);</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >((myOldX != myPlayerX) || (myOldY != myPlayerY)) {</SPAN><SPAN lang=EN-US >g.setColor(WHITE);</SPAN><SPAN lang=EN-US >g.fillRect(myStartX + (mySquareSize)*myOldX, </SPAN><SPAN lang=EN-US >myStartY + (mySquareSize)*myOldY, </SPAN><SPAN lang=EN-US >mySquareSize, mySquareSize);}</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(myGameOver) {</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >width = getWidth();</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >height = getHeight();</SPAN><SPAN lang=EN-US >Font font = g.getFont();</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >fontHeight = font.getHeight();</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >fontWidth = font.stringWidth(</SPAN><SPAN lang=EN-US >"Maze Completed"</SPAN><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >g.setColor(WHITE);</SPAN><SPAN lang=EN-US >g.fillRect((width - fontWidth)/</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >, (height - fontHeight)/</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >,</SPAN><SPAN lang=EN-US >fontWidth + </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >, fontHeight);</SPAN><SPAN lang=EN-US >g.setColor(</SPAN><SPAN lang=EN-US >255</SPAN><SPAN lang=EN-US >, </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >, </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >g.setFont(font);</SPAN><SPAN lang=EN-US >g.drawString(</SPAN><SPAN lang=EN-US >"Maze Completed"</SPAN><SPAN lang=EN-US >, (width - fontWidth)/</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >, </SPAN><SPAN lang=EN-US >(height - fontHeight)/</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >,</SPAN><SPAN lang=EN-US >g.TOP|g.LEFT);</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >keyPressed(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >keyCode) { </SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(! myGameOver) {</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >action = getGameAction(keyCode); </SPAN><B><SPAN lang=EN-US >switch </SPAN></B><SPAN lang=EN-US >(action) {</SPAN><B><SPAN lang=EN-US >case </SPAN></B><SPAN lang=EN-US >LEFT:</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >((myGrid.mySquares[myPlayerX-</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >][myPlayerY] == </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) && </SPAN><SPAN lang=EN-US >(myPlayerX != </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >)) {</SPAN><SPAN lang=EN-US >myOldX = myPlayerX;</SPAN><SPAN lang=EN-US >myOldY = myPlayerY;</SPAN><SPAN lang=EN-US >myPlayerX -= </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >repaint();</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >break</SPAN></B><SPAN lang=EN-US >;</SPAN><B><SPAN lang=EN-US >case </SPAN></B><SPAN lang=EN-US >RIGHT:</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(myGrid.mySquares[myPlayerX+</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >][myPlayerY] == </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US >myOldX = myPlayerX;</SPAN><SPAN lang=EN-US >myOldY = myPlayerY;</SPAN><SPAN lang=EN-US >myPlayerX += </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >repaint();</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >else if</SPAN></B><SPAN lang=EN-US >((myPlayerX == myGrid.mySquares.length - </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >) && </SPAN><SPAN lang=EN-US >(myPlayerY == myGrid.mySquares[</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >].length - </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >)) {</SPAN><SPAN lang=EN-US >myOldX = myPlayerX;</SPAN><SPAN lang=EN-US >myOldY = myPlayerY;</SPAN><SPAN lang=EN-US >myPlayerX += </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >myGameOver = </SPAN><B><SPAN lang=EN-US >true</SPAN></B><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >repaint();</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >break</SPAN></B><SPAN lang=EN-US >;</SPAN><B><SPAN lang=EN-US >case </SPAN></B><SPAN lang=EN-US >UP:</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(myGrid.mySquares[myPlayerX][myPlayerY-</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >] == </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US >myOldX = myPlayerX;</SPAN><SPAN lang=EN-US >myOldY = myPlayerY;</SPAN><SPAN lang=EN-US >myPlayerY -= </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >repaint();</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >break</SPAN></B><SPAN lang=EN-US >;</SPAN><B><SPAN lang=EN-US >case </SPAN></B><SPAN lang=EN-US >DOWN:</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(myGrid.mySquares[myPlayerX][myPlayerY+</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >] == </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US >myOldX = myPlayerX;</SPAN><SPAN lang=EN-US >myOldY = myPlayerY;</SPAN><SPAN lang=EN-US >myPlayerY += </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >repaint();</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >break</SPAN></B><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >}</SPAN><B><SPAN lang=EN-US >class </SPAN></B><SPAN lang=EN-US >SelectScreen </SPAN><B><SPAN lang=EN-US >extends </SPAN></B><SPAN lang=EN-US >Form </SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >implements </SPAN></B><SPAN lang=EN-US >ItemStateListener, CommandListener {</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Command myExitCommand = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Command(</SPAN><SPAN lang=EN-US >"Done"</SPAN><SPAN lang=EN-US >, Command.EXIT, </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Gauge myWidthGauge;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Gauge myColumnsGauge;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >MazeCanvas myCanvas;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public </SPAN></B><SPAN lang=EN-US >SelectScreen(MazeCanvas canvas) {</SPAN><B><SPAN lang=EN-US >super</SPAN></B><SPAN lang=EN-US >(</SPAN><SPAN lang=EN-US >"Size Preferences"</SPAN><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >addCommand(myExitCommand);</SPAN><SPAN lang=EN-US >setCommandListener(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >myCanvas = canvas;</SPAN><SPAN lang=EN-US >setItemStateListener(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >myWidthGauge = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Gauge(</SPAN><SPAN lang=EN-US >"Column Width"</SPAN><SPAN lang=EN-US >, true, </SPAN><SPAN lang=EN-US >myCanvas.getMaxColWidth(), </SPAN><SPAN lang=EN-US >myCanvas.getColWidth());</SPAN><SPAN lang=EN-US >myColumnsGauge = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Gauge(</SPAN><SPAN lang=EN-US >"Number of Columns"</SPAN><SPAN lang=EN-US >, false, </SPAN><SPAN lang=EN-US >myCanvas.getMaxNumCols(), </SPAN><SPAN lang=EN-US >myCanvas.getNumCols());</SPAN><SPAN lang=EN-US >append(myWidthGauge);</SPAN><SPAN lang=EN-US >append(myColumnsGauge);</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >itemStateChanged(Item item) {</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(item == myWidthGauge) {</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >val = myWidthGauge.getValue();</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(val < myCanvas.getMinColWidth()) {</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >myWidthGauge.setValue(myCanvas.getMinColWidth());</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >else </SPAN></B><SPAN lang=EN-US >{</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >numCols = myCanvas.setColWidth(val);</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >myColumnsGauge.setValue(numCols);</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >commandAction(Command c, Displayable s) {</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(c == myExitCommand) {</SPAN><SPAN lang=EN-US >myCanvas.newMaze();</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >}</SPAN><B><SPAN lang=EN-US >class </SPAN></B><SPAN lang=EN-US >Grid {</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Random myRandom = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Random();</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >int</SPAN></B><SPAN lang=EN-US >[][] mySquares;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public </SPAN></B><SPAN lang=EN-US >Grid(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >width, </SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >height) {</SPAN><SPAN lang=EN-US >mySquares = </SPAN><B><SPAN lang=EN-US >new int</SPAN></B><SPAN lang=EN-US >[width][height];</SPAN><B><SPAN lang=EN-US >for</SPAN></B><SPAN lang=EN-US >(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >i = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >; i < width - </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >; i++) {</SPAN><B><SPAN lang=EN-US >for</SPAN></B><SPAN lang=EN-US >(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >j = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >; j < height - </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >; j++) {</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >((i % </SPAN><SPAN lang=EN-US >2 </SPAN><SPAN lang=EN-US >== </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) || (j % </SPAN><SPAN lang=EN-US >2 </SPAN><SPAN lang=EN-US >== </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >)) {</SPAN><SPAN lang=EN-US >mySquares[i][j] = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >mySquares[</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >][</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >] = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >createMaze();</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private void </SPAN></B><SPAN lang=EN-US >createMaze() {</SPAN><SPAN lang=EN-US >// create an initial framework of black squares.</SPAN><B><SPAN lang=EN-US >for</SPAN></B><SPAN lang=EN-US >(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >i = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >; i < mySquares.length - </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >; i++) {</SPAN><B><SPAN lang=EN-US >for</SPAN></B><SPAN lang=EN-US >(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >j = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >; j < mySquares[i].length - </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >; j++) {</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >((i + j) % </SPAN><SPAN lang=EN-US >2 </SPAN><SPAN lang=EN-US >== </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US >mySquares[i][j] = </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >}</SPAN><B><SPAN lang=EN-US >for</SPAN></B><SPAN lang=EN-US >(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >i = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >; i < mySquares.length - </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >; i+=</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >) {</SPAN><B><SPAN lang=EN-US >for</SPAN></B><SPAN lang=EN-US >(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >j = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >; j < mySquares[i].length - </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >; j+=</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >mySquares[i][j] = </SPAN><SPAN lang=EN-US >3</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >Vector possibleSquares = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Vector(mySquares.length </SPAN><SPAN lang=EN-US >* mySquares[</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >].length);</SPAN><B><SPAN lang=EN-US >int</SPAN></B><SPAN lang=EN-US >[] startSquare = </SPAN><B><SPAN lang=EN-US >new int</SPAN></B><SPAN lang=EN-US >[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >];</SPAN><SPAN lang=EN-US >startSquare[</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >] = getRandomInt(mySquares.length / </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >)*</SPAN><SPAN lang=EN-US >2 </SPAN><SPAN lang=EN-US >+ </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >startSquare[</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >] = getRandomInt(mySquares[</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >].length / </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >)*</SPAN><SPAN lang=EN-US >2 </SPAN><SPAN lang=EN-US >+ </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >mySquares[startSquare[</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >]][startSquare[</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >]] = </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >possibleSquares.addElement(startSquare);</SPAN><B><SPAN lang=EN-US >while</SPAN></B><SPAN lang=EN-US >(possibleSquares.size() > </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >) {</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >chosenIndex = getRandomInt(possibleSquares.size());</SPAN><B><SPAN lang=EN-US >int</SPAN></B><SPAN lang=EN-US >[] chosenSquare = (</SPAN><B><SPAN lang=EN-US >int</SPAN></B><SPAN lang=EN-US >[])possibleSquares.elementAt(chosenIndex);</SPAN><SPAN lang=EN-US >mySquares[chosenSquare[</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >]][chosenSquare[</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >]] = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >possibleSquares.removeElementAt(chosenIndex);</SPAN><SPAN lang=EN-US >link(chosenSquare, possibleSquares);</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >possibleSquares = </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >System.gc();</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private void </SPAN></B><SPAN lang=EN-US >link(</SPAN><B><SPAN lang=EN-US >int</SPAN></B><SPAN lang=EN-US >[] chosenSquare, Vector possibleSquares) {</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >linkCount = </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >;</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >i = chosenSquare[</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >];</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >j = chosenSquare[</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >];</SPAN><B><SPAN lang=EN-US >int</SPAN></B><SPAN lang=EN-US >[] links = </SPAN><B><SPAN lang=EN-US >new int</SPAN></B><SPAN lang=EN-US >[</SPAN><SPAN lang=EN-US >8</SPAN><SPAN lang=EN-US >];</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(i >= </SPAN><SPAN lang=EN-US >3</SPAN><SPAN lang=EN-US >) {</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(mySquares[i - </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >][j] == </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >links[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >*linkCount] = i - </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >links[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >*linkCount + </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >] = j;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >linkCount++;</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >else if</SPAN></B><SPAN lang=EN-US >(mySquares[i - </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >][j] == </SPAN><SPAN lang=EN-US >3</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >mySquares[i - </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >][j] = </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >int</SPAN></B><SPAN lang=EN-US >[] newSquare = </SPAN><B><SPAN lang=EN-US >new int</SPAN></B><SPAN lang=EN-US >[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >];</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >newSquare[</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >] = i - </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >newSquare[</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >] = j;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >possibleSquares.addElement(newSquare);</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >}</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(j + </SPAN><SPAN lang=EN-US >3 </SPAN><SPAN lang=EN-US ><= mySquares[i].length) {</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(mySquares[i][j + </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >] == </SPAN><SPAN lang=EN-US >3</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >mySquares[i][j + </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >] = </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >int</SPAN></B><SPAN lang=EN-US >[] newSquare = </SPAN><B><SPAN lang=EN-US >new int</SPAN></B><SPAN lang=EN-US >[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >];</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >newSquare[</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >] = i;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >newSquare[</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >] = j + </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >possibleSquares.addElement(newSquare);</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >else if</SPAN></B><SPAN lang=EN-US >(mySquares[i][j + </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >] == </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >links[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >*linkCount] = i;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >links[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >*linkCount + </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >] = j + </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >linkCount++;</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(j >= </SPAN><SPAN lang=EN-US >3</SPAN><SPAN lang=EN-US >) {</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(mySquares[i][j - </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >] == </SPAN><SPAN lang=EN-US >3</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >mySquares[i][j - </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >] = </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >int</SPAN></B><SPAN lang=EN-US >[] newSquare = </SPAN><B><SPAN lang=EN-US >new int</SPAN></B><SPAN lang=EN-US >[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >];</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >newSquare[</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >] = i;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >newSquare[</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >] = j - </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >possibleSquares.addElement(newSquare);</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >else if</SPAN></B><SPAN lang=EN-US >(mySquares[i][j - </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >] == </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >links[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >*linkCount] = i;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >links[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >*linkCount + </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >] = j - </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >linkCount++;</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(i + </SPAN><SPAN lang=EN-US >3 </SPAN><SPAN lang=EN-US ><= mySquares.length) {</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(mySquares[i + </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >][j] == </SPAN><SPAN lang=EN-US >3</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >mySquares[i + </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >][j] = </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >int</SPAN></B><SPAN lang=EN-US >[] newSquare = </SPAN><B><SPAN lang=EN-US >new int</SPAN></B><SPAN lang=EN-US >[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >];</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >newSquare[</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >] = i + </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >newSquare[</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >] = j;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >possibleSquares.addElement(newSquare);</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >else if</SPAN></B><SPAN lang=EN-US >(mySquares[i + </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >][j] == </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >links[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >*linkCount] = i + </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >links[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >*linkCount + </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >] = j;</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >linkCount++;</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(linkCount > </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >) {</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >linkChoice = getRandomInt(linkCount);</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >linkX = links[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >*linkChoice]; </SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >linkY = links[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >*linkChoice + </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >];</SPAN><SPAN lang=EN-US >mySquares[linkX][linkY] = </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >;</SPAN><B><SPAN lang=EN-US >int</SPAN></B><SPAN lang=EN-US >[] removeSquare = </SPAN><B><SPAN lang=EN-US >new int</SPAN></B><SPAN lang=EN-US >[</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >];</SPAN><SPAN lang=EN-US >removeSquare[</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >] = linkX;</SPAN><SPAN lang=EN-US >removeSquare[</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >] = linkY;</SPAN><SPAN lang=EN-US >possibleSquares.removeElement(removeSquare);</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public int </SPAN></B><SPAN lang=EN-US >getRandomInt(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >upper) {</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >retVal = myRandom.nextInt() % upper;</SPAN><B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(retVal < </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >) {</SPAN><SPAN lang=EN-US >retVal += upper;</SPAN><SPAN lang=EN-US >}</SPAN><B><SPAN lang=EN-US >return</SPAN></B><SPAN lang=EN-US >(retVal);</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US >}</SPAN>
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo