?? mazedraw.java
字號(hào):
package maze;import java.awt.*;import javax.swing.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: </p> * @author unascribed * @version 1.0 */public class MazeDraw extends JLabel implements Drawer { private Gen_Solve generator; public void setGenerator(Gen_Solve generator) { this.generator = generator; } public Gen_Solve getGenerator() { return generator; } public void refreshMaze() { repaint(); } public void paint(Graphics g) { if (generator == null) return; int w = getWidth() - 10; int h = getHeight() - 10; int len; int width = generator.getWidth(); int height = generator.getHeight(); if ((float) w / h < (float) width / height) { len = w / width; } else { len = h / height; } w = len * width; h = len * height; int left = (getWidth() - w) / 2; int top = (getHeight() - h) / 2; g.setColor(Color.white); g.fillRect(left, top, w, h); g.setColor(Color.black); for (int i = 0; i <= width; i++) { int x = left + i * len; g.fillRect(x, top, 1, h); } for (int i = 0; i <= height; i++) { int y = top + i * len; g.fillRect(left, y, w, 1); } for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { int data = generator.getData(i, j); int bLeft = left + i * len; int bTop = top + j * len; if ((data & 0x0F) > 0) { g.setColor(Color.white); g.fillRect(bLeft + 1, bTop + 1, len - 1, len - 1); if ((data & Gen_Solve.NORTH) > 0) { g.fillRect(bLeft + 1, bTop, len - 1, 1); } if ((data & Gen_Solve.WEST) > 0) { g.fillRect(bLeft, bTop + 1, 1, len - 1); } if ((data & Gen_Solve.SOUTH) > 0) { g.fillRect(bLeft + 1, bTop + len, len - 1, 1); } if ((data & Gen_Solve.EAST) > 0){ g.fillRect(bLeft + len, bTop + 1, 1, len -1); } } if ((data & Gen_Solve.SOLVE) > 0 || (data & Gen_Solve.WRONG) > 0) { int m = len / 2; int n = m / 2; int t = len - m - n; int r = t + n; if ((data & Gen_Solve.WRONG) > 0 && (data & Gen_Solve.SOLVE) == 0) { if(Gen_Solve.istrack == 1){ g.setColor(Color.gray); } else{ g.setColor(Color.white); } } else { g.setColor(Color.green); } g.fillRect(bLeft + n, bTop + n, m, m); if(Gen_Solve.istrack == 1){ g.setColor(Color.gray); } else{ g.setColor(Color.white); } if ((data & Gen_Solve.W_NORTH) > 0) { g.fillRect(bLeft + n, bTop - t, m, r); } if ((data & Gen_Solve.W_WEST) > 0) { g.fillRect(bLeft - t, bTop + n, r, m); } if ((data & Gen_Solve.W_SOUTH) > 0) { g.fillRect(bLeft + n, bTop + m + n, m, r); } if ((data & Gen_Solve.W_EAST) > 0) { g.fillRect(bLeft + m + n, bTop + n, r, m); } g.setColor(Color.green); if ((data & Gen_Solve.S_NORTH) > 0) { g.fillRect(bLeft + n, bTop - t, m, r); } if ((data & Gen_Solve.S_WEST) > 0) { g.fillRect(bLeft - t, bTop + n, r, m); } if ((data & Gen_Solve.S_SOUTH) > 0) { g.fillRect(bLeft + n, bTop + m + n, m, r); } if ((data & Gen_Solve.S_EAST) > 0) { g.fillRect(bLeft + m + n, bTop + n, r, m); } } } } if (generator.getStart() >= 0 ) { int x = generator.getStart() % generator.getWidth(); int y = generator.getStart() / generator.getWidth(); g.setColor(Color.cyan); g.fillRect(left + x * len + 1, top + y * len + 1, len - 1, len - 1); x = generator.getEnd() % generator.getWidth(); y = generator.getEnd() / generator.getWidth(); g.setColor(Color.red); g.fillRect(left + x * len + 1, top + y * len + 1, len - 1, len - 1); } }}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -