คือ ผมเขียน โปรแกรมหมากฮอท(ฝรั่ง แบบไทยยังไม่ไหว ยาก) แล้ว แต่ตัวเอง ดันเล่นไม่เป็น ไม่ค่อยเก่ง อยากจะให้ช่วยลองว่า มันยังมี อะไรผิดหรือเปล่าครับ
คือ บอกก่อนว่า เป็นแบบต้องเล่นกันเอง เท่านั้นอะครับ เพราะผม ยังไม่เซียนเรื่องหมากฮอท เลยไม่รู้ จะให้ โปรแกรม ตั้งการเดิน ไว้ยังไง แล้วมัน ก็ยากมาก ๆ ด้วย
เล่นกับ 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);
}
}
}













