คือ ผมเขียน โปรแกรมหมากฮอท(ฝรั่ง แบบไทยยังไม่ไหว ยาก) แล้ว แต่ตัวเอง ดันเล่นไม่เป็น ไม่ค่อยเก่ง อยากจะให้ช่วยลองว่า มันยังมี อะไรผิดหรือเปล่าครับ
คือ บอกก่อนว่า เป็นแบบต้องเล่นกันเอง เท่านั้นอะครับ เพราะผม ยังไม่เซียนเรื่องหมากฮอท เลยไม่รู้ จะให้ โปรแกรม ตั้งการเดิน ไว้ยังไง แล้วมัน ก็ยากมาก ๆ ด้วย
เล่นกับ mouse นะครับ แต่จะมีบอก turn ให้ ว่า turn ไหน สีไหนเดิน น่ะครับ
import java.awt.Dimension; import java.awt.GridLayout; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Testpaint6 extends JPanel implements ActionListener, MouseListener { static int x = 50, y = 91; static int x1 = 100, y1 = 91; static int x2 = 75, y2 = 116; static int x3 = 125, y3 = 116; static int x4 = 150, y4 = 91; static int x5 = 200, y5 = 91; static int x6 = 175, y6 = 116; static int x7 = 225, y7 = 116; static int ox = 75, oy = 266; static int ox1 = 125, oy1 = 266; static int ox2 = 50, oy2 = 241; static int ox3 = 100, oy3 = 241; static int ox4 = 175, oy4 = 266; static int ox5 = 225, oy5 = 266; static int ox6 = 150, oy6 = 241; static int ox7 = 200, oy7 = 241; static int bx = 23, by = 65; static int subDivide = 25; static int subDivideSize = 9; String selectMark; String direction; String run; String hint; JButton leftUp, rightUp, leftDown, rightDown; static boolean start; static MyPoint mark, mark1; static MyPoint mark2, mark3, mark4, mark5, mark6, mark7; static MyPoint opp, opp1; static MyPoint opp2, opp3, opp4, opp5, opp6, opp7; static Rectangle r; static Rectangle backr; static int pad; String frontCantMove; String out; String friend; boolean turnMark, turnOpp; boolean canSelect; boolean reachHotmark, reachHotmark1, reachHotopp, reachHotopp1; boolean reachHotmark2, reachHotmark3, reachHotmark4, reachHotmark5; boolean reachHotmark6, reachHotmark7, reachHotopp2, reachHotopp3; boolean reachHotopp4, reachHotopp5, reachHotopp6, reachHotopp7; String tMark, tOpp; static int beep; String back; static MyPoint[] ma, op; static int countFront, countBack; static List<MyPoint> temFront, temBack; static List<Rectangle> lrFront, lrBack; String mustGo, mustGo1, mustGo2; String mustGo3, mustGo4, mustGo5, mustGo6, mustGo7, mustGo8; String mustGonReach; static int cFrontn, cBackn; String pass; static List<Rectangle> goFront, goFront1; static List<Rectangle> goFront2, goFront3, goFront4, goFront5, goFront6, goFront7; boolean after; static int allX, allY; static int allrX, allrY; static int allXMove, allYMove; static int XPlus, XMinus, YPlus, YMinus; String eatedMark; JLabel turn; public Testpaint6() { setLayout(new GridLayout(6, 1)); setBackground(Color.WHITE); setPreferredSize(getPreferredSize()); JPanel panel = new JPanel(); leftUp = new JButton("leftUp"); leftUp.setActionCommand("leftUp"); leftUp.addActionListener(this); rightUp = new JButton("rightUp"); rightUp.setActionCommand("rightUp"); rightUp.addActionListener(this); leftDown = new JButton("leftDown"); leftDown.setActionCommand("leftDown"); leftDown.addActionListener(this); rightDown = new JButton("rightDown"); rightDown.setActionCommand("rightDown"); rightDown.addActionListener(this); turn = new JLabel("Turn of : Black"); turn.setAlignmentX(JPanel.LEFT_ALIGNMENT); panel.add(leftUp); panel.add(leftDown); panel.add(rightUp); panel.add(rightDown); panel.add(turn); add(panel); addMouseListener(this); start = true; mark = new MyPoint("mark"); mark.setLocation(x, y); mark1 = new MyPoint("mark1"); mark1.setLocation(x1, y1); opp = new MyPoint("opp"); opp.setLocation(ox, oy); opp1 = new MyPoint("opp1"); opp1.setLocation(ox1, oy1); mark2 = new MyPoint("mark2"); mark2.setLocation(x2, y2); mark3 = new MyPoint("mark3"); mark3.setLocation(x3, y3); mark4 = new MyPoint("mark4"); mark4.setLocation(x4, y4); mark5 = new MyPoint("mark5"); mark5.setLocation(x5, y5); mark6 = new MyPoint("mark6"); mark6.setLocation(x6, y6); mark7 = new MyPoint("mark7"); mark7.setLocation(x7, y7); opp2 = new MyPoint("opp2"); opp2.setLocation(ox2, oy2); opp3 = new MyPoint("opp3"); opp3.setLocation(ox3, oy3); opp4 = new MyPoint("opp4"); opp4.setLocation(ox4, oy4); opp5 = new MyPoint("opp5"); opp5.setLocation(ox5, oy5); opp6 = new MyPoint("opp6"); opp6.setLocation(ox6, oy6); opp7 = new MyPoint("opp7"); opp7.setLocation(ox7, oy7); frontCantMove = "free"; friend = "free"; turnMark = true; turnOpp = false; reachHotmark = false; reachHotmark1 = false; reachHotopp = false; reachHotopp1 = false; reachHotmark2 = false; reachHotmark3 = false; reachHotmark4 = false; reachHotmark5 = false; reachHotmark6 = false; reachHotmark7 = false; reachHotopp2 = false; reachHotopp3 = false; reachHotopp4 = false; reachHotopp5 = false; reachHotopp6 = false; reachHotopp7 = false; back = "free"; beep = 1; ma = new MyPoint[8]; ma[0] = mark; ma[1] = mark1; ma[2] = mark2; ma[3] = mark3; ma[4] = mark4; ma[5] = mark5; ma[6] = mark6; ma[7] = mark7; op = new MyPoint[8]; op[0] = opp; op[1] = opp1; op[2] = opp2; op[3] = opp3; op[4] = opp4; op[5] = opp5; op[6] = opp6; op[7] = opp7; mustGo = "free"; mustGo1 = "free"; mustGo2 = "free"; mustGo3 = "free"; mustGo4 = "free"; mustGo5 = "free"; mustGo6 = "free"; mustGo7 = "free"; mustGo8 = "free"; mustGonReach = "free"; temFront = new ArrayList<MyPoint>(); temBack = new ArrayList<MyPoint>(); lrFront = new ArrayList<Rectangle>(); lrBack = new ArrayList<Rectangle>(); goFront = new ArrayList<Rectangle>(); goFront1 = new ArrayList<Rectangle>(); goFront2 = new ArrayList<Rectangle>(); goFront3 = new ArrayList<Rectangle>(); goFront4 = new ArrayList<Rectangle>(); goFront5 = new ArrayList<Rectangle>(); goFront6 = new ArrayList<Rectangle>(); goFront7 = new ArrayList<Rectangle>(); selectMark = "mark"; after = false; pass = ""; eatedMark = "mark"; } public void paint(Graphics g) { super.paint(g); Graphics2D g2 = (Graphics2D) g; g2.setColor(Color.BLACK); bx = 23; by = 65; for (int i = 0; i < subDivideSize; i++) { bx += subDivide; g2.drawLine(bx, 89, bx, 289); } for (int i = 0; i < subDivideSize; i++) { by += subDivide; g2.drawLine(49, by, 249, by); } x = (int) mark.getX(); y = (int) mark.getY(); x1 = (int) mark1.getX(); y1 = (int) mark1.getY(); ox = (int) opp.getX(); oy = (int) opp.getY(); ox1 = (int) opp1.getX(); oy1 = (int) opp1.getY(); x2 = (int) mark2.getX(); y2 = (int) mark2.getY(); x3 = (int) mark3.getX(); y3 = (int) mark3.getY(); x4 = (int) mark4.getX(); y4 = (int) mark4.getY(); x5 = (int) mark5.getX(); y5 = (int) mark5.getY(); x6 = (int) mark6.getX(); y6 = (int) mark6.getY(); x7 = (int) mark7.getX(); y7 = (int) mark7.getY(); ox2 = (int) opp2.getX(); oy2 = (int) opp2.getY(); ox3 = (int) opp3.getX(); oy3 = (int) opp3.getY(); ox4 = (int) opp4.getX(); oy4 = (int) opp4.getY(); ox5 = (int) opp5.getX(); oy5 = (int) opp5.getY(); ox6 = (int) opp6.getX(); oy6 = (int) opp6.getY(); ox7 = (int) opp7.getX(); oy7 = (int) opp7.getY(); g2.setColor(Color.BLACK); g2.fillOval(x, y, 22, 22); g2.fillOval(x1, y1, 22, 22); g2.fillOval(x2, y2, 22, 22); g2.fillOval(x3, y3, 22, 22); g2.fillOval(x4, y4, 22, 22); g2.fillOval(x5, y5, 22, 22); g2.fillOval(x6, y6, 22, 22); g2.fillOval(x7, y7, 22, 22); g2.setColor(Color.ORANGE); g2.fillOval(ox, oy, 22, 22); g2.fillOval(ox1, oy1, 22, 22); g2.fillOval(ox2, oy2, 22, 22); g2.fillOval(ox3, oy3, 22, 22); g2.fillOval(ox4, oy4, 22, 22); g2.fillOval(ox5, oy5, 22, 22); g2.fillOval(ox6, oy6, 22, 22); g2.fillOval(ox7, oy7, 22, 22); g2.setColor(Color.RED); if(selectMark.equals("mark")){ g2.drawOval(x, y, 22, 22); }else if(selectMark.equals("mark1")){ g2.drawOval(x1, y1, 22, 22); }else if(selectMark.equals("mark2")){ g2.drawOval(x2, y2, 22, 22); }else if(selectMark.equals("mark3")){ g2.drawOval(x3, y3, 22, 22); }else if(selectMark.equals("mark4")){ g2.drawOval(x4, y4, 22, 22); }else if(selectMark.equals("mark5")){ g2.drawOval(x5, y5, 22, 22); }else if(selectMark.equals("mark6")){ g2.drawOval(x6, y6, 22, 22); }else if(selectMark.equals("mark7")){ g2.drawOval(x7, y7, 22, 22); }else if(selectMark.equals("opp")){ g2.drawOval(ox, oy, 22, 22); }else if(selectMark.equals("opp1")){ g2.drawOval(ox1, oy1, 22, 22); }else if(selectMark.equals("opp2")){ g2.drawOval(ox2, oy2, 22, 22); }else if(selectMark.equals("opp3")){ g2.drawOval(ox3, oy3, 22, 22); }else if(selectMark.equals("opp4")){ g2.drawOval(ox4, oy4, 22, 22); }else if(selectMark.equals("opp5")){ g2.drawOval(ox5, oy5, 22, 22); }else if(selectMark.equals("opp6")){ g2.drawOval(ox6, oy6, 22, 22); }else if(selectMark.equals("opp7")){ g2.drawOval(ox7, oy7, 22, 22); } } public void actionPerformed(ActionEvent e) { String select = e.getActionCommand(); start = false; if (select.equals("leftUp")) { direction = "left"; run = "up"; hint = "leftUp"; } else if (select.equals("rightUp")) { direction = "right"; run = "up"; hint = "rightUp"; } else if (select.equals("leftDown")) { direction = "left"; run = "down"; hint = "leftDown"; } else if (select.equals("rightDown")) { direction = "right"; run = "down"; hint = "rightDown"; } moveTo(); repaint(); System.out.println(select + " " + x + " " + y + " " + x1 + " " + y1 + " " + start + " " + direction + " " + run + " " + selectMark + hint); } public static void main(String[] args) { JFrame f = new JFrame("paint demo"); Testpaint6 t = new Testpaint6(); f.setContentPane(t); t.setOpaque(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(400, 350); f.setVisible(true); } public boolean mustEat() { boolean bait = false; pass = ""; if (turnMark) { if (reachHotmark) { scanAll(mark); mustGo1 = mustGo; if (mustGo1.equals("try")) { pass = "mark"; } } else { scanAllnReachDown(mark); mustGo1 = mustGonReach; if (mustGo1.equals("try")) { pass = "mark"; } } if (reachHotmark1) { scanAll(mark1); mustGo2 = mustGo; if (mustGo2.equals("try")) { pass += "mark1"; } } else { scanAllnReachDown(mark1); mustGo2 = mustGonReach; if (mustGo2.equals("try")) { pass += "mark1"; } } if (reachHotmark2) { scanAll(mark2); mustGo3 = mustGo; if (mustGo3.equals("try")) { pass += "mark2"; } } else { scanAllnReachDown(mark2); mustGo3 = mustGonReach; if (mustGo3.equals("try")) { pass += "mark2"; } } if (reachHotmark3) { scanAll(mark3); mustGo4 = mustGo; if (mustGo4.equals("try")) { pass += "mark3"; } } else { scanAllnReachDown(mark3); mustGo4 = mustGonReach; if (mustGo4.equals("try")) { pass += "mark3"; } } if (reachHotmark4) { scanAll(mark4); mustGo5 = mustGo; if (mustGo5.equals("try")) { pass += "mark4"; } } else { scanAllnReachDown(mark4); mustGo5 = mustGonReach; if (mustGo5.equals("try")) { pass += "mark4"; } } if (reachHotmark5) { scanAll(mark5); mustGo6 = mustGo; if (mustGo6.equals("try")) { pass += "mark5"; } } else { scanAllnReachDown(mark5); mustGo6 = mustGonReach; if (mustGo6.equals("try")) { pass += "mark5"; } } if (reachHotmark6) { scanAll(mark6); mustGo7 = mustGo; if (mustGo7.equals("try")) { pass += "mark6"; } } else { scanAllnReachDown(mark6); mustGo7 = mustGonReach; if (mustGo7.equals("try")) { pass += "mark6"; } } if (reachHotmark7) { scanAll(mark7); mustGo8 = mustGo; if (mustGo8.equals("try")) { pass += "mark7"; } } else { scanAllnReachDown(mark7); mustGo8 = mustGonReach; if (mustGo8.equals("try")) { pass += "mark7"; } } } else if (turnOpp) { if (reachHotopp) { scanAll(opp); mustGo1 = mustGo; if (mustGo1.equals("try")) { pass = "opp"; } } else { scanAllnReachUp(opp); mustGo1 = mustGonReach; if (mustGo1.equals("try")) { pass = "opp"; } } if (reachHotopp1) { scanAll(opp1); mustGo2 = mustGo; if (mustGo2.equals("try")) { pass += "opp1"; } } else { scanAllnReachUp(opp1); mustGo2 = mustGonReach; if (mustGo2.equals("try")) { pass += "opp1"; } } if (reachHotopp2) { scanAll(opp2); mustGo3 = mustGo; if (mustGo3.equals("try")) { pass += "opp2"; } } else { scanAllnReachUp(opp2); mustGo3 = mustGonReach; if (mustGo3.equals("try")) { pass += "opp2"; } } if (reachHotopp3) { scanAll(opp3); mustGo4 = mustGo; if (mustGo4.equals("try")) { pass += "opp3"; } } else { scanAllnReachUp(opp3); mustGo4 = mustGonReach; if (mustGo4.equals("try")) { pass += "opp3"; } } if (reachHotopp4) { scanAll(opp4); mustGo5 = mustGo; if (mustGo5.equals("try")) { pass += "opp4"; } } else { scanAllnReachUp(opp4); mustGo5 = mustGonReach; if (mustGo5.equals("try")) { pass += "opp4"; } } if (reachHotopp5) { scanAll(opp5); mustGo6 = mustGo; if (mustGo6.equals("try")) { pass += "opp5"; } } else { scanAllnReachUp(opp5); mustGo6 = mustGonReach; if (mustGo6.equals("try")) { pass += "opp5"; } } if (reachHotopp6) { scanAll(opp6); mustGo7 = mustGo; if (mustGo7.equals("try")) { pass += "opp6"; } } else { scanAllnReachUp(opp6); mustGo7 = mustGonReach; if (mustGo7.equals("try")) { pass += "opp6"; } } if (reachHotopp7) { scanAll(opp7); mustGo8 = mustGo; if (mustGo8.equals("try")) { pass += "opp7"; } } else { scanAllnReachUp(opp7); mustGo8 = mustGonReach; if (mustGo8.equals("try")) { pass += "opp7"; } } } if (pass.contains("mark") || pass.contains("mark1") || pass.contains("mark2") || pass.contains("mark3") || pass.contains("mark4") || pass.contains("mark5") || pass.contains("mark6") || pass.contains("mark7")) { bait = true; } else if (pass.contains("opp") || pass.contains("opp1") || pass.contains("opp2") || pass.contains("opp3") || pass.contains("opp4") || pass.contains("opp5") || pass.contains("opp6") || pass.contains("opp7")) { bait = true; } System.out.println(mustGo8); mustGonReach = "free"; mustGo = "free"; mustGo1 = "free"; mustGo2 = "free"; mustGo3 = "free"; mustGo4 = "free"; mustGo5 = "free"; mustGo6 = "free"; mustGo7 = "free"; mustGo8 = "free"; return bait; } public void addRect(MyPoint p, String n, Rectangle r) { if (n.equals("try")) { if (p.toString().equals("mark") || p.toString().equals("opp")) { goFront.add(r); } else if (p.toString().equals("mark1") || p.toString().equals("opp1")) { goFront1.add(r); } else if (p.toString().equals("mark2") || p.toString().equals("opp2")) { goFront2.add(r); } else if (p.toString().equals("mark3") || p.toString().equals("opp3")) { goFront3.add(r); } else if (p.toString().equals("mark4") || p.toString().equals("opp4")) { goFront4.add(r); } else if (p.toString().equals("mark5") || p.toString().equals("opp5")) { goFront5.add(r); } else if (p.toString().equals("mark6") || p.toString().equals("opp6")) { goFront6.add(r); } else if (p.toString().equals("mark7") || p.toString().equals("opp7")) { goFront7.add(r); } } else { return; } } public void scanAll(MyPoint p) { Rectangle r1 = new Rectangle(), r2 = new Rectangle(), r3 = new Rectangle(), r4 = new Rectangle(); Rectangle br1 = new Rectangle(), br2 = new Rectangle(), br3 = new Rectangle(); String tem1, tem2, tem3; scanFront(p); scanBack(p); mustGo = "free"; if (countBack == 4 || countFront == 0) { return; } if (countFront > 0) { int size = lrFront.size(); int bsize = lrBack.size(); if (size == 3) { r1 = lrFront.get(0); r2 = lrFront.get(1); r3 = lrFront.get(2); } else if (size == 2) { r1 = lrFront.get(0); r2 = lrFront.get(1); } else if (size == 1) { r1 = lrFront.get(0); } if (bsize == 3) { br1 = lrBack.get(0); br2 = lrBack.get(1); br3 = lrBack.get(2); } else if (bsize == 2) { br1 = lrBack.get(0); br2 = lrBack.get(1); } else if (bsize == 1) { br1 = lrBack.get(0); } if (size == 3 && bsize == 3) { boolean b1 = linear(p, r1, br1); boolean b2 = linear(p, r1, br2); boolean b3 = linear(p, r1, br3); tem1 = mustGo(b1, b2, b3); addRect(p, tem1, r1); boolean b4 = linear(p, r2, br1); boolean b5 = linear(p, r2, br2); boolean b6 = linear(p, r2, br3); tem2 = mustGo(b4, b5, b6); addRect(p, tem2, r2); boolean b7 = linear(p, r3, br1); boolean b8 = linear(p, r3, br2); boolean b9 = linear(p, r3, br3); tem3 = mustGo(b7, b8, b9); addRect(p, tem3, r3); if (tem1.equals("try") || tem2.equals("try") || tem3.equals("try")) { mustGo = "try"; } } else if (size > bsize) { mustGo = "try"; SupportScan6 ssc = new SupportScan6(this, size, bsize, lrFront, lrBack, r1, r2, r3, r4, br1, br2, br3, p); ssc.getFromList(); } else if (size == 2 && bsize == 3) { boolean b1 = linear(p, r1, br1); boolean b2 = linear(p, r1, br2); boolean b3 = linear(p, r1, br3); tem1 = mustGo(b1, b2, b3); addRect(p, tem1, r1); boolean b4 = linear(p, r2, br1); boolean b5 = linear(p, r2, br2); boolean b6 = linear(p, r2, br3); tem2 = mustGo(b4, b5, b6); addRect(p, tem2, r2); if (tem1.equals("try") || tem2.equals("try")) { mustGo = "try"; } } else if (size == 2 && bsize == 2) { boolean b1 = linear(p, r1, br1); boolean b2 = linear(p, r1, br2); tem1 = mustGo(b1, b2); addRect(p, tem1, r1); boolean b4 = linear(p, r2, br1); boolean b5 = linear(p, r2, br2); tem2 = mustGo(b4, b5); addRect(p, tem2, r2); if (tem1.equals("try") || tem2.equals("try")) { mustGo = "try"; } } else if (size == 1 && bsize == 2) { boolean b1 = linear(p, r1, br1); boolean b2 = linear(p, r1, br2); mustGo = mustGo(b1, b2); addRect(p, mustGo, r1); } else if (size == 1 && bsize == 1) { boolean b1 = linear(p, r1, br1); mustGo = b1 ? "free" : "try"; addRect(p, mustGo, r1); } else if (size == 1 && bsize == 3) { boolean b1 = linear(p, r1, br1); boolean b2 = linear(p, r1, br2); boolean b3 = linear(p, r1, br3); mustGo = mustGo(b1, b2, b3); addRect(p, mustGo, r1); } } } public void scanAllnReachUp(MyPoint p) { String tem1, tem2; Rectangle r1 = new Rectangle(), r2 = new Rectangle(); Rectangle br1 = new Rectangle(); Dimension di = new Dimension(22, 22); scanFrontnReachUp(p); scanBacknReachUp(p); mustGonReach = "free"; if (cBackn == 2 || cFrontn == 0) { return; } if (cFrontn > 0) { int size = temFront.size(); int bsize = temBack.size(); if (size == 1) { r1 = new Rectangle(temFront.get(0), di); } if (bsize == 1) { br1 = new Rectangle(temBack.get(0), di); } if (size > bsize) { mustGonReach = "try"; if (size == 2 && bsize == 1) { r1 = new Rectangle(temFront.get(0), di); r2 = new Rectangle(temFront.get(1), di); br1 = new Rectangle(temBack.get(0), di); boolean b1 = linear(p, r1, br1); boolean b2 = linear(p, r2, br1); tem1 = b1 ? "free" : "try"; addRect(p, tem1, r1); tem2 = b2 ? "free" : "try"; addRect(p, tem2, r2); } else if (size == 1 && bsize == 0) { r1 = new Rectangle(temFront.get(0), di); tem1 = "try"; addRect(p, tem1, r1); } } else if (size == 1 && bsize == 1) { boolean b1 = linear(p, r1, br1); mustGonReach = b1 ? "free" : "try"; addRect(p, mustGonReach, r1); } } } public void scanAllnReachDown(MyPoint p) { String tem1, tem2; Rectangle r1 = new Rectangle(), r2 = new Rectangle(); Rectangle br1 = new Rectangle(); Dimension di = new Dimension(22, 22); scanFrontnReachDown(p); scanBacknReachDown(p); mustGonReach = "free"; if (cBackn == 2 || cFrontn == 0) { return; } if (cFrontn > 0) { int size = temFront.size(); int bsize = temBack.size(); if (size == 1) { r1 = new Rectangle(temFront.get(0), di); } if (bsize == 1) { br1 = new Rectangle(temBack.get(0), di); } if (size > bsize) { mustGonReach = "try"; if (size == 2 && bsize == 1) { r1 = new Rectangle(temFront.get(0), di); r2 = new Rectangle(temFront.get(1), di); br1 = new Rectangle(temBack.get(0), di); boolean b1 = linear(p, r1, br1); boolean b2 = linear(p, r2, br1); tem1 = b1 ? "free" : "try"; addRect(p, tem1, r1); tem2 = b2 ? "free" : "try"; addRect(p, tem2, r2); } else if (size == 1 && bsize == 0) { r1 = new Rectangle(temFront.get(0), di); tem1 = "try"; addRect(p, tem1, r1); } } else if (size == 1 && bsize == 1) { System.out.println("i here"); boolean b1 = linear(p, r1, br1); mustGonReach = b1 ? "free" : "try"; addRect(p, mustGonReach, r1); } } } public String mustGo(boolean b1, boolean b2) { String temp; if (b1 || b2) { temp = "free"; } else { temp = "try"; } return temp; } public String mustGo(boolean b1, boolean b2, boolean b3) { String temp; if (b1 || b2 || b3) { temp = "free"; } else { temp = "try"; } return temp; } public boolean linear(MyPoint p, Rectangle r, Rectangle r1) { int temX = (int) p.getX(); int temY = (int) p.getY(); boolean line = false; if ((r.getX() == temX + 25) && (r.getY() == temY + 25) && (r1.getX() == temX + 50) && (r1.getY() == temY + 50)) { line = true; } else if ((r.getX() == temX + 25) && (r.getY() == temY - 25) && (r1.getX() == temX + 50) && (r1.getY() == temY - 50)) { line = true; } else if ((r.getX() == temX - 25) && (r.getY() == temY + 25) && (r1.getX() == temX - 50) && (r1.getY() == temY + 50)) { line = true; } else if ((r.getX() == temX - 25) && (r.getY() == temY - 25) && (r1.getX() == temX - 50) && (r1.getY() == temY - 50)) { line = true; } return line; } public void scanFront(MyPoint p) { int temX = (int) p.getX(); int temY = (int) p.getY(); countFront = 0; lrFront = new ArrayList<Rectangle>(); lrFront.clear(); Rectangle r1 = new Rectangle(temX + 25, temY + 25, 22, 22); Rectangle r2 = new Rectangle(temX + 25, temY - 25, 22, 22); Rectangle r3 = new Rectangle(temX - 25, temY + 25, 22, 22); Rectangle r4 = new Rectangle(temX - 25, temY - 25, 22, 22); Rectangle[] rs = new Rectangle[4]; rs[0] = r1; rs[1] = r2; rs[2] = r3; rs[3] = r4; if (p.toString().startsWith("m")) { for (int j = 0; j < rs.length; j++) { for (int i = 0; i < op.length; i++) { if (rs[j].contains(op[i])) { lrFront.add(rs[j]); countFront += 1; temFront.add(op[i]); } } } } else { for (int j = 0; j < rs.length; j++) { for (int i = 0; i < ma.length; i++) { if (rs[j].contains(ma[i])) { lrFront.add(rs[j]); countFront += 1; temFront.add(ma[i]); } } } } } public void scanFrontnReachUp(MyPoint p) { int temX = (int) p.getX(); int temY = (int) p.getY(); cFrontn = 0; temFront = new ArrayList<MyPoint>(); temFront.clear(); Rectangle r1 = new Rectangle(temX + 25, temY - 25, 22, 22); Rectangle r3 = new Rectangle(temX - 25, temY - 25, 22, 22); Rectangle[] rs = new Rectangle[2]; rs[0] = r1; rs[1] = r3; for (int j = 0; j < rs.length; j++) { for (int i = 0; i < ma.length; i++) { if (rs[j].contains(ma[i])) { cFrontn += 1; temFront.add(ma[i]); } } } } public void scanFrontnReachDown(MyPoint p) { int temX = (int) p.getX(); int temY = (int) p.getY(); cFrontn = 0; temFront = new ArrayList<MyPoint>(); temFront.clear(); Rectangle r1 = new Rectangle(temX + 25, temY + 25, 22, 22); Rectangle r3 = new Rectangle(temX - 25, temY + 25, 22, 22); Rectangle[] rs = new Rectangle[2]; rs[0] = r1; rs[1] = r3; for (int j = 0; j < rs.length; j++) { for (int i = 0; i < op.length; i++) { if (rs[j].contains(op[i])) { cFrontn += 1; temFront.add(op[i]); } } } } public boolean OutOfBound(Rectangle r) { boolean out = false; int temX = (int) r.getX(); int temY = (int) r.getY(); if (temX < 26 || temX > 249 || temY < 67 || temY > 289) { out = true; } return out; } public void scanBacknReachUp(MyPoint p) { int temX = (int) p.getX(); int temY = (int) p.getY(); cBackn = 0; temBack = new ArrayList<MyPoint>(); temBack.clear(); Rectangle r1 = new Rectangle(temX + 50, temY - 50, 22, 22); Rectangle r3 = new Rectangle(temX - 50, temY - 50, 22, 22); Rectangle[] rs = new Rectangle[2]; rs[0] = r1; rs[1] = r3; for (int j = 0; j < rs.length; j++) { if (OutOfBound(rs[j])) { MyPoint m = new MyPoint(); m.setLocation(rs[j].getX(), rs[j].getY()); cBackn += 1; temBack.add(m); } for (int i = 0; i < op.length; i++) { if (rs[j].contains(op[i])) { cBackn += 1; temBack.add(op[i]); } } for (int i = 0; i < ma.length; i++) { if (rs[j].contains(ma[i])) { cBackn += 1; temBack.add(ma[i]); } } } } public void scanBacknReachDown(MyPoint p) { int temX = (int) p.getX(); int temY = (int) p.getY(); cBackn = 0; temBack = new ArrayList<MyPoint>(); temBack.clear(); Rectangle r1 = new Rectangle(temX + 50, temY + 50, 22, 22); Rectangle r3 = new Rectangle(temX - 50, temY + 50, 22, 22); Rectangle[] rs = new Rectangle[2]; rs[0] = r1; rs[1] = r3; for (int j = 0; j < rs.length; j++) { if (OutOfBound(rs[j])) { MyPoint m = new MyPoint(); m.setLocation(rs[j].getX(), rs[j].getY()); cBackn += 1; temBack.add(m); } for (int i = 0; i < op.length; i++) { if (rs[j].contains(op[i])) { cBackn += 1; temBack.add(op[i]); } } for (int i = 0; i < ma.length; i++) { if (rs[j].contains(ma[i])) { cBackn += 1; temBack.add(ma[i]); } } } } public void scanBack(MyPoint p) { int temX = (int) p.getX(); int temY = (int) p.getY(); countBack = 0; lrBack = new ArrayList<>(); lrBack.clear(); Rectangle r1 = new Rectangle(temX + 50, temY + 50, 22, 22); Rectangle r2 = new Rectangle(temX + 50, temY - 50, 22, 22); Rectangle r3 = new Rectangle(temX - 50, temY + 50, 22, 22); Rectangle r4 = new Rectangle(temX - 50, temY - 50, 22, 22); Rectangle[] rs = new Rectangle[4]; rs[0] = r1; rs[1] = r2; rs[2] = r3; rs[3] = r4; for (int j = 0; j < rs.length; j++) { if (OutOfBound(rs[j])) { countBack += 1; lrBack.add(rs[j]); } for (int i = 0; i < op.length; i++) { if (rs[j].contains(op[i])) { lrBack.add(rs[j]); countBack += 1; } } for (int i = 0; i < ma.length; i++) { if (rs[j].contains(ma[i])) { lrBack.add(rs[j]); countBack += 1; } } } } public boolean testFriend(Rectangle r, String mark0) { boolean obstruct = false; if (mark0.equals("mark")) { if (r.contains(mark1) || r.contains(mark2) || r.contains(mark3) || r.contains(mark4) || r.contains(mark5) || r.contains(mark6) || r.contains(mark7)) { obstruct = true; } } else if (mark0.equals("mark1")) { if (r.contains(mark) || r.contains(mark2) || r.contains(mark3) || r.contains(mark4) || r.contains(mark5) || r.contains(mark6) || r.contains(mark7)) { obstruct = true; } } else if (mark0.equals("mark2")) { if (r.contains(mark) || r.contains(mark1) || r.contains(mark3) || r.contains(mark4) || r.contains(mark5) || r.contains(mark6) || r.contains(mark7)) { obstruct = true; } } else if (mark0.equals("mark3")) { if (r.contains(mark) || r.contains(mark1) || r.contains(mark2) || r.contains(mark4) || r.contains(mark5) || r.contains(mark6) || r.contains(mark7)) { obstruct = true; } } else if (mark0.equals("mark4")) { if (r.contains(mark) || r.contains(mark1) || r.contains(mark2) || r.contains(mark3) || r.contains(mark5) || r.contains(mark6) || r.contains(mark7)) { obstruct = true; } } else if (mark0.equals("mark5")) { if (r.contains(mark) || r.contains(mark1) || r.contains(mark2) || r.contains(mark3) || r.contains(mark4) || r.contains(mark6) || r.contains(mark7)) { obstruct = true; } } else if (mark0.equals("mark6")) { if (r.contains(mark) || r.contains(mark1) || r.contains(mark2) || r.contains(mark3) || r.contains(mark4) || r.contains(mark5) || r.contains(mark7)) { obstruct = true; } } else if (mark0.equals("mark7")) { if (r.contains(mark) || r.contains(mark1) || r.contains(mark2) || r.contains(mark3) || r.contains(mark4) || r.contains(mark5) || r.contains(mark6)) { obstruct = true; } } else if (mark0.equals("opp")) { if (r.contains(opp1) || r.contains(opp2) || r.contains(opp3) || r.contains(opp4) || r.contains(opp5) || r.contains(opp6) || r.contains(opp7)) { obstruct = true; } } else if (mark0.equals("opp1")) { if (r.contains(opp) || r.contains(opp2) || r.contains(opp3) || r.contains(opp4) || r.contains(opp5) || r.contains(opp6) || r.contains(opp7)) { obstruct = true; } } else if (mark0.equals("opp2")) { if (r.contains(opp) || r.contains(opp1) || r.contains(opp3) || r.contains(opp4) || r.contains(opp5) || r.contains(opp6) || r.contains(opp7)) { obstruct = true; } } else if (mark0.equals("opp3")) { if (r.contains(opp) || r.contains(opp1) || r.contains(opp2) || r.contains(opp4) || r.contains(opp5) || r.contains(opp6) || r.contains(opp7)) { obstruct = true; } } else if (mark0.equals("opp4")) { if (r.contains(opp) || r.contains(opp1) || r.contains(opp2) || r.contains(opp3) || r.contains(opp5) || r.contains(opp6) || r.contains(opp7)) { obstruct = true; } } else if (mark0.equals("opp5")) { if (r.contains(opp) || r.contains(opp1) || r.contains(opp2) || r.contains(opp3) || r.contains(opp4) || r.contains(opp6) || r.contains(opp7)) { obstruct = true; } } else if (mark0.equals("opp6")) { if (r.contains(opp) || r.contains(opp1) || r.contains(opp2) || r.contains(opp3) || r.contains(opp4) || r.contains(opp5) || r.contains(opp7)) { obstruct = true; } } else if (mark0.equals("opp7")) { if (r.contains(opp) || r.contains(opp1) || r.contains(opp2) || r.contains(opp3) || r.contains(opp4) || r.contains(opp5) || r.contains(opp6)) { obstruct = true; } } return obstruct; } public boolean testFront(Rectangle r, String mark0) { boolean obstruct = false; if ((backr.contains(mark) || backr.contains(mark1) || backr.contains(mark2) || backr.contains(mark3) || backr.contains(mark4) || backr.contains(mark5) || backr.contains(mark6) || backr.contains(mark7) || backr.contains(opp) || backr.contains(opp1) || backr.contains(opp2) || backr.contains(opp3) || backr.contains(opp4) || backr.contains(opp5) || backr.contains(opp6) || backr.contains(opp7)) && (r.contains(mark) || r.contains(mark1) || r.contains(mark) || r.contains(mark1) || r.contains(mark) || r.contains(mark1) || r.contains(mark) || r.contains(mark1) || r.contains(opp) || r.contains(opp1) || r.contains(opp2) || r.contains(opp3) || r.contains(opp4) || r.contains(opp5) || r.contains(opp6) || r .contains(opp7))) { obstruct = false; back = "try"; } else { if (mark0.equals("mark") || mark0.equals("mark1") || mark0.equals("mark2") || mark0.equals("mark3") || mark0.equals("mark4") || mark0.equals("mark5") || mark0.equals("mark6") || mark0.equals("mark7")) { if (r.contains(opp) || r.contains(opp1) || r.contains(opp2) || r.contains(opp3) || r.contains(opp4) || r.contains(opp5) || r.contains(opp6) || r.contains(opp7)) { obstruct = true; if (r.contains(opp)) { out = "opp"; } else if (r.contains(opp1)) { out = "opp1"; } else if (r.contains(opp2)) { out = "opp2"; } else if (r.contains(opp3)) { out = "opp3"; } else if (r.contains(opp4)) { out = "opp4"; } else if (r.contains(opp5)) { out = "opp5"; } else if (r.contains(opp6)) { out = "opp6"; } else if (r.contains(opp7)) { out = "opp7"; } } } else if (mark0.equals("opp") || mark0.equals("opp1") || mark0.equals("opp2") || mark0.equals("opp3") || mark0.equals("opp4") || mark0.equals("opp5") || mark0.equals("opp6") || mark0.equals("opp7")) { if (r.contains(mark) || r.contains(mark1) || r.contains(mark2) || r.contains(mark3) || r.contains(mark4) || r.contains(mark5) || r.contains(mark6) || r.contains(mark7)) { obstruct = true; if (r.contains(mark)) { out = "mark"; } else if (r.contains(mark1)) { out = "mark1"; } else if (r.contains(mark2)) { out = "mark2"; } else if (r.contains(mark3)) { out = "mark3"; } else if (r.contains(mark4)) { out = "mark4"; } else if (r.contains(mark5)) { out = "mark5"; } else if (r.contains(mark6)) { out = "mark6"; } else if (r.contains(mark7)) { out = "mark7"; } } } } return obstruct; } public void moveToXY() { allXMove = getXFromString(); allYMove = getYFromString(); XPlus = allXMove + 25 + pad; XMinus = allXMove - 25 - pad; YPlus = allYMove + 25 + pad; YMinus = allYMove - 25 - pad; } public boolean testMove(String hint) { allXMove = 0; allYMove = 0; XPlus = 0; XMinus = 0; YPlus = 0; YMinus = 0; moveToXY(); if ((XMinus <= 48 || YMinus <= 88) && hint.equals("leftUp")) { return false; } else if ((XPlus > 225 || YMinus <= 88) && hint.equals("rightUp")) { return false; } else if ((YPlus > 266 || XMinus <= 48) && hint.equals("leftDown")) { return false; } else if ((XPlus > 225 || YPlus > 266) && hint.equals("rightDown")) { return false; } else { System.out.println("ok"); return true; } } public void getRAndBackR() { allrX = getXFromString(); allrY = getYFromString(); if (hint.equals("leftDown")) { r = new Rectangle(allrX - 25, allrY + 25, 22, 22); backr = new Rectangle(allrX - 50, allrY + 50, 22, 22); } else if (hint.equals("rightDown")) { r = new Rectangle(allrX + 25, allrY + 25, 22, 22); backr = new Rectangle(allrX + 50, allrY + 50, 22, 22); } else if (hint.equals("rightUp")) { r = new Rectangle(allrX + 25, allrY - 25, 22, 22); backr = new Rectangle(allrX + 50, allrY - 50, 22, 22); } else if (hint.equals("leftUp")) { r = new Rectangle(allrX - 25, allrY - 25, 22, 22); backr = new Rectangle(allrX - 50, allrY - 50, 22, 22); } } public void moveTo() { if (start) { return; } allrX = 0; allrY = 0; getRAndBackR(); beforeMoveTo(r, selectMark); if (beep > 0) { leftUp.setEnabled(false); rightUp.setEnabled(false); leftDown.setEnabled(false); rightDown.setEnabled(false); } if (tMark.equals("yes") && tOpp.equals("no") && beep > 0) { turnMark = false; turnOpp = true; } else if (tMark.equals("no") && tOpp.equals("yes") && beep > 0) { turnMark = true; turnOpp = false; } if(turnMark){ turn.setText("Turn of : Black"); }else{ turn.setText("Turn of : Orange"); } } public void beforeMoveTo(Rectangle r0, String mark0) { pad = 0; beep = 0; after = false; allX = 0; allY = 0; System.out.print("excel"); int oldX = x; int oldY = y; int oldX1 = x1; int oldY1 = y1; int oldoX = ox; int oldoY = oy; int oldoX1 = ox1; int oldoY1 = oy1; int oldX2 = x2; int oldY2 = y2; int oldX3 = x3; int oldY3 = y3; int oldX4 = x4; int oldY4 = y4; int oldX5 = x5; int oldY5 = y5; int oldX6 = x6; int oldY6 = y6; int oldX7 = x7; int oldY7 = y7; int oldoX2 = ox2; int oldoY2 = oy2; int oldoX3 = ox3; int oldoY3 = oy3; int oldoX4 = ox4; int oldoY4 = oy4; int oldoX5 = ox5; int oldoY5 = oy5; int oldoX6 = ox6; int oldoY6 = oy6; int oldoX7 = ox7; int oldoY7 = oy7; if (testFriend(r0, mark0)) { friend = "try"; } if (testFront(r0, mark0)) { pad = 25; if (selectMark.equals("mark") || selectMark.equals("mark1") || selectMark.equals("mark2") || selectMark.equals("mark3") || selectMark.equals("mark4") || selectMark.equals("mark5") || selectMark.equals("mark6") || selectMark.equals("mark7")) { if (out.equals("opp1")) { ox1 = 10; oy1 = 244; opp1.setLocation(ox1, oy1); } else if (out.equals("opp")) { ox = 10; oy = 270; opp.setLocation(ox, oy); } else if (out.equals("opp2")) { ox2 = 10; oy2 = 220; opp2.setLocation(ox2, oy2); } else if (out.equals("opp3")) { ox3 = 10; oy3 = 196; opp3.setLocation(ox3, oy3); } else if (out.equals("opp4")) { ox4 = 10; oy4 = 172; opp4.setLocation(ox4, oy4); } else if (out.equals("opp5")) { ox5 = 10; oy5 = 148; opp5.setLocation(ox5, oy5); } else if (out.equals("opp6")) { ox6 = 10; oy6 = 124; opp6.setLocation(ox6, oy6); } else if (out.equals("opp7")) { ox7 = 10; oy7 = 100; opp7.setLocation(ox7, oy7); } } else if (selectMark.equals("opp") || selectMark.equals("opp1") || selectMark.equals("opp2") || selectMark.equals("opp3") || selectMark.equals("opp4") || selectMark.equals("opp5") || selectMark.equals("opp6") || selectMark.equals("opp7")) { if (out.equals("mark1")) { x1 = 320; y1 = 244; mark1.setLocation(x1, y1); } else if (out.equals("mark")) { x = 320; y = 270; mark.setLocation(x, y); } else if (out.equals("mark2")) { x2 = 320; y2 = 220; mark2.setLocation(x2, y2); } else if (out.equals("mark3")) { x3 = 320; y3 = 196; mark3.setLocation(x3, y3); } else if (out.equals("mark4")) { x4 = 320; y4 = 172; mark4.setLocation(x4, y4); } else if (out.equals("mark5")) { x5 = 320; y5 = 148; mark5.setLocation(x5, y5); } else if (out.equals("mark6")) { x6 = 320; y6 = 124; mark6.setLocation(x6, y6); } else if (out.equals("mark7")) { x7 = 320; y7 = 100; mark7.setLocation(x7, y7); } } frontCantMove = "try"; } if (testMove(hint) && friend.equals("free") && back.equals("free")) { beep = 1; moveXY(); if (selectMark.equals("mark")) { mark.setLocation(allX, allY); } else if (selectMark.equals("mark1")) { mark1.setLocation(allX, allY); } else if (selectMark.equals("mark2")) { mark2.setLocation(allX, allY); } else if (selectMark.equals("mark3")) { mark3.setLocation(allX, allY); } else if (selectMark.equals("mark4")) { mark4.setLocation(allX, allY); } else if (selectMark.equals("mark5")) { mark5.setLocation(allX, allY); } else if (selectMark.equals("mark6")) { mark6.setLocation(allX, allY); } else if (selectMark.equals("mark7")) { mark7.setLocation(allX, allY); } else if (selectMark.equals("opp")) { opp.setLocation(allX, allY); } else if (selectMark.equals("opp1")) { opp1.setLocation(allX, allY); } else if (selectMark.equals("opp2")) { opp2.setLocation(allX, allY); } else if (selectMark.equals("opp3")) { opp3.setLocation(allX, allY); } else if (selectMark.equals("opp4")) { opp4.setLocation(allX, allY); } else if (selectMark.equals("opp5")) { opp5.setLocation(allX, allY); } else if (selectMark.equals("opp6")) { opp6.setLocation(allX, allY); } else if (selectMark.equals("opp7")) { opp7.setLocation(allX, allY); } if (pad == 25) { after = true; eatedMark = selectMark; } } else { Toolkit.getDefaultToolkit().beep(); if (frontCantMove.equals("try") || friend.equals("try") || back.equals("try")) { x = oldX; y = oldY; x1 = oldX1; y1 = oldY1; x2 = oldX2; y2 = oldY2; x3 = oldX3; y3 = oldY3; x4 = oldX4; y4 = oldY4; x5 = oldX5; y5 = oldY5; x6 = oldX6; y6 = oldY6; x7 = oldX7; y7 = oldY7; ox = oldoX; oy = oldoY; ox1 = oldoX1; oy1 = oldoY1; ox2 = oldoX2; oy2 = oldoY2; ox3 = oldoX3; oy3 = oldoY3; ox4 = oldoX4; oy4 = oldoY4; ox5 = oldoX5; oy5 = oldoY5; ox6 = oldoX6; oy6 = oldoY6; ox7 = oldoX7; oy7 = oldoY7; mark.setLocation(x, y); mark1.setLocation(x1, y1); mark2.setLocation(x2, y2); mark3.setLocation(x3, y3); mark4.setLocation(x4, y4); mark5.setLocation(x5, y5); mark6.setLocation(x6, y6); mark7.setLocation(x7, y7); opp.setLocation(ox, oy); opp1.setLocation(ox1, oy1); opp2.setLocation(ox2, oy2); opp3.setLocation(ox3, oy3); opp4.setLocation(ox4, oy4); opp5.setLocation(ox5, oy5); opp6.setLocation(ox6, oy6); opp7.setLocation(ox7, oy7); frontCantMove = "free"; friend = "free"; back = "free"; } } } public void moveXY() { allX = getXFromString(); allY = getYFromString(); if (direction.equals("left")) { allX -= 25 + pad; } else if (direction.equals("right")) { allX += 25 + pad; } if (run.equals("up")) { allY -= 25 + pad; } else if (run.equals("down")) { allY += 25 + pad; } } public boolean testTurn(Rectangle r) { if (turnMark) { if (r.contains(opp) || r.contains(opp1) || r.contains(opp2) || r.contains(opp3) || r.contains(opp4) || r.contains(opp5) || r.contains(opp6) || r.contains(opp7)) { canSelect = false; } else { canSelect = true; } } else if (turnOpp) { if (r.contains(mark) || r.contains(mark1) || r.contains(mark2) || r.contains(mark3) || r.contains(mark4) || r.contains(mark5) || r.contains(mark6) || r.contains(mark7)) { canSelect = false; } else { canSelect = true; } } return canSelect; } public void testReachHot() { if (mark.getY() == 266) { reachHotmark = true; } if (mark1.getY() == 266) { reachHotmark1 = true; } if (mark2.getY() == 266) { reachHotmark2 = true; } if (mark3.getY() == 266) { reachHotmark3 = true; } if (mark4.getY() == 266) { reachHotmark4 = true; } if (mark5.getY() == 266) { reachHotmark5 = true; } if (mark6.getY() == 266) { reachHotmark6 = true; } if (mark7.getY() == 266) { reachHotmark7 = true; } if (opp.getY() == 91) { reachHotopp = true; } if (opp1.getY() == 91) { reachHotopp1 = true; } if (opp2.getY() == 91) { reachHotopp2 = true; } if (opp3.getY() == 91) { reachHotopp3 = true; } if (opp4.getY() == 91) { reachHotopp4 = true; } if (opp5.getY() == 91) { reachHotopp5 = true; } if (opp6.getY() == 91) { reachHotopp6 = true; } if (opp7.getY() == 91) { reachHotopp7 = true; } } public void allowButton(MyPoint p, List<Rectangle> lr) { int temX = (int) p.getX(); int temY = (int) p.getY(); System.out.println(temX + " " + temY); Rectangle r1 = new Rectangle(temX + 25, temY + 25, 22, 22); Rectangle r2 = new Rectangle(temX + 25, temY - 25, 22, 22); Rectangle r3 = new Rectangle(temX - 25, temY + 25, 22, 22); Rectangle r4 = new Rectangle(temX - 25, temY - 25, 22, 22); leftUp.setEnabled(false); rightUp.setEnabled(false); leftDown.setEnabled(false); rightDown.setEnabled(false); for (Iterator<Rectangle> it = lr.iterator(); it.hasNext();) { Rectangle temr = it.next(); System.out.println(temr.getX() + " " + temr.getY()); if (temr.getX() == r1.getX() && temr.getY() == r1.getY()) { rightDown.setEnabled(true); } else if (temr.getX() == r2.getX() && temr.getY() == r2.getY()) { rightUp.setEnabled(true); } else if (temr.getX() == r3.getX() && temr.getY() == r3.getY()) { leftDown.setEnabled(true); } else if (temr.getX() == r4.getX() && temr.getY() == r4.getY()) { leftUp.setEnabled(true); } } } public MyPoint getFromString() { if (selectMark.equals("mark")) { return mark; } else if (selectMark.equals("mark1")) { return mark1; } else if (selectMark.equals("mark2")) { return mark2; } else if (selectMark.equals("mark3")) { return mark3; } else if (selectMark.equals("mark4")) { return mark4; } else if (selectMark.equals("mark5")) { return mark5; } else if (selectMark.equals("mark6")) { return mark6; } else if (selectMark.equals("mark7")) { return mark7; } else if (selectMark.equals("opp")) { return opp; } else if (selectMark.equals("opp1")) { return opp1; } else if (selectMark.equals("opp2")) { return opp2; } else if (selectMark.equals("opp3")) { return opp3; } else if (selectMark.equals("opp4")) { return opp4; } else if (selectMark.equals("opp5")) { return opp5; } else if (selectMark.equals("opp6")) { return opp6; } else { return opp7; } } public int getXFromString() { if (selectMark.equals("mark")) { return x; } else if (selectMark.equals("mark1")) { return x1; } else if (selectMark.equals("mark2")) { return x2; } else if (selectMark.equals("mark3")) { return x3; } else if (selectMark.equals("mark4")) { return x4; } else if (selectMark.equals("mark5")) { return x5; } else if (selectMark.equals("mark6")) { return x6; } else if (selectMark.equals("mark7")) { return x7; } else if (selectMark.equals("opp")) { return ox; } else if (selectMark.equals("opp1")) { return ox1; } else if (selectMark.equals("opp2")) { return ox2; } else if (selectMark.equals("opp3")) { return ox3; } else if (selectMark.equals("opp4")) { return ox4; } else if (selectMark.equals("opp5")) { return ox5; } else if (selectMark.equals("opp6")) { return ox6; } else { return ox7; } } public int getYFromString() { if (selectMark.equals("mark")) { return y; } else if (selectMark.equals("mark1")) { return y1; } else if (selectMark.equals("mark2")) { return y2; } else if (selectMark.equals("mark3")) { return y3; } else if (selectMark.equals("mark4")) { return y4; } else if (selectMark.equals("mark5")) { return y5; } else if (selectMark.equals("mark6")) { return y6; } else if (selectMark.equals("mark7")) { return y7; } else if (selectMark.equals("opp")) { return oy; } else if (selectMark.equals("opp1")) { return oy1; } else if (selectMark.equals("opp2")) { return oy2; } else if (selectMark.equals("opp3")) { return oy3; } else if (selectMark.equals("opp4")) { return oy4; } else if (selectMark.equals("opp5")) { return oy5; } else if (selectMark.equals("opp6")) { return oy6; } else { return oy7; } } public void allowButtonDouble(String n) { if (n.contains("rightUp")) { rightUp.setEnabled(true); } if (n.contains("rightDown")) { rightDown.setEnabled(true); } if (n.contains("leftDown")) { leftDown.setEnabled(true); } if (n.contains("leftUp")) { leftUp.setEnabled(true); } } public MyPoint getFromeated(){ if (eatedMark.equals("mark")) { return mark; } else if (eatedMark.equals("mark1")) { return mark1; } else if (eatedMark.equals("mark2")) { return mark2; } else if (eatedMark.equals("mark3")) { return mark3; } else if (eatedMark.equals("mark4")) { return mark4; } else if (eatedMark.equals("mark5")) { return mark5; } else if (eatedMark.equals("mark6")) { return mark6; } else if (eatedMark.equals("mark7")) { return mark7; } else if (eatedMark.equals("opp")) { return opp; } else if (eatedMark.equals("opp1")) { return opp1; } else if (eatedMark.equals("opp2")) { return opp2; } else if (eatedMark.equals("opp3")) { return opp3; } else if (eatedMark.equals("opp4")) { return opp4; } else if (eatedMark.equals("opp5")) { return opp5; } else if (eatedMark.equals("opp6")) { return opp6; } else { return opp7; } } @Override public void mouseClicked(MouseEvent e) { Point select = e.getPoint(); MyPoint dEat = getFromeated(); testReachHot(); AfterEat1 ae = new AfterEat1(after, this); ae.doubleEat(dEat); if (!ae.empty) { int xD = (int) dEat.getX(); int yD = (int) dEat.getY(); Rectangle se = new Rectangle(xD, yD, 22, 22); if (se.contains(select)) { allowButtonDouble(ae.pass); ae.goFrontD.clear(); ae.goFrontD1.clear(); ae.goFrontD2.clear(); ae.goFrontD3.clear(); ae.goFrontD4.clear(); ae.goFrontD5.clear(); ae.goFrontD6.clear(); ae.goFrontD7.clear(); ae.pass = ""; ae.empty = true; } else { leftUp.setEnabled(false); rightUp.setEnabled(false); leftDown.setEnabled(false); rightDown.setEnabled(false); } } else if (ae.empty) { int x = (int) mark.getX(); int y = (int) mark.getY(); Rectangle r = new Rectangle(x, y, 22, 22); int x1 = (int) mark1.getX(); int y1 = (int) mark1.getY(); Rectangle r1 = new Rectangle(x1, y1, 22, 22); int x2 = (int) mark2.getX(); int y2 = (int) mark2.getY(); Rectangle r2 = new Rectangle(x2, y2, 22, 22); int x3 = (int) mark3.getX(); int y3 = (int) mark3.getY(); Rectangle r3 = new Rectangle(x3, y3, 22, 22); int x4 = (int) mark4.getX(); int y4 = (int) mark4.getY(); Rectangle r4 = new Rectangle(x4, y4, 22, 22); int x5 = (int) mark5.getX(); int y5 = (int) mark5.getY(); Rectangle r5 = new Rectangle(x5, y5, 22, 22); int x6 = (int) mark6.getX(); int y6 = (int) mark6.getY(); Rectangle r6 = new Rectangle(x6, y6, 22, 22); int x7 = (int) mark7.getX(); int y7 = (int) mark7.getY(); Rectangle r7 = new Rectangle(x7, y7, 22, 22); int ox = (int) opp.getX(); int oy = (int) opp.getY(); Rectangle or = new Rectangle(ox, oy, 22, 22); int ox1 = (int) opp1.getX(); int oy1 = (int) opp1.getY(); Rectangle or1 = new Rectangle(ox1, oy1, 22, 22); int ox2 = (int) opp2.getX(); int oy2 = (int) opp2.getY(); Rectangle or2 = new Rectangle(ox2, oy2, 22, 22); int ox3 = (int) opp3.getX(); int oy3 = (int) opp3.getY(); Rectangle or3 = new Rectangle(ox3, oy3, 22, 22); int ox4 = (int) opp4.getX(); int oy4 = (int) opp4.getY(); Rectangle or4 = new Rectangle(ox4, oy4, 22, 22); int ox5 = (int) opp5.getX(); int oy5 = (int) opp5.getY(); Rectangle or5 = new Rectangle(ox5, oy5, 22, 22); int ox6 = (int) opp6.getX(); int oy6 = (int) opp6.getY(); Rectangle or6 = new Rectangle(ox6, oy6, 22, 22); int ox7 = (int) opp7.getX(); int oy7 = (int) opp7.getY(); Rectangle or7 = new Rectangle(ox7, oy7, 22, 22); if (r.contains(select)) { if (testTurn(r)) { selectMark = "mark"; tMark = "yes"; tOpp = "no"; } leftUp.setEnabled(testTurn(r) && reachHotmark); rightUp.setEnabled(testTurn(r) && reachHotmark); leftDown.setEnabled(testTurn(r)); rightDown.setEnabled(testTurn(r)); if (mustEat() && testTurn(r)) { if (pass.contains("mark")) { allowButton(mark, goFront); } } } else if (r2.contains(select)) { if (testTurn(r2)) { selectMark = "mark2"; tMark = "yes"; tOpp = "no"; } leftUp.setEnabled(testTurn(r2) && reachHotmark2); rightUp.setEnabled(testTurn(r2) && reachHotmark2); leftDown.setEnabled(testTurn(r2)); rightDown.setEnabled(testTurn(r2)); if (mustEat() && testTurn(r2)) { if (pass.contains("mark")) { allowButton(mark2, goFront2); } } } else if (r3.contains(select)) { if (testTurn(r3)) { selectMark = "mark3"; tMark = "yes"; tOpp = "no"; } leftUp.setEnabled(testTurn(r3) && reachHotmark3); rightUp.setEnabled(testTurn(r3) && reachHotmark3); leftDown.setEnabled(testTurn(r3)); rightDown.setEnabled(testTurn(r3)); if (mustEat() && testTurn(r3)) { if (pass.contains("mark")) { allowButton(mark3, goFront3); } } } else if (r4.contains(select)) { if (testTurn(r4)) { selectMark = "mark4"; tMark = "yes"; tOpp = "no"; } leftUp.setEnabled(testTurn(r4) && reachHotmark4); rightUp.setEnabled(testTurn(r4) && reachHotmark4); leftDown.setEnabled(testTurn(r4)); rightDown.setEnabled(testTurn(r4)); if (mustEat() && testTurn(r4)) { if (pass.contains("mark")) { allowButton(mark4, goFront4); } } } else if (r5.contains(select)) { if (testTurn(r5)) { selectMark = "mark5"; tMark = "yes"; tOpp = "no"; } leftUp.setEnabled(testTurn(r5) && reachHotmark5); rightUp.setEnabled(testTurn(r5) && reachHotmark5); leftDown.setEnabled(testTurn(r5)); rightDown.setEnabled(testTurn(r5)); if (mustEat() && testTurn(r5)) { if (pass.contains("mark")) { allowButton(mark5, goFront5); } } } else if (r6.contains(select)) { if (testTurn(r6)) { selectMark = "mark6"; tMark = "yes"; tOpp = "no"; } leftUp.setEnabled(testTurn(r6) && reachHotmark6); rightUp.setEnabled(testTurn(r6) && reachHotmark6); leftDown.setEnabled(testTurn(r6)); rightDown.setEnabled(testTurn(r6)); if (mustEat() && testTurn(r6)) { if (pass.contains("mark")) { allowButton(mark6, goFront6); } } } else if (r7.contains(select)) { if (testTurn(r7)) { selectMark = "mark7"; tMark = "yes"; tOpp = "no"; } leftUp.setEnabled(testTurn(r7) && reachHotmark7); rightUp.setEnabled(testTurn(r7) && reachHotmark7); leftDown.setEnabled(testTurn(r7)); rightDown.setEnabled(testTurn(r7)); if (mustEat() && testTurn(r7)) { if (pass.contains("mark")) { allowButton(mark7, goFront7); } } } else if (r1.contains(select)) { if (testTurn(r1)) { selectMark = "mark1"; tMark = "yes"; tOpp = "no"; } leftUp.setEnabled(testTurn(r1) && reachHotmark1); rightUp.setEnabled(testTurn(r1) && reachHotmark1); leftDown.setEnabled(testTurn(r1)); rightDown.setEnabled(testTurn(r1)); if (mustEat() && testTurn(r1)) { if (pass.contains("mark")) { allowButton(mark1, goFront1); } } } else if (or.contains(select)) { if (testTurn(or)) { selectMark = "opp"; tMark = "no"; tOpp = "yes"; } leftUp.setEnabled(testTurn(or)); rightUp.setEnabled(testTurn(or)); leftDown.setEnabled(testTurn(or) && reachHotopp); rightDown.setEnabled(testTurn(or) && reachHotopp); if (mustEat() && testTurn(or)) { if (pass.contains("opp")) { allowButton(opp, goFront); } } } else if (or2.contains(select)) { if (testTurn(or2)) { selectMark = "opp2"; tMark = "no"; tOpp = "yes"; } leftUp.setEnabled(testTurn(or2)); rightUp.setEnabled(testTurn(or2)); leftDown.setEnabled(testTurn(or2) && reachHotopp2); rightDown.setEnabled(testTurn(or2) && reachHotopp2); if (mustEat() && testTurn(or2)) { if (pass.contains("opp")) { allowButton(opp2, goFront2); } } } else if (or3.contains(select)) { if (testTurn(or3)) { selectMark = "opp3"; tMark = "no"; tOpp = "yes"; } leftUp.setEnabled(testTurn(or3)); rightUp.setEnabled(testTurn(or3)); leftDown.setEnabled(testTurn(or3) && reachHotopp3); rightDown.setEnabled(testTurn(or3) && reachHotopp3); if (mustEat() && testTurn(or3)) { if (pass.contains("opp")) { allowButton(opp3, goFront3); } } } else if (or4.contains(select)) { if (testTurn(or4)) { selectMark = "opp4"; tMark = "no"; tOpp = "yes"; } leftUp.setEnabled(testTurn(or4)); rightUp.setEnabled(testTurn(or4)); leftDown.setEnabled(testTurn(or4) && reachHotopp4); rightDown.setEnabled(testTurn(or4) && reachHotopp4); if (mustEat() && testTurn(or4)) { if (pass.contains("opp")) { allowButton(opp4, goFront4); } } } else if (or5.contains(select)) { if (testTurn(or5)) { selectMark = "opp5"; tMark = "no"; tOpp = "yes"; } leftUp.setEnabled(testTurn(or5)); rightUp.setEnabled(testTurn(or5)); leftDown.setEnabled(testTurn(or5) && reachHotopp5); rightDown.setEnabled(testTurn(or5) && reachHotopp5); if (mustEat() && testTurn(or5)) { if (pass.contains("opp")) { allowButton(opp5, goFront5); } } } else if (or6.contains(select)) { if (testTurn(or6)) { selectMark = "opp6"; tMark = "no"; tOpp = "yes"; } leftUp.setEnabled(testTurn(or6)); rightUp.setEnabled(testTurn(or6)); leftDown.setEnabled(testTurn(or6) && reachHotopp6); rightDown.setEnabled(testTurn(or6) && reachHotopp6); if (mustEat() && testTurn(or6)) { if (pass.contains("opp")) { allowButton(opp6, goFront6); } } } else if (or7.contains(select)) { if (testTurn(or7)) { selectMark = "opp7"; tMark = "no"; tOpp = "yes"; } leftUp.setEnabled(testTurn(or7)); rightUp.setEnabled(testTurn(or7)); leftDown.setEnabled(testTurn(or7) && reachHotopp7); rightDown.setEnabled(testTurn(or7) && reachHotopp7); if (mustEat() && testTurn(or7)) { if (pass.contains("opp")) { allowButton(opp7, goFront7); } } } else if (or1.contains(select)) { if (testTurn(or1)) { selectMark = "opp1"; tMark = "no"; tOpp = "yes"; } leftUp.setEnabled(testTurn(or1)); rightUp.setEnabled(testTurn(or1)); leftDown.setEnabled(testTurn(or1) && reachHotopp1); rightDown.setEnabled(testTurn(or1) && reachHotopp1); if (mustEat() && testTurn(or1)) { if (pass.contains("opp")) { allowButton(opp1, goFront1); } } } goFront.clear(); goFront1.clear(); goFront2.clear(); goFront3.clear(); goFront4.clear(); goFront5.clear(); goFront6.clear(); goFront7.clear(); System.out.println(selectMark+" "+pass+" "+after); } repaint(); } @Override public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } }
import java.awt.Dimension; import java.awt.Rectangle; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class AfterEat1 { boolean after; Testpaint6 tp; List<Rectangle> goFrontD, goFrontD1; List<Rectangle> goFrontD2, goFrontD3, goFrontD4, goFrontD5, goFrontD6, goFrontD7; String pass; boolean empty; public AfterEat1(boolean af, Testpaint6 tp) { after = af; this.tp = tp; goFrontD = new ArrayList<Rectangle>(); goFrontD1 = new ArrayList<Rectangle>(); goFrontD2 = new ArrayList<Rectangle>(); goFrontD3 = new ArrayList<Rectangle>(); goFrontD4 = new ArrayList<Rectangle>(); goFrontD5 = new ArrayList<Rectangle>(); goFrontD6 = new ArrayList<Rectangle>(); goFrontD7 = new ArrayList<Rectangle>(); } public void scanAllD(MyPoint p) { Rectangle r1 = new Rectangle(), r2 = new Rectangle(), r3 = new Rectangle(), r4 = new Rectangle(); Rectangle br1 = new Rectangle(), br2 = new Rectangle(), br3 = new Rectangle(); String tem1, tem2, tem3; tp.scanFront(p); tp.scanBack(p); System.out.println("countBack " + tp.countBack); if (tp.countBack == 4 || tp.countFront == 0) { return; } if (tp.countFront > 0) { int size = tp.lrFront.size(); int bsize = tp.lrBack.size(); if (size == 3) { r1 = tp.lrFront.get(0); r2 = tp.lrFront.get(1); r3 = tp.lrFront.get(2); } else if (size == 2) { r1 = tp.lrFront.get(0); r2 = tp.lrFront.get(1); } else if (size == 1) { r1 = tp.lrFront.get(0); } if (bsize == 3) { br1 = tp.lrBack.get(0); br2 = tp.lrBack.get(1); br3 = tp.lrBack.get(2); } else if (bsize == 2) { br1 = tp.lrBack.get(0); br2 = tp.lrBack.get(1); } else if (bsize == 1) { br1 = tp.lrBack.get(0); } if (size == 3 && bsize == 3) { boolean b1 = tp.linear(p, r1, br1); boolean b2 = tp.linear(p, r1, br2); boolean b3 = tp.linear(p, r1, br3); tem1 = tp.mustGo(b1, b2, b3); addRect(p, tem1, r1); boolean b4 = tp.linear(p, r2, br1); boolean b5 = tp.linear(p, r2, br2); boolean b6 = tp.linear(p, r2, br3); tem2 = tp.mustGo(b4, b5, b6); addRect(p, tem2, r2); boolean b7 = tp.linear(p, r3, br1); boolean b8 = tp.linear(p, r3, br2); boolean b9 = tp.linear(p, r3, br3); tem3 = tp.mustGo(b7, b8, b9); addRect(p, tem3, r3); } else if (size > bsize) { // tp.mustGo = "try"; SupportScan3 ssc = new SupportScan3(tp, size, bsize, tp.lrFront, tp.lrBack, r1, r2, r3, r4, br1, br2, br3, p, this); ssc.getFromList(); } else if (size == 2 && bsize == 3) { boolean b1 = tp.linear(p, r1, br1); boolean b2 = tp.linear(p, r1, br2); boolean b3 = tp.linear(p, r1, br3); tem1 = tp.mustGo(b1, b2, b3); addRect(p, tem1, r1); boolean b4 = tp.linear(p, r2, br1); boolean b5 = tp.linear(p, r2, br2); boolean b6 = tp.linear(p, r2, br3); tem2 = tp.mustGo(b4, b5, b6); addRect(p, tem2, r2); } else if (size == 2 && bsize == 2) { boolean b1 = tp.linear(p, r1, br1); boolean b2 = tp.linear(p, r1, br2); tem1 = tp.mustGo(b1, b2); addRect(p, tem1, r1); boolean b4 = tp.linear(p, r2, br1); boolean b5 = tp.linear(p, r2, br2); tem2 = tp.mustGo(b4, b5); addRect(p, tem2, r2); } else if (size == 1 && bsize == 2) { boolean b1 = tp.linear(p, r1, br1); boolean b2 = tp.linear(p, r1, br2); tem1 = tp.mustGo(b1, b2); addRect(p, tem1, r1); } else if (size == 1 && bsize == 1) { boolean b1 = tp.linear(p, r1, br1); tem1 = b1 ? "free" : "try"; addRect(p, tem1, r1); } else if (size == 1 && bsize == 3) { boolean b1 = tp.linear(p, r1, br1); boolean b2 = tp.linear(p, r1, br2); boolean b3 = tp.linear(p, r1, br3); tem1 = tp.mustGo(b1, b2, b3); addRect(p, tem1, r1); } } } public void addRect(MyPoint p, String n, Rectangle r) { if (n.equals("try")) { if (p.toString().equals("mark") || p.toString().equals("opp")) { goFrontD.add(r); } else if (p.toString().equals("mark1") || p.toString().equals("opp1")) { goFrontD1.add(r); } else if (p.toString().equals("mark2") || p.toString().equals("opp2")) { goFrontD2.add(r); } else if (p.toString().equals("mark3") || p.toString().equals("opp3")) { goFrontD3.add(r); } else if (p.toString().equals("mark4") || p.toString().equals("opp4")) { goFrontD4.add(r); } else if (p.toString().equals("mark5") || p.toString().equals("opp5")) { goFrontD5.add(r); } else if (p.toString().equals("mark6") || p.toString().equals("opp6")) { goFrontD6.add(r); } else if (p.toString().equals("mark7") || p.toString().equals("opp7")) { goFrontD7.add(r); } } else { return; } } public void doubleEat(MyPoint p) { if (!after) { empty = true; return; } testForScan(p); String name = p.toString(); if (((name.equals("mark") || name.equals("opp")) && goFrontD.isEmpty()) || ((name.equals("mark1") || name.equals("opp1")) && goFrontD1 .isEmpty()) || ((name.equals("mark2") || name.equals("opp2")) && goFrontD2 .isEmpty()) || ((name.equals("mark3") || name.equals("opp3")) && goFrontD3 .isEmpty()) || ((name.equals("mark4") || name.equals("opp4")) && goFrontD4 .isEmpty()) || ((name.equals("mark5") || name.equals("opp5")) && goFrontD5 .isEmpty()) || ((name.equals("mark6") || name.equals("opp6")) && goFrontD6 .isEmpty()) || ((name.equals("mark7") || name.equals("opp7")) && goFrontD7 .isEmpty())) { empty = true; System.out.println("dEat empty"); return; } else { empty = false; System.out.println("dEat not empty "); if (name.equals("mark")) { getRect(p, goFrontD); } else if (name.equals("mark1")) { getRect(p, goFrontD1); } else if (name.equals("mark2")) { getRect(p, goFrontD2); } else if (name.equals("mark3")) { getRect(p, goFrontD3); } else if (name.equals("mark4")) { getRect(p, goFrontD4); } else if (name.equals("mark5")) { getRect(p, goFrontD5); } else if (name.equals("mark6")) { getRect(p, goFrontD6); } else if (name.equals("mark7")) { getRect(p, goFrontD7); } else if (name.equals("opp")) { getRect(p, goFrontD); } else if (name.equals("opp1")) { getRect(p, goFrontD1); } else if (name.equals("opp2")) { getRect(p, goFrontD2); } else if (name.equals("opp3")) { getRect(p, goFrontD3); } else if (name.equals("opp4")) { getRect(p, goFrontD4); } else if (name.equals("opp5")) { getRect(p, goFrontD5); } else if (name.equals("opp6")) { getRect(p, goFrontD6); } else if (name.equals("opp7")) { getRect(p, goFrontD7); } } } public void getRect(MyPoint p, List<Rectangle> lr) { int temX = (int) p.getX(); int temY = (int) p.getY(); System.out.println(temX + " " + temY); Rectangle r1 = new Rectangle(temX + 25, temY + 25, 22, 22); Rectangle r2 = new Rectangle(temX + 25, temY - 25, 22, 22); Rectangle r3 = new Rectangle(temX - 25, temY + 25, 22, 22); Rectangle r4 = new Rectangle(temX - 25, temY - 25, 22, 22); for (Iterator<Rectangle> it = lr.iterator(); it.hasNext();) { Rectangle temr = it.next(); System.out.println(temr.getX() + " " + temr.getY()); if (temr.getX() == r1.getX() && temr.getY() == r1.getY()) { pass = "rightDown"; } else if (temr.getX() == r2.getX() && temr.getY() == r2.getY()) { pass += "rightUp"; } else if (temr.getX() == r3.getX() && temr.getY() == r3.getY()) { pass += "leftDown"; } else if (temr.getX() == r4.getX() && temr.getY() == r4.getY()) { pass += "leftUp"; } } } public void testForScan(MyPoint p) { String name = p.toString(); if (name.equals("mark")) { if (tp.reachHotmark) { scanAllD(p); } else { scanAllnReachDownD(p); } } else if (name.equals("mark1")) { if (tp.reachHotmark1) { scanAllD(p); } else { scanAllnReachDownD(p); } } else if (name.equals("mark2")) { if (tp.reachHotmark2) { scanAllD(p); } else { scanAllnReachDownD(p); } } else if (name.equals("mark3")) { if (tp.reachHotmark3) { scanAllD(p); } else { scanAllnReachDownD(p); } } else if (name.equals("mark4")) { if (tp.reachHotmark4) { scanAllD(p); } else { scanAllnReachDownD(p); } } else if (name.equals("mark5")) { if (tp.reachHotmark5) { scanAllD(p); } else { scanAllnReachDownD(p); } } else if (name.equals("mark6")) { if (tp.reachHotmark6) { scanAllD(p); } else { scanAllnReachDownD(p); } } else if (name.equals("mark7")) { if (tp.reachHotmark7) { scanAllD(p); } else { scanAllnReachDownD(p); } } else if (name.equals("opp")) { if (tp.reachHotopp) { scanAllD(p); } else { scanAllnReachUpD(p); } } else if (name.equals("opp1")) { if (tp.reachHotopp1) { scanAllD(p); } else { scanAllnReachUpD(p); } } else if (name.equals("opp2")) { if (tp.reachHotopp2) { scanAllD(p); } else { scanAllnReachUpD(p); } } else if (name.equals("opp3")) { if (tp.reachHotopp3) { scanAllD(p); } else { scanAllnReachUpD(p); } } else if (name.equals("opp4")) { if (tp.reachHotopp4) { scanAllD(p); } else { scanAllnReachUpD(p); } } else if (name.equals("opp5")) { if (tp.reachHotopp5) { scanAllD(p); } else { scanAllnReachUpD(p); } } else if (name.equals("opp6")) { if (tp.reachHotopp6) { scanAllD(p); } else { scanAllnReachUpD(p); } } else if (name.equals("opp7")) { if (tp.reachHotopp7) { scanAllD(p); } else { scanAllnReachUpD(p); } } } public void scanAllnReachUpD(MyPoint p) { String tem1, tem2; Rectangle r1 = new Rectangle(), r2 = new Rectangle(); Rectangle br1 = new Rectangle(); Dimension di = new Dimension(22, 22); tp.scanFrontnReachUp(p); tp.scanBacknReachUp(p); if (tp.cBackn == 2 || tp.cFrontn == 0) { return; } if (tp.cFrontn > 0) { int size = tp.temFront.size(); int bsize = tp.temBack.size(); if (size == 1) { r1 = new Rectangle(tp.temFront.get(0), di); } if (bsize == 1) { br1 = new Rectangle(tp.temBack.get(0), di); } if (size > bsize) { if (size == 2 && bsize == 1) { r1 = new Rectangle(tp.temFront.get(0), di); r2 = new Rectangle(tp.temFront.get(1), di); br1 = new Rectangle(tp.temBack.get(0), di); boolean b1 = tp.linear(p, r1, br1); boolean b2 = tp.linear(p, r2, br1); tem1 = b1 ? "free" : "try"; addRect(p, tem1, r1); tem2 = b2 ? "free" : "try"; addRect(p, tem2, r2); } else if (size == 1 && bsize == 0) { r1 = new Rectangle(tp.temFront.get(0), di); tem1 = "try"; addRect(p, tem1, r1); } } else if (size == 1 && bsize == 1) { boolean b1 = tp.linear(p, r1, br1); tem1 = b1 ? "free" : "try"; addRect(p, tem1, r1); } } } public void scanAllnReachDownD(MyPoint p) { String tem1, tem2; Rectangle r1 = new Rectangle(), r2 = new Rectangle(); Rectangle br1 = new Rectangle(); Dimension di = new Dimension(22, 22); tp.scanFrontnReachDown(p); tp.scanBacknReachDown(p); if (tp.cBackn == 2 || tp.cFrontn == 0) { return; } if (tp.cFrontn > 0) { int size = tp.temFront.size(); int bsize = tp.temBack.size(); if (size == 1) { r1 = new Rectangle(tp.temFront.get(0), di); } if (bsize == 1) { br1 = new Rectangle(tp.temBack.get(0), di); } if (size > bsize) { if (size == 2 && bsize == 1) { r1 = new Rectangle(tp.temFront.get(0), di); r2 = new Rectangle(tp.temFront.get(1), di); br1 = new Rectangle(tp.temBack.get(0), di); boolean b1 = tp.linear(p, r1, br1); boolean b2 = tp.linear(p, r2, br1); tem1 = b1 ? "free" : "try"; addRect(p, tem1, r1); tem2 = b2 ? "free" : "try"; addRect(p, tem2, r2); } else if (size == 1 && bsize == 0) { r1 = new Rectangle(tp.temFront.get(0), di); tem1 = "try"; addRect(p, tem1, r1); } } else if (size == 1 && bsize == 1) { boolean b1 = tp.linear(p, r1, br1); tem1 = b1 ? "free" : "try"; addRect(p, tem1, r1); } } } }
import java.awt.Rectangle; import java.util.List; public class SupportScan3 { int size,bsize; List<Rectangle> lrFront,lrBack; Rectangle r1,r2,r3,r4,br1,br2,br3; Testpaint6 tp; String tem1,tem2,tem3,tem4; MyPoint mp ; AfterEat1 ae; public SupportScan3(Testpaint6 tp4,int s,int b,List<Rectangle> lf,List<Rectangle> lb, Rectangle rr1,Rectangle rr2,Rectangle rr3,Rectangle rr4, Rectangle brr1,Rectangle brr2,Rectangle brr3,MyPoint p,AfterEat1 a){ tp = tp4; size = s; bsize = b; lrFront = lf; lrBack = lb; r1 = rr1; r2 = rr2; r3 = rr3; r4 = rr4; br1 = brr1; br2 = brr2; br3 = brr3; mp = p; ae = a; } public void getFromList(){ if(size==4&&bsize==3){ r1 = lrFront.get(0); r2 = lrFront.get(1); r3 = lrFront.get(2); r4 = lrFront.get(3); br1 = lrBack.get(0); br2 = lrBack.get(1); br3 = lrBack.get(2); boolean b1 = tp.linear(mp, r1, br1); boolean b2 = tp.linear(mp, r1, br2); boolean b3 = tp.linear(mp, r1, br3); tem1 = tp.mustGo(b1, b2, b3); ae.addRect(mp, tem1, r1); boolean b4 = tp.linear(mp, r2, br1); boolean b5 = tp.linear(mp, r2, br2); boolean b6 = tp.linear(mp, r2, br3); tem2 = tp.mustGo(b4, b5, b6); ae.addRect(mp, tem2, r2); boolean b7 = tp.linear(mp, r3, br1); boolean b8 = tp.linear(mp, r3, br2); boolean b9 = tp.linear(mp, r3, br3); tem3 = tp.mustGo(b7, b8, b9); ae.addRect(mp, tem3, r3); boolean b10 = tp.linear(mp, r4, br1); boolean b11 = tp.linear(mp, r4, br2); boolean b12 = tp.linear(mp, r4, br3); tem4 = tp.mustGo(b10, b11, b12); ae.addRect(mp, tem4, r4); }else if(size==3&&bsize==2){ r1 = lrFront.get(0); r2 = lrFront.get(1); r3 = lrFront.get(2); br1 = lrBack.get(0); br2 = lrBack.get(1); boolean b1 = tp.linear(mp, r1, br1); boolean b2 = tp.linear(mp, r1, br2); tem1 = tp.mustGo(b1, b2); ae.addRect(mp, tem1, r1); boolean b3 = tp.linear(mp, r2, br1); boolean b4 = tp.linear(mp, r2, br2); tem2 = tp.mustGo(b3, b4); ae.addRect(mp, tem2, r2); boolean b5 = tp.linear(mp, r3, br1); boolean b6 = tp.linear(mp, r3, br2); tem3 = tp.mustGo(b5, b6); ae.addRect(mp, tem3, r3); }else if(size==2&&bsize==1){ r1 = lrFront.get(0); r2 = lrFront.get(1); br1 = lrBack.get(0); boolean b1 = tp.linear(mp, r1, br1); boolean b2 = tp.linear(mp, r2, br1); tem1 = b1?"free":"try"; ae.addRect(mp, tem1, r1); tem2 = b2?"free":"try"; ae.addRect(mp, tem2, r2); }else if(size==1&&bsize==0){ r1 = lrFront.get(0); tem1 = "try"; System.out.println(mp.toString()+" " + r1.getX()+" " +r1.getY()); ae.addRect(mp, tem1, r1); }else if(size==4&&bsize==2){ r1 = lrFront.get(0); r2 = lrFront.get(1); r3 = lrFront.get(2); r4 = lrFront.get(3); br1 = lrBack.get(0); br2 = lrBack.get(1); boolean b1 = tp.linear(mp, r1, br1); boolean b2 = tp.linear(mp, r1, br2); tem1 = tp.mustGo(b1, b2); ae.addRect(mp, tem1, r1); boolean b4 = tp.linear(mp, r2, br1); boolean b5 = tp.linear(mp, r2, br2); tem2 = tp.mustGo(b4, b5); ae.addRect(mp, tem2, r2); boolean b7 = tp.linear(mp, r3, br1); boolean b8 = tp.linear(mp, r3, br2); tem3 = tp.mustGo(b7, b8); ae.addRect(mp, tem3, r3); boolean b10 = tp.linear(mp, r4, br1); boolean b11 = tp.linear(mp, r4, br2); tem4 = tp.mustGo(b10, b11); ae.addRect(mp, tem4, r4); }else if(size==3&&bsize==1){ r1 = lrFront.get(0); r2 = lrFront.get(1); r3 = lrFront.get(2); br1 = lrBack.get(0); boolean b1 = tp.linear(mp, r1, br1); boolean b2 = tp.linear(mp, r2, br1); boolean b3 = tp.linear(mp, r3, br1); tem1 = b1?"free":"try"; ae.addRect(mp, tem1, r1); tem2 = b2?"free":"try"; ae.addRect(mp, tem2, r2); tem3 = b3?"free":"try"; ae.addRect(mp, tem3, r3); }else if(size==2&&bsize==0){ r1 = lrFront.get(0); r2 = lrFront.get(1); tem1 = "try"; ae.addRect(mp, tem1, r1); tem2 = "try"; ae.addRect(mp, tem2, r2); }else if(size==4&&bsize==1){ r1 = lrFront.get(0); r2 = lrFront.get(1); r3 = lrFront.get(2); r4 = lrFront.get(3); br1 = lrBack.get(0); boolean b1 = tp.linear(mp, r1, br1); boolean b2 = tp.linear(mp, r2, br1); boolean b3 = tp.linear(mp, r3, br1); boolean b4 = tp.linear(mp, r4, br1); tem1 = b1?"free":"try"; ae.addRect(mp, tem1, r1); tem2 = b2?"free":"try"; ae.addRect(mp, tem2, r2); tem3 = b3?"free":"try"; ae.addRect(mp, tem3, r3); tem4 = b4?"free":"try"; ae.addRect(mp, tem4, r4); }else if(size==3&&bsize==0){ r1 = lrFront.get(0); r2 = lrFront.get(1); r3 = lrFront.get(2); tem1 = "try"; ae.addRect(mp, tem1, r1); tem2 = "try"; ae.addRect(mp, tem2, r2); tem3 = "try"; ae.addRect(mp, tem3, r3); }else if(size==4&&bsize==0){ r1 = lrFront.get(0); r2 = lrFront.get(1); r3 = lrFront.get(2); r4 = lrFront.get(3); tem1 = "try"; ae.addRect(mp, tem1, r1); tem2 = "try"; ae.addRect(mp, tem2, r2); tem3 = "try"; ae.addRect(mp, tem3, r3); tem4 = "try"; ae.addRect(mp, tem4, r4); } } }
import java.awt.Rectangle; import java.util.List; public class SupportScan6 { int size,bsize; List<Rectangle> lrFront,lrBack; Rectangle r1,r2,r3,r4,br1,br2,br3; Testpaint6 tp; String tem1,tem2,tem3,tem4; MyPoint mp ; public SupportScan6(Testpaint6 tp4,int s,int b,List<Rectangle> lf,List<Rectangle> lb, Rectangle rr1,Rectangle rr2,Rectangle rr3,Rectangle rr4, Rectangle brr1,Rectangle brr2,Rectangle brr3,MyPoint p){ tp = tp4; size = s; bsize = b; lrFront = lf; lrBack = lb; r1 = rr1; r2 = rr2; r3 = rr3; r4 = rr4; br1 = brr1; br2 = brr2; br3 = brr3; mp = p; } public void getFromList(){ if(size==4&&bsize==3){ r1 = lrFront.get(0); r2 = lrFront.get(1); r3 = lrFront.get(2); r4 = lrFront.get(3); br1 = lrBack.get(0); br2 = lrBack.get(1); br3 = lrBack.get(2); boolean b1 = tp.linear(mp, r1, br1); boolean b2 = tp.linear(mp, r1, br2); boolean b3 = tp.linear(mp, r1, br3); tem1 = tp.mustGo(b1, b2, b3); tp.addRect(mp, tem1, r1); boolean b4 = tp.linear(mp, r2, br1); boolean b5 = tp.linear(mp, r2, br2); boolean b6 = tp.linear(mp, r2, br3); tem2 = tp.mustGo(b4, b5, b6); tp.addRect(mp, tem2, r2); boolean b7 = tp.linear(mp, r3, br1); boolean b8 = tp.linear(mp, r3, br2); boolean b9 = tp.linear(mp, r3, br3); tem3 = tp.mustGo(b7, b8, b9); tp.addRect(mp, tem3, r3); boolean b10 = tp.linear(mp, r4, br1); boolean b11 = tp.linear(mp, r4, br2); boolean b12 = tp.linear(mp, r4, br3); tem4 = tp.mustGo(b10, b11, b12); tp.addRect(mp, tem4, r4); }else if(size==3&&bsize==2){ r1 = lrFront.get(0); r2 = lrFront.get(1); r3 = lrFront.get(2); br1 = lrBack.get(0); br2 = lrBack.get(1); boolean b1 = tp.linear(mp, r1, br1); boolean b2 = tp.linear(mp, r1, br2); tem1 = tp.mustGo(b1, b2); tp.addRect(mp, tem1, r1); boolean b3 = tp.linear(mp, r2, br1); boolean b4 = tp.linear(mp, r2, br2); tem2 = tp.mustGo(b3, b4); tp.addRect(mp, tem2, r2); boolean b5 = tp.linear(mp, r3, br1); boolean b6 = tp.linear(mp, r3, br2); tem3 = tp.mustGo(b5, b6); tp.addRect(mp, tem3, r3); }else if(size==2&&bsize==1){ r1 = lrFront.get(0); r2 = lrFront.get(1); br1 = lrBack.get(0); boolean b1 = tp.linear(mp, r1, br1); boolean b2 = tp.linear(mp, r2, br1); tem1 = b1?"free":"try"; tp.addRect(mp, tem1, r1); tem2 = b2?"free":"try"; tp.addRect(mp, tem2, r2); }else if(size==1&&bsize==0){ r1 = lrFront.get(0); tem1 = "try"; tp.addRect(mp, tem1, r1); }else if(size==4&&bsize==2){ r1 = lrFront.get(0); r2 = lrFront.get(1); r3 = lrFront.get(2); r4 = lrFront.get(3); br1 = lrBack.get(0); br2 = lrBack.get(1); boolean b1 = tp.linear(mp, r1, br1); boolean b2 = tp.linear(mp, r1, br2); tem1 = tp.mustGo(b1, b2); tp.addRect(mp, tem1, r1); boolean b4 = tp.linear(mp, r2, br1); boolean b5 = tp.linear(mp, r2, br2); tem2 = tp.mustGo(b4, b5); tp.addRect(mp, tem2, r2); boolean b7 = tp.linear(mp, r3, br1); boolean b8 = tp.linear(mp, r3, br2); tem3 = tp.mustGo(b7, b8); tp.addRect(mp, tem3, r3); boolean b10 = tp.linear(mp, r4, br1); boolean b11 = tp.linear(mp, r4, br2); tem4 = tp.mustGo(b10, b11); tp.addRect(mp, tem4, r4); }else if(size==3&&bsize==1){ r1 = lrFront.get(0); r2 = lrFront.get(1); r3 = lrFront.get(2); br1 = lrBack.get(0); boolean b1 = tp.linear(mp, r1, br1); boolean b2 = tp.linear(mp, r2, br1); boolean b3 = tp.linear(mp, r3, br1); tem1 = b1?"free":"try"; tp.addRect(mp, tem1, r1); tem2 = b2?"free":"try"; tp.addRect(mp, tem2, r2); tem3 = b3?"free":"try"; tp.addRect(mp, tem3, r3); }else if(size==2&&bsize==0){ r1 = lrFront.get(0); r2 = lrFront.get(1); tem1 = "try"; tp.addRect(mp, tem1, r1); tem2 = "try"; tp.addRect(mp, tem2, r2); }else if(size==4&&bsize==1){ r1 = lrFront.get(0); r2 = lrFront.get(1); r3 = lrFront.get(2); r4 = lrFront.get(3); br1 = lrBack.get(0); boolean b1 = tp.linear(mp, r1, br1); boolean b2 = tp.linear(mp, r2, br1); boolean b3 = tp.linear(mp, r3, br1); boolean b4 = tp.linear(mp, r4, br1); tem1 = b1?"free":"try"; tp.addRect(mp, tem1, r1); tem2 = b2?"free":"try"; tp.addRect(mp, tem2, r2); tem3 = b3?"free":"try"; tp.addRect(mp, tem3, r3); tem4 = b4?"free":"try"; tp.addRect(mp, tem4, r4); }else if(size==3&&bsize==0){ r1 = lrFront.get(0); r2 = lrFront.get(1); r3 = lrFront.get(2); tem1 = "try"; tp.addRect(mp, tem1, r1); tem2 = "try"; tp.addRect(mp, tem2, r2); tem3 = "try"; tp.addRect(mp, tem3, r3); }else if(size==4&&bsize==0){ r1 = lrFront.get(0); r2 = lrFront.get(1); r3 = lrFront.get(2); r4 = lrFront.get(3); tem1 = "try"; tp.addRect(mp, tem1, r1); tem2 = "try"; tp.addRect(mp, tem2, r2); tem3 = "try"; tp.addRect(mp, tem3, r3); tem4 = "try"; tp.addRect(mp, tem4, r4); } } }