Jump to content


Photo

ใครช่วยมาลอง หมากฮอท(ฝรั่ง)ที่ผมเขียน โปรแกรม หน่อยครับ


  • Please log in to reply
24 ความเห็นในกระทู้นี้

#1 ทรงธรรม

ทรงธรรม

    ต่อให้ต้องเรียนจนแก่ ก็จะเรียนต่อไป คนเราพัฒนาได้ทุกคน

  • Members
  • PipPipPip
  • 2,157 posts

ตอบ 16 เมษายน พ.ศ. 2556 - 13:10

คือ ผมเขียน โปรแกรมหมากฮอท(ฝรั่ง แบบไทยยังไม่ไหว ยาก) แล้ว แต่ตัวเอง ดันเล่นไม่เป็น ไม่ค่อยเก่ง อยากจะให้ช่วยลองว่า มันยังมี อะไรผิดหรือเปล่าครับ

 

คือ บอกก่อนว่า เป็นแบบต้องเล่นกันเอง เท่านั้นอะครับ เพราะผม ยังไม่เซียนเรื่องหมากฮอท เลยไม่รู้ จะให้ โปรแกรม ตั้งการเดิน ไว้ยังไง แล้วมัน ก็ยากมาก ๆ ด้วย

 

เล่นกับ 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);
		}
	}
}

 


ขอให้พวกเรา ชาวหลากสี และพันธมิตร จงมีชีวิตรอด จากภาวะเศรษฐกิจตกต่ำ ฝีมือปูนา ไปตลอดรอดฝั่งด้วยครับ

 

PEMDAS ย่อมาจาก ลำดับการคำนวณ Parentheses , Exponentials , Multiply , Divide , Add , Subtract

 

FWGHSO ย่อมาจาก ลำดับการประเมินผลของ query  FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY


#2 ทรงธรรม

ทรงธรรม

    ต่อให้ต้องเรียนจนแก่ ก็จะเรียนต่อไป คนเราพัฒนาได้ทุกคน

  • Members
  • PipPipPip
  • 2,157 posts

ตอบ 16 เมษายน พ.ศ. 2556 - 14:02

เพิ่งไปดูมา ผมเริ่มเขียน โปรแกรมนี้ ตั้งแต่ วันจันทร์ ที่ 8 เม.ย. ตอน 8.43 น. เพิ่งเสร็จ (ยังไม่รู้เสร็จ อะเปล่า) ตอน 12.55 น. วันที่ 16 เม.ย.นี้อะ

 

สิริรวม ก็ ไม่รวม วันเสาร์ เนาะ เพราะผมอยู่บ้านทั้งวัน ก็ 7 วัน ได้อะ

 

ช่วงหลัง นี่ ก็เขียน เกือบทุกวัน อะ หวา ใช้เวลา ตั้ง 56 ชม. โดยประมาณ เลยนะนี่

 

 

อะเพิ่มเติม ผมไปทำ jar file ของ package นี้ มาแล้ว

 

ถ้ามี java runtime environment version 7 น่าจะ เล่นได้เลยนะ

 

ไม่งั้น ต้องเข้า command line หรือ dos อะนะ

 

แล้วพิมพ์ คำสั่ง (เออ ต้องอยู่ใน folder ที่มี jar file นี้ ก่อนนะ

 

java -jar Testpaint.jar

 

แล้ว ก็จะเล่นได้น่ะนะ

 

http://dl-3.one2up.c...8ba85e77af5.jar

 

ถ้าโหลดไปแล้ว เปลี่ยนชื่อ กลับเป็น Testpaint.jar ก่อนเน้อ

 

จะ attach จากที่นี่ให้แล้ว แต่ บอร์ดไม่อนุญาต ประเภท jar file ซะนี่


Edited by ทรงธรรม, 16 เมษายน พ.ศ. 2556 - 15:02.

ขอให้พวกเรา ชาวหลากสี และพันธมิตร จงมีชีวิตรอด จากภาวะเศรษฐกิจตกต่ำ ฝีมือปูนา ไปตลอดรอดฝั่งด้วยครับ

 

PEMDAS ย่อมาจาก ลำดับการคำนวณ Parentheses , Exponentials , Multiply , Divide , Add , Subtract

 

FWGHSO ย่อมาจาก ลำดับการประเมินผลของ query  FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY


#3 IFai

IFai

    รักในหลวง

  • Members
  • PipPipPipPipPip
  • 5,782 posts

ตอบ 17 เมษายน พ.ศ. 2556 - 05:35

     แปะรูปว่าหน้าจอ ตอนเล่นเกมส์เพิ่มให้ดูสักหน่อย ถ้าจะดีนะ


ประโยชน์สูงสุดของประชาชน คือกฏหมายสูงสุดของประเทศ ...วิชา มหาคุณ


#4 ทรงธรรม

ทรงธรรม

    ต่อให้ต้องเรียนจนแก่ ก็จะเรียนต่อไป คนเราพัฒนาได้ทุกคน

  • Members
  • PipPipPip
  • 2,157 posts

ตอบ 17 เมษายน พ.ศ. 2556 - 06:46

An error occurred

 

You are not allowed to used that image extension on this community

 

มันขึ้น แบบนี้ อะครับ พี่ lFai ผมอยาก แนบรูป ใจจะขาด

 

แต่พอผมกดปุ่ม แนบรูป สี่เหลี่ยม สีเขียว อะครับ แล้ว copy url จาก ohozaa มา แล้ว ก็กดตอบ

 

มันก็ขึ้น error อย่างข้างบน มาเลย

 

เออ ผมใช้รูป ที่เป็น jpeg แต่ png ผม ก็เคยใช้ นะ

 

มันขึ้น error ทั้งคู่เลย ผมใช้ modzilla firefox เล่นจากคอม บริษัท

 

ผมแนบรูป ไม่ได้ นานแล้วอะ อยากแนบ ใจจะขาด อะครับ

 

อะนี่ link รูป อะครับ

 

http://image.ohozaa....M3CvAzuIs3EQuNs

 

 

<a href="http://image.ohozaa....M3CvAzuIs3EQuNs" target="_blank"><img border="0" src="http://image.ohozaa..../5f0/O5nKOH.JPG" /></a>

 

ผมใช้ทั้งสองแบบ มัน error ทั้งสองแบบ เซ็ง เลยอะ

 

 

เออ แล้ว เครื่องพี่ มี java runtime environment 7

 

อะเปล่าครับ คือ มันต้องมีก่อน อะครับ

 

ไม่งั้น jar file ผม มันจะเป็น แค่ zip file ธรรมดา

 

เมื่อวาน ผมไปลอง กับเครื่องพี่ชาย ที่บ้าน

 

มันเปิดเล่น ไม่ได้เลย ต้องลง java runtime ก่อนอะ

 

แบบที่ เป็น plug in ให้ internet browser

 

มันไม่มี ฐานข้อมูล ของ class เบื้องต้น ของ java อะครับ

 

มันเลยเล่นไม่ได้


Edited by ทรงธรรม, 17 เมษายน พ.ศ. 2556 - 06:50.

ขอให้พวกเรา ชาวหลากสี และพันธมิตร จงมีชีวิตรอด จากภาวะเศรษฐกิจตกต่ำ ฝีมือปูนา ไปตลอดรอดฝั่งด้วยครับ

 

PEMDAS ย่อมาจาก ลำดับการคำนวณ Parentheses , Exponentials , Multiply , Divide , Add , Subtract

 

FWGHSO ย่อมาจาก ลำดับการประเมินผลของ query  FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY


#5 ทรงธรรม

ทรงธรรม

    ต่อให้ต้องเรียนจนแก่ ก็จะเรียนต่อไป คนเราพัฒนาได้ทุกคน

  • Members
  • PipPipPip
  • 2,157 posts

ตอบ 17 เมษายน พ.ศ. 2556 - 12:37

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 = 75, y = 91;
	static int x1 = 125, y1 = 91;
	static int x2 = 100, y2 = 116;
	static int x3 = 150, y3 = 116;
	static int x4 = 175, y4 = 91;
	static int x5 = 225, y5 = 91;
	static int x6 = 200, y6 = 116;
	static int x7 = 250, y7 = 116;
	static int ox = 100, oy = 266;
	static int ox1 = 150, oy1 = 266;
	static int ox2 = 75, oy2 = 241;
	static int ox3 = 125, oy3 = 241;
	static int ox4 = 200, oy4 = 266;
	static int ox5 = 250, oy5 = 266;
	static int ox6 = 175, oy6 = 241;
	static int ox7 = 225, oy7 = 241;
	static int bx = 48, 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 = 48;
		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(74, by, 274, 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 < 51 || temX > 274 || 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 <= 73 || YMinus <= 88) && hint.equals("leftUp")) {
			return false;
		} else if ((XPlus > 250 || YMinus <= 88) && hint.equals("rightUp")) {
			return false;
		} else if ((YPlus > 266 || XMinus <= 73) && hint.equals("leftDown")) {
			return false;
		} else if ((XPlus > 250 || 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 {
				System.out.println("This here");
				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

	}
}

มีความผิดพลาด ด้าน พิกัด อยู่เล็กน้อย

 

เพราะหมาก ที่ถูกกินไปแล้ว โดยเฉพาะ สีส้ม อยู่ใกล้กับกระดาน เกินไป

 

เลยทำให้ การคำนวณ ผิดพลาด

 

ก็เลย ขยับกระดาน ออกมาแล้ว ขออภัย ด้วยครับ

 

 

http://dl-6.one2up.c...65391ed0b2a.jar

 

ลิงค์ อันใหม่ ขอรับ

 

อ้ออันเก่า ตก class นี้ ไปครับ

 

import java.awt.Point;

public class MyPoint extends Point {
	String name;
	MyPoint(){
		
	}
	MyPoint(String n){
		name = n;
	}
	public String toString(){
		return name;
	}
}

ขอให้พวกเรา ชาวหลากสี และพันธมิตร จงมีชีวิตรอด จากภาวะเศรษฐกิจตกต่ำ ฝีมือปูนา ไปตลอดรอดฝั่งด้วยครับ

 

PEMDAS ย่อมาจาก ลำดับการคำนวณ Parentheses , Exponentials , Multiply , Divide , Add , Subtract

 

FWGHSO ย่อมาจาก ลำดับการประเมินผลของ query  FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY


#6 ปุถุชน

ปุถุชน

    มหาเมพ

  • Members
  • PipPipPipPipPipPipPip
  • 27,531 posts

ตอบ 20 เมษายน พ.ศ. 2556 - 06:31

เข้ามาชมกระทู้...


เคียงข้างลุงกำนัน ปฏิรูปการเมืองไทย กำจัดระบอบทักษิณ ขับไล่มวลหมู่ขี้ข้า วันที่ 26 พฤษภาคม 2557...


#7 เคนอิจิ-นามิ

เคนอิจิ-นามิ

    สมาชิกขั้นสูง

  • Banned
  • PipPipPipPip
  • 4,447 posts

ตอบ 21 เมษายน พ.ศ. 2556 - 08:53

โห.. ขมักเขม่น :)

ตรรกของผมที่แตกต่างจากสมาชิกคนอื่นใน สรท นิ๊ดเดียว  :D http://webboard.seri...e-3#entry634878

รอแมงวันหน้าสันขวานดิ้นดุ๊กดิ้กมาขอขมาอยู่นะ http://webboard.seri...-แวร์/?p=609037

ความตอแหลขอไอ้แมงวัน  http://webboard.seri...-แวร์/?p=609177

 


#8 hentai

hentai

    เมพ

  • Members
  • PipPipPipPipPip
  • 6,046 posts

ตอบ 22 เมษายน พ.ศ. 2556 - 12:51

กินสองต่อ แล้ว ค้างไปเลย...  หรือว่า ไม่มีกินสองต่อ.. 

 

ผมว่าท่านเขียนได้ขนาดนี้  basic ท่านมีครบแล้ว..   เหลือแต่ความชำนาญ..

ผมว่าท่านทำให้ มันยากเกินความจำเป็นไป...    ท่านเลยต้องเขียน เยอะมาก..  

เลยทำให้ทุกอย่างดูยาก

 

 

ลองใช้ array แทน..  mark1,2,3  x1,2,3   y1,2,3...  

ทุกอย่างจะสั้นลงมาก..

 

ลอง ใช้ Object แทน..   "String" + "Rectangle"  

 

ลองใช้ array[8][8]  แทน board  จะทำให้ ทุกอย่างง่ายขึ้นเยอะ...

 

ผมไม่ได้อ่าน ห้องนี้... ถ้าไง ... PM มาครับ..  จะแนะนำให้... 

 

:D


"คนโง่มักจะชอบว่าคนอื่นว่าโง่"

"ถ้าคนเราคิดเหมือนกันหมด ก็ไม่มีเลือกตั้งซิครับ"

"ผมไม่พูด เรื่อง 112 แล้ว นะครับ กรุณาอย่าถาม (17 พค 2012)"


#9 คนดีทั่วไป

คนดีทั่วไป

    น้องเก่า

  • Banned
  • PipPip
  • 99 posts

ตอบ 22 เมษายน พ.ศ. 2556 - 14:34

เห็นความพยายามของคุณทรงธรรมแล้วนับถือ มีความพยายามเรียนรู้สูง แต่อาจจะยังไม่ค่อยเข้าใจแนวคิดของ object-oriented เท่าไหร่ ขออนุญาตแนะนำ อย่าคิดว่าเป็นการสอนเลยนะครับ
 
คุณทรงธรรมอย่าเพิ่งกระโดดลงไปทำ coding ให้พยายามทำความเข้าใจแนวคิดของ OO ก่อน ด้วยการ modeling คลาสต่างๆ ทั้งหมดในโดเมนที่เกมของเราครอบคลุมให้เหมาะสมเสียก่อน
 
อย่างที่ยกตัวอย่างให้ดูในอีกกระทู้หนึ่งเรื่องคลาสช้าง เสือ ฯลฯ อยากให้เห็นว่ามันเป็นการจำลองสิ่งของหรือ object นั่นเอง ซึ่งสิ่งของดังกล่าวอาจจะเป็นรูปธรรมเช่นช้าง ม้า เสือ หรือเป็นนามธรรม เช่น การล่าเหยื่อ เราสามารถสร้างคลาสช้างได้ การล่าเหยื่อได้ แล้วก็สร้าง object ของคลาสนั้นๆ  เช่นช้างชื่อพลายพังพาบ การล่าเหยื่อครั้งที่ 1 การล่าเหยื่อครั้งที่ 2 ฯลฯ แต่เราไม่สามารถสร้างคลาสของกิริยาได้ เช่น คลาสของล่าเหยื่อ คลาสของคำราม เพราะมันไม่มี object ของสิ่งของนั้นๆ
 
อันนี้ก็เหมือนกัน เรากำลังจะสร้างเกมหมากฮอส เราก็ต้องมองทั้งโดเมนของเราว่ามันมี object อะไรเข้ามาเกี่ยวข้อง
วิธีที่ง่ายๆ ก็คือลองเขียนอธิบายเกมที่เรากำลังจะเขียน แล้วดูว่ามีคำนามอะไรบ้างในนั้น เช่น
 
"เกมหมากฮอสคือเกมที่มีผู้เล่น 2 ฝั่ง เล่นบนกระดานที่มีช่องสี่เหลี่ยมขนาด 8 x 8 ช่อง ผู้เล่นแต่ละฝั่งมีกองทัพของเบี้ยฝั่งละ 8 ตัว ฝั่งหนึ่งเป็นเบี้ยสีขาว อีกฝั่งเป็นเบี้ยสีดำ ผลัดกันเดินคนละตาตาม "กฎ" การเดินโดยที่การเดินต้องเดินทแยงมุมไปเรื่อยๆ มีการกินกันโดยการเดินทับช่องกัน...เมื่อเดินไปถึงอีกฝั่ง เบี้ยจะเปลี่ยนสถานะเป็นเบี้ยแบบฮอสซึ่งเป็นเบี้ยอีกแบบที่มีการเดินในระยะไกลขึ้น ฯลฯ"
 
คราวนี้เราก็มาดูว่ามันมีคำนามอะไรบ้างในเกมของเราที่เราจะต้องเอามาสร้างเป็น object ขึ้นมา เราก็จะเห็นว่ามีคำต่างๆ เช่น กระดาน ช่องสีเหลี่ยม ผู้เล่น/กองทัพ  เบี้ยธรรมดา(สีดำ สีชาว) เบี้ยที่เป็นฮอส (สีดำ สีชาว) กฎ ฯลฯ  
 
เมื่อเราแจกแจงคำนามที่น่าจะเป็น object ต่างๆ ที่มีอยู่ภายในขอบเขตหรือโดเมนของเกมของเราแล้ว เราก็สามารถเอาคำนามเหล่านั้นมาสร้างนิยามของ class ขึ้นมา เช่นคลาสกระดาน ผู้เล่น/กองทัพ  เบี้ยธรรมดา เบี้ยที่เป็นฮอส กฎ ฯลฯ  โดยที่ลักษณะและคำกิริยาของ object เหล่านั้นก็จะกลายเป็น attibute และ method ของคลาสนั้นๆ เช่น เบี้ยอาจมีลักษณะเป็นสีขาวหรือสีดำ กิริยาที่มันสามารถทำได้คือการเดินจากช่องหนึ่งไปยังอีกช่องหนึ่งตามที่ "กฎ"อนุญาต  การกินคู่ต่อสู้ เป็นต้น
 
เบี้ยแต่ละอันก็อาจจะเป็น attribute ที่เป็น obect ย่อยของคลาสที่บรรจุมันอยู่ เช่น กองทัพสีขาว มี attribute เป็นเบี้ย 8 ตัว เมื่อสถานะของเบี้ย 8 ตัวในกองทัพสีชาวกลายเป็น dead หมด กองทัพสีชาวก็จะแพ้ เป็นต้น
 
แต่ถ้าเราออกแบบมาแล้วมีคลาสที่ไม่ใช่คำนาม เช่น คลาสชื่อ "กิน" "เดิน" อันนี้เรามาผิดทางแล้ว เราไปติดการเขียนโปรแกรมแบบ procedural language
 
ออกแบบคลาสทั้งหมดให้ครบก่อนว่ามันควรจะมีคลาสอะไรบ้าง เราลืมบรรยายอะไรไปบ้างในการบรรยายลักษณะของเกมในครั้งแรกของเรา มีคลาสอะไรที่จำเป็นต้องเพิ่มขึ้นมาอีกบ้าง คลาสแต่ละคลาสมันมีความสัมพันธ์กันอย่างไร คลาสไหนเป็นส่วนย่อยของคลาสไหน (เช่น คลาสหูช้างเป็นส่วนหนึ่งของคลาสช้าง) แต่ละคลาสมีการทำงานร่วมกับคลาสอื่นอย่างไร ฯลฯ มองในหัวให้มันทำงานครบหมดก่อน ส่วนว่าเราจะแทนค่าเบี้ย 8 ตัวอย่างไร แทนค่าตารางทั้ง 64 ช่องอย่างไร อันนั้นให้ไปศึกษาเรื่อง Data Structure เพื่อเลือกโครงสร้างของบ้อมูลที่เหมาะสมในการแทนสิ่งของนั้นๆ  และต้องใช้ algorithm อะไรในการคำนวนการเดิน (หากเป็นการเล่นกับคอมพิวเตอร์ที่ให้มันเดินเอง) อันนั้นมันจะตามมาทีหลังตอนที่เราทำ coding พอเรามองเห็นภาพทั้งหมดแล้ว เราค่อยกระโดดลงไปทำ coding โปรแกรมของเรามันก็จะมีความเป็นระเบียบเรียบร้อย ออกแบบมาอย่างดี สามารถเพิ่ม/ลดปรับแต่งพฤติกรรมของมันได้ง่าย และเป็น object-oriented
 
เมื่อเชี่ยวชาญขึ้น เราก็กลับมานั่งมองคลาสที่เราออกแบบไว้ เราอาจมองว่าเสือกับช้างมันมีคุณสมบีติร่วมกันคือเป็นสัตว์เลี้ยงลูกด้วยนมมี 4 ขา มีหาง มีปาก กินอาหารได้ ฯลฯ เราก็อาจจะนิยาม superclass ขึ้นมาเป็นคลาสสัตว์เลี้ยงลูกด้วยนมมี 4 ขา มีหาง มีปาก กินอาหารได้  แล้ว inherit (สืบทอด) คุณสมบัติของคลาสดังกล่าวไปเป็นคลาสเสือ คลาสช้าง เราก็จะสามารถ reuse superclass ที่เราได้ออกแบบ/implement มาแล้วได้ ก็จะลดงานที่เราต้องทำลงในการออกแบบคลาสใหม่ๆ ในอนาคต เข่นคลาสกวาง คลาสหมี ฯลฯ
 
ในเกมนี้ก็เหมือนกัน ตัวกระดานกับตัวเบี้ยมันมีคุณสมบัติร่วมกันอย่างหนึ่งคือมันเป็น object ที่สามารถแสดงผลบนจอได้ เราก็อาจจะนิยามคลาสวัตถุซึ่งวาดลงบนหน้าจอได้ แล้ว inherit (สืบทอด) คุณสมบัติของคลาสดังกล่าวลงไปเป็นคลาสกระดาน คลาสเบี้ย ฯลฯ
 
หวังว่าคงจะมีประโยขน์กับคุณทรงธรรม


#10 เคนอิจิ-นามิ

เคนอิจิ-นามิ

    สมาชิกขั้นสูง

  • Banned
  • PipPipPipPip
  • 4,447 posts

ตอบ 22 เมษายน พ.ศ. 2556 - 19:48

การเข้าใจ OO (object-oriented) เป็นอะไรที่ยากนะครับ ถ้าไปฝึกการโปรแกรมแบบ procedural แบบเดิมๆ 

สมัยเรียน เรียน2 ปีสุดท้าย แต่ตอนนั้น ยังไม่ฮิตในโลกโปรแกมมมิ่ง(เมืองไทย)เท่าไหร่ 

ต้องใช้ประสบการณ์ และการแนะนำจากคนที่รู้มากกว่าเรา และไม่ยึดติดแนวความคิดเดิม เลยทำให้หลุดกรอบตรงนั้นมาได้ 

 

อ่านที่คุณ คนดีแนะนำ แล้ว ฮือ...เหนื่อยแทน^^ 

แต่ทำได้ จะดีไม่ใช่น้อย และจะไม่ยึดติด  

 

แต่เรื่อง data structure และ algorithm เป็นอะไรที่ ใช้เสมอ อ่านให้เข้าใจแล้วไปอ่านเรื่อง OOP ได้เลย 

 

OO ถือเป็น data structure ที่ทำงานได้ด้วยตัวเอง 

เพราะฉนั้น พื้นฐาน เอาให้ดีไปเลยนะครับ 


ตรรกของผมที่แตกต่างจากสมาชิกคนอื่นใน สรท นิ๊ดเดียว  :D http://webboard.seri...e-3#entry634878

รอแมงวันหน้าสันขวานดิ้นดุ๊กดิ้กมาขอขมาอยู่นะ http://webboard.seri...-แวร์/?p=609037

ความตอแหลขอไอ้แมงวัน  http://webboard.seri...-แวร์/?p=609177

 


#11 เคนอิจิ-นามิ

เคนอิจิ-นามิ

    สมาชิกขั้นสูง

  • Banned
  • PipPipPipPip
  • 4,447 posts

ตอบ 23 เมษายน พ.ศ. 2556 - 08:38

กินสองต่อ แล้ว ค้างไปเลย... หรือว่า ไม่มีกินสองต่อ..

ผมว่าท่านเขียนได้ขนาดนี้ basic ท่านมีครบแล้ว.. เหลือแต่ความชำนาญ..
ผมว่าท่านทำให้ มันยากเกินความจำเป็นไป... ท่านเลยต้องเขียน เยอะมาก..
เลยทำให้ทุกอย่างดูยาก


ลองใช้ array แทน.. mark1,2,3 x1,2,3 y1,2,3...
ทุกอย่างจะสั้นลงมาก..

ลอง ใช้ Object แทน.. "String" + "Rectangle"

ลองใช้ array[8][8] แทน board จะทำให้ ทุกอย่างง่ายขึ้นเยอะ...

ผมไม่ได้อ่าน ห้องนี้... ถ้าไง ... PM มาครับ.. จะแนะนำให้...

:D

คุณเห็นเข้ามาตามดราม่าเท่านั้นสินะ :D


จขกท เขาเรียนด้วยตัวเอง มา 2-3 เดือนละ (เท่าที่เห็น)
อยากทำเกมส์ เริ่มที่ จาวา
ผมเคยแนะให้ไปโหลด source มาหัดประยุกต์ใช้ก่อน แล้วค่อยทำความเข้าใจ datastructure ทีละเปราะ
ส่วนผม มิได้ใช้ จาวา เลย ไม่รู้จะแนะยังไง

อยากแทรกเรื่อง oo ให้ ก็ไม่รู้จะแทรกเมื่อไหร่ดี

Edited by เคนอิจิ-นามิ, 23 เมษายน พ.ศ. 2556 - 08:42.

ตรรกของผมที่แตกต่างจากสมาชิกคนอื่นใน สรท นิ๊ดเดียว  :D http://webboard.seri...e-3#entry634878

รอแมงวันหน้าสันขวานดิ้นดุ๊กดิ้กมาขอขมาอยู่นะ http://webboard.seri...-แวร์/?p=609037

ความตอแหลขอไอ้แมงวัน  http://webboard.seri...-แวร์/?p=609177

 


#12 คนดีทั่วไป

คนดีทั่วไป

    น้องเก่า

  • Banned
  • PipPip
  • 99 posts

ตอบ 23 เมษายน พ.ศ. 2556 - 10:21

คุณทรงธรรมดูแล้วพอจะเข้าใจหลักการเขียนโปรแกรมอยู่บ้าง แต่ยังขาดประสบการณ์อย่างที่คุณ hentai บอก ทำให้เวลาเขียนมันเลยเยิ่นเย้อ ซับซ้อนเกินไป
 
การออกแบบ OO กับการทำ coding มันคนละ skill กัน คุณทรงธรรมควรเริ่มจากการเขียน procedure ให้มันคำนวณอะไรง่ายๆ ก่อน เพียงหนึ่งหรือสอง procedure ก็พอ ฝึกเขียนให้มันกะทัดรัด และไม่มีอะไรที่เกินความจำเป็น เลือกใช้โครงสร้างข้อมูลที่เหมาะสมและ algorithm ที่มีประสิทธิภาพในการทำงาน  แล้วค่อยๆ ขยายให้มันใหญ่ขึ้น แต่ทำงานแบบ procedural language อย่าเพิ่งไปยุ่งกับ OO ไม่งั้นมันจะทำให้งง สร้างคลาสที่ไม่ควรมีออกมา
 
ดูตัวอย่าง source code คนอื่นแบบที่คุณเคนอิจิว่าจะช่วยให้สามารถเรียนรู้วิธีการเขียนโปรแกรมได้เร็วขึ้น 
 
ส่วนการออกแบบ OO มันสามารถทำได้โดยไม่ต้องมีการทำ coding นั่งวาดเอาบนกระดาษก็ได้ครับ 
 
แยก 2 ส่วนออกจากกันแล้วฝึกทีละอย่างไปพร้อมๆ กันก็ได้ แล้วจึงมาเริ่มเขียนโปรแกรมที่ซับซ้อนขึ้นอย่างเกมหมากฮอส โดยเอาความรู้ทั้ง 2 อย่างมารวมกันอีกที
 
อย่าเพิ่งใจร้อน มันจะขาดพื้นฐานที่ดีไป
 
ป.ล. แนะนำให้ใช้ภาษาที่เหมาะกับการเรียนรู้การ coding อย่าง Pascal ก่อน มันไม่มีโน่นนี่นั่นมากเหมือน Java ทำให้เราไม่งง  สามารถ concentrate กับการ coding เพียงอย่างเดียวได้ 

Edited by คนดีทั่วไป, 23 เมษายน พ.ศ. 2556 - 10:25.


#13 hentai

hentai

    เมพ

  • Members
  • PipPipPipPipPip
  • 6,046 posts

ตอบ 23 เมษายน พ.ศ. 2556 - 16:10

กินสองต่อ แล้ว ค้างไปเลย... หรือว่า ไม่มีกินสองต่อ..

ผมว่าท่านเขียนได้ขนาดนี้ basic ท่านมีครบแล้ว.. เหลือแต่ความชำนาญ..
ผมว่าท่านทำให้ มันยากเกินความจำเป็นไป... ท่านเลยต้องเขียน เยอะมาก..
เลยทำให้ทุกอย่างดูยาก


ลองใช้ array แทน.. mark1,2,3 x1,2,3 y1,2,3...
ทุกอย่างจะสั้นลงมาก..

ลอง ใช้ Object แทน.. "String" + "Rectangle"

ลองใช้ array[8][8] แทน board จะทำให้ ทุกอย่างง่ายขึ้นเยอะ...

ผมไม่ได้อ่าน ห้องนี้... ถ้าไง ... PM มาครับ.. จะแนะนำให้...

:D

คุณเห็นเข้ามาตามดราม่าเท่านั้นสินะ :D


จขกท เขาเรียนด้วยตัวเอง มา 2-3 เดือนละ (เท่าที่เห็น)
อยากทำเกมส์ เริ่มที่ จาวา
ผมเคยแนะให้ไปโหลด source มาหัดประยุกต์ใช้ก่อน แล้วค่อยทำความเข้าใจ datastructure ทีละเปราะ
ส่วนผม มิได้ใช้ จาวา เลย ไม่รู้จะแนะยังไง

อยากแทรกเรื่อง oo ให้ ก็ไม่รู้จะแทรกเมื่อไหร่ดี

 

รู้อีก... ตามดราม่า คุณมานั่นแหละ...  

 

ผมว่า จขกท ไม่ได้เรียนทางนี้...  เขียนได้แบบนี้..  ผมว่าใช้ได้นะครับ...  ภูมิใจได้

จริงอยู่ครับ ยังมีข้อบกพร่องอีกเยอะ..   แต่ มันแก้ได้ครับ...  

 

จุดสำคัญคือ...  ทัศนคติ  ต้องอยากเรียน อยากรู้ อยากพัฒนาตัวเองก่อน...    

 

ผมเห็น คนจบ วิด คอม เยอะแยะ... เรียนมา 4 6 ปี...  ยังเขียนได้น้อยกว่า จขกท เลย...  

:D


"คนโง่มักจะชอบว่าคนอื่นว่าโง่"

"ถ้าคนเราคิดเหมือนกันหมด ก็ไม่มีเลือกตั้งซิครับ"

"ผมไม่พูด เรื่อง 112 แล้ว นะครับ กรุณาอย่าถาม (17 พค 2012)"


#14 hentai

hentai

    เมพ

  • Members
  • PipPipPipPipPip
  • 6,046 posts

ตอบ 23 เมษายน พ.ศ. 2556 - 16:16

คุณทรงธรรมดูแล้วพอจะเข้าใจหลักการเขียนโปรแกรมอยู่บ้าง แต่ยังขาดประสบการณ์อย่างที่คุณ hentai บอก ทำให้เวลาเขียนมันเลยเยิ่นเย้อ ซับซ้อนเกินไป
 
การออกแบบ OO กับการทำ coding มันคนละ skill กัน คุณทรงธรรมควรเริ่มจากการเขียน procedure ให้มันคำนวณอะไรง่ายๆ ก่อน เพียงหนึ่งหรือสอง procedure ก็พอ ฝึกเขียนให้มันกะทัดรัด และไม่มีอะไรที่เกินความจำเป็น เลือกใช้โครงสร้างข้อมูลที่เหมาะสมและ algorithm ที่มีประสิทธิภาพในการทำงาน  แล้วค่อยๆ ขยายให้มันใหญ่ขึ้น แต่ทำงานแบบ procedural language อย่าเพิ่งไปยุ่งกับ OO ไม่งั้นมันจะทำให้งง สร้างคลาสที่ไม่ควรมีออกมา
 
ดูตัวอย่าง source code คนอื่นแบบที่คุณเคนอิจิว่าจะช่วยให้สามารถเรียนรู้วิธีการเขียนโปรแกรมได้เร็วขึ้น 
 
ส่วนการออกแบบ OO มันสามารถทำได้โดยไม่ต้องมีการทำ coding นั่งวาดเอาบนกระดาษก็ได้ครับ 
 
แยก 2 ส่วนออกจากกันแล้วฝึกทีละอย่างไปพร้อมๆ กันก็ได้ แล้วจึงมาเริ่มเขียนโปรแกรมที่ซับซ้อนขึ้นอย่างเกมหมากฮอส โดยเอาความรู้ทั้ง 2 อย่างมารวมกันอีกที
 
อย่าเพิ่งใจร้อน มันจะขาดพื้นฐานที่ดีไป
 
ป.ล. แนะนำให้ใช้ภาษาที่เหมาะกับการเรียนรู้การ coding อย่าง Pascal ก่อน มันไม่มีโน่นนี่นั่นมากเหมือน Java ทำให้เราไม่งง  สามารถ concentrate กับการ coding เพียงอย่างเดียวได้ 

 

ผมว่า Pascal มันไม่ out ไปแล้วหรือครับ..   

 

ผมว่า JavaScript นี่แหละครับ...    สามารถใช้แทนได้...   

:D


"คนโง่มักจะชอบว่าคนอื่นว่าโง่"

"ถ้าคนเราคิดเหมือนกันหมด ก็ไม่มีเลือกตั้งซิครับ"

"ผมไม่พูด เรื่อง 112 แล้ว นะครับ กรุณาอย่าถาม (17 พค 2012)"


#15 คนดีทั่วไป

คนดีทั่วไป

    น้องเก่า

  • Banned
  • PipPip
  • 99 posts

ตอบ 23 เมษายน พ.ศ. 2556 - 16:56

 

คุณทรงธรรมดูแล้วพอจะเข้าใจหลักการเขียนโปรแกรมอยู่บ้าง แต่ยังขาดประสบการณ์อย่างที่คุณ hentai บอก ทำให้เวลาเขียนมันเลยเยิ่นเย้อ ซับซ้อนเกินไป
 
การออกแบบ OO กับการทำ coding มันคนละ skill กัน คุณทรงธรรมควรเริ่มจากการเขียน procedure ให้มันคำนวณอะไรง่ายๆ ก่อน เพียงหนึ่งหรือสอง procedure ก็พอ ฝึกเขียนให้มันกะทัดรัด และไม่มีอะไรที่เกินความจำเป็น เลือกใช้โครงสร้างข้อมูลที่เหมาะสมและ algorithm ที่มีประสิทธิภาพในการทำงาน  แล้วค่อยๆ ขยายให้มันใหญ่ขึ้น แต่ทำงานแบบ procedural language อย่าเพิ่งไปยุ่งกับ OO ไม่งั้นมันจะทำให้งง สร้างคลาสที่ไม่ควรมีออกมา
 
ดูตัวอย่าง source code คนอื่นแบบที่คุณเคนอิจิว่าจะช่วยให้สามารถเรียนรู้วิธีการเขียนโปรแกรมได้เร็วขึ้น 
 
ส่วนการออกแบบ OO มันสามารถทำได้โดยไม่ต้องมีการทำ coding นั่งวาดเอาบนกระดาษก็ได้ครับ 
 
แยก 2 ส่วนออกจากกันแล้วฝึกทีละอย่างไปพร้อมๆ กันก็ได้ แล้วจึงมาเริ่มเขียนโปรแกรมที่ซับซ้อนขึ้นอย่างเกมหมากฮอส โดยเอาความรู้ทั้ง 2 อย่างมารวมกันอีกที
 
อย่าเพิ่งใจร้อน มันจะขาดพื้นฐานที่ดีไป
 
ป.ล. แนะนำให้ใช้ภาษาที่เหมาะกับการเรียนรู้การ coding อย่าง Pascal ก่อน มันไม่มีโน่นนี่นั่นมากเหมือน Java ทำให้เราไม่งง  สามารถ concentrate กับการ coding เพียงอย่างเดียวได้ 

 

ผมว่า Pascal มันไม่ out ไปแล้วหรือครับ..   

 

ผมว่า JavaScript นี่แหละครับ...    สามารถใช้แทนได้...   

:D

 

 

อ้าว มัน out ไปแล้วเหรอครับ เผลอแป๊บเดียว  :D 
 



#16 เคนอิจิ-นามิ

เคนอิจิ-นามิ

    สมาชิกขั้นสูง

  • Banned
  • PipPipPipPip
  • 4,447 posts

ตอบ 23 เมษายน พ.ศ. 2556 - 20:37

ผมว่า Pascal มันไม่ out ไปแล้วหรือครับ..   
 
ผมว่า JavaScript นี่แหละครับ...    สามารถใช้แทนได้...   
:D

 
 
อ้าว มัน out ไปแล้วเหรอครับ เผลอแป๊บเดียว  :D

ไม่แป้บล่ะครับ คุณพี่ทั้งสอง... -_- 


ว่าแต่ผมว่าเริ่มที่ java นี่แหละ ดีสุดแล้ว
ไม่ทราบว่า คุณเห็นจะมี class แบบง่ายๆ ให้ จขกท ไปเริ่มได้ไหม
ผมว่า calculator นี่ ดีที่สุด
เป็นแนวทางเริ่มได้ดี
เอาแบบเป็น oop นะ 


ตรรกของผมที่แตกต่างจากสมาชิกคนอื่นใน สรท นิ๊ดเดียว  :D http://webboard.seri...e-3#entry634878

รอแมงวันหน้าสันขวานดิ้นดุ๊กดิ้กมาขอขมาอยู่นะ http://webboard.seri...-แวร์/?p=609037

ความตอแหลขอไอ้แมงวัน  http://webboard.seri...-แวร์/?p=609177

 


#17 RiDKuN_user

RiDKuN_user

    มหาเมพ

  • Members
  • PipPipPipPipPipPipPip
  • 13,167 posts

ตอบ 23 เมษายน พ.ศ. 2556 - 23:53

เขาบอกว่าโปรแกรมเมอร์ที่ดีต้องขี้เกียจครับ

 

พิมพ์อะไรซ้ำๆกันสองสามบรรทัดก็ขี้เกียจแล้ว... ไปทำเป็น function ซะดีกว่า

เรียก function ซ้ำกันหลายๆบรรทัดก็ขี้เกียจ... ทำเป็น loop ดีกว่า

ต้องทำ loop เหมือนกันหลายรอบอีก ขี้เกียจ... แยก loop ไปเป็น function ดีกว่า

ตัวแปรซ้ำกันเยอะ ขี้เกียจ ใช้ array แทนดีกว่า

 

แบบที่คุณทรงธรรมเขียนมาตลอด คือโปรแกรมเมอร์แบบขยันครับ

โปรแกรมเมอร์ส่วนใหญ่เมื่อหัดเขียนก็จะเป็นแบบนี้ เนื่องด้วยความรู้ทางเทคนิคยังอยู่ในระดับพื้นฐาน

และยังประสบการณ์น้อย สำหรับโปรแกรมเล็กๆ ไม่มีปัญหา แต่ถ้าใหญ่กว่านี้ ซับซ้อนกว่านี้ มันจะเริ่มไปไม่ได้

เพราะนับตั้งแต่หลังจากการ save ครั้งแรก ต่อไปก็เรียกว่าการแก้ไขโปรแกรมแล้ว

ดังนั้นการพัฒนาโปรแกรมก็คือการแก้ไขโปรแกรม ซึ่งจะต้องพิจารณา code ที่เคยเขียนไปแล้วเสมอ

ถ้าหากเขียน code ไม่ดี อ่านไม่รู้เรื่อง เราจะไม่สามารถพัฒนาหรือต่อยอดอะไรได้

แก้ bug ก็ไม่ได้ ให้คนอื่นอ่านก็ไม่รู้เรื่อง

 

ที่ผมจะสรุปคือ คุณภาพของ code นั้น สำคัญพอๆ กับ output ของโปรแกรมครับ

เพราะ code ก็เหมือนสภาพแวดล้อมในการทำงาน ถ้า code ไม่ดี ก็เหมือนทำงานในสภาพแวดล้อมที่ไม่ดี

อย่างแรกคือการทำงานก็จะไม่มีประสิทธิภาพ สองคือไม่มีใครอยากจะมาร่วมช่วยเหลือทำงานด้วย

 

ถ้าถามว่า code ดีๆ เป็นยังไง ก็พอจะสรุปคร่าวๆ ได้ตามนี้ครับ

  • มีการแยก function อย่างเหมาะสม ไม่มี code ซ้ำซ้อน
  • function แต่ละ function ไม่ยาวจนเกินไป
  • ตั้งชื่อตัวแปรให้มีความหมาย สามารถเข้าใจได้ง่าย
  • ไม่เอา logic ของโปรแกรมไปปนกับส่วนแสดงผลโดยไม่จำเป็น
  • มีการใช้ list และ array หรือ data structure แบบอื่นๆ ตามความเหมาะสม

ถ้าเขียนดีๆ ผมเชื่อว่าความยาวของโปรแกรมน่าจะลดลงเหลือแค่ 1 ใน 10 ของที่เขียน

และสามารถเข้าใจได้ง่ายกว่านี้ครับ


" ชีวิตผมไม่เคยกลัวอะไรทั้งนั้น ผมกลัวอย่างเดียว...กลัวจะถูกมองว่า 'ขายชาติ' " - The Last Tycoon

~ ทักษิณตาย เสรีไทยไชโย ~

#18 ทรงธรรม

ทรงธรรม

    ต่อให้ต้องเรียนจนแก่ ก็จะเรียนต่อไป คนเราพัฒนาได้ทุกคน

  • Members
  • PipPipPip
  • 2,157 posts

ตอบ 24 เมษายน พ.ศ. 2556 - 07:04

ขอบคุณทุกท่าน มากครับที่แนะนำ

 

เดี๋ยวผม อ่านหนังสือ algorithm ฉบับ ภาษาอังกฤษ ของคุณ เคนอิจิ (เล่มนี้ น่าจะช่วยผมแก้ปัญหา ที่ทุกคนแนะนำให้ผมได้)

 

ที่ให้มา จบ ผมจะลองเขียน หมากฮอท อีกรอบหนึ่งครับ แบบ คนละรูปแบบ กับอันนี้

 

 

แต่ยอมรับ ว่า หนังสือ algorithm data sturcture นี่ยากครับ

 

เพราะผม เรียน คณิตศาสตร์ ถึงแค่ ม.3 แล้วไปเรียน พาณิชย์ ซึ่งมันไม่เน้น คณิต

 

ทำให้ผม ถึง กับอึ้ง ต้องไปเรียน คณิตศาสตร์ เพิ่มเติม ก่อน บ้าง

 

อย่าง ที่ผมถาม เรื่อง sin cos tan นั่นล่ะครับ

 

เพราะผม เรียนมาน้อยมาก เรื่องนั้น

 

 

ผมไป download หนังสือ คณิตศาสตร์ ทั้งไทย ทั้งอังกฤษ มาแล้ว

 

เดี๋ยว ผมอ่าน tutorial java เรื่อง jdbc จบ ซึ่ง คง ไม่เกิน ต้นเดือนหน้า

 

ผมจะเริ่ม เรียน คณิต ศาสตร์ และ อ่าน หนังสือ

 

algorithm ของ คุณ เคนอิจิ (ตอนนี้ เป็นของผม ละน้า) ไปด้วย

 

เรียกว่า ต้องรื้อฟื้น คณิต กันเลยทีเดียว

 

ตอนผมเรียนที่ วัดสุทธิ จำได้ ขนาด เรียน ม.ต้น ยังยากเลย

 

 

จำได้ มีครั้งหนึ่ง อาจารย์ นำข้อสอบ สมการ (แบบ mode hard) มาให้ทำ

 

คะแนน ผม 3 เต็ม 10 น่ะครับ แต่ ก็เกือบทั้งห้อง ได้ คะแนน ไม่ถึงครึ่ง (ยกเว้น คนที่เรียนพิเศษ)

 

ทั้ง ๆ ที่ ผมคิดว่า ผมถนัด สมการ แล้วนะ

 

 

นี่แสดงว่า คณิต นี่ เป็นอะไร ที่ต้องให้ เวลา กับมันมากทีเดียว

 

เผลอ ๆ กว่า ผมจะทำความเข้าใจ กับ หนังสือ algorithm ได้ทั้งหมด

 

อาจต้อง มากกว่า 2 ปี เหมือนกับ หนังสือ ที่ผมอ่านไปก่อนหน้านี้ แต่ไม่จบ

 

เรื่อง computer graphic ยอมรับ ว่า มึน กับ สูตร คณิต เรื่อง vector

 

กับเรื่อง set ค่อนข้างมาก โดยเฉพาะ ที่ มีเรื่อง sin cos tan เข้ามาเกี่ยว

 

 

ก็ ช่วงนี้ ผมอาจยังเขียน สไตล์ เก่า ๆ ไปก่อน เพราะยัง ต้องเรียนให้จบ

 

และ ไม่อยากให้ ความทรงจำ เกี่ยวกับ syntax ของ java เลือนไป

 

 

เออ การเขียนโปรแกรม นี่ ไม่ง่าย จริง ๆ ด้วย ผมคาดว่า ต้องเรียน ไปเรื่อย ๆ

 

จนกว่า จะตาย กันไปข้าง เลยทีเดียว

 

ผม ไม่อยาก out น่ะครับ แหะ ๆ เห็นพูดกัน

 

ก็ เดี๋ยวนี้ ก็พยายาม ไม่เครียด เรื่องเวลาละ ค่อย ๆ เรียนไป

 

แล้วเดี๋ยว ตอนผมเรียน คณิต ม.ปลาย ถ้าผม มีปัญหา ผมจะมาตั้ง คำถาม

 

ใน ชายคาพักใจ ให้ ทุกท่าน ช่วยผม อีกนะครับ


ขอให้พวกเรา ชาวหลากสี และพันธมิตร จงมีชีวิตรอด จากภาวะเศรษฐกิจตกต่ำ ฝีมือปูนา ไปตลอดรอดฝั่งด้วยครับ

 

PEMDAS ย่อมาจาก ลำดับการคำนวณ Parentheses , Exponentials , Multiply , Divide , Add , Subtract

 

FWGHSO ย่อมาจาก ลำดับการประเมินผลของ query  FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY


#19 คนดีทั่วไป

คนดีทั่วไป

    น้องเก่า

  • Banned
  • PipPip
  • 99 posts

ตอบ 24 เมษายน พ.ศ. 2556 - 08:26

ถ้าในเมืองไทยคนใฝ่รู้เหมือนคุณทรงธรรมทุกคน ป่านนี้เมืองไทยก้าวไปไกลกว่านี้เยอะแล้ว  :)



#20 สมาชิกขั้นเทพ

สมาชิกขั้นเทพ

    น้องเก่า

  • Banned
  • PipPip
  • 52 posts

ตอบ 24 เมษายน พ.ศ. 2556 - 11:57

เรื่องสูตรคณิตศาสตร์
ขอแนะนำว่าอ่านให้รู้ก็พอ ไม่ต้องขนาดคำนวณหาได้จริง
เพราะในปัจจุบัน corei7 เทียบกะตอนนั้น 386 มันค่อนข้างจะไร้ความหมายไปแล้ว 5555

คำนวนให้รู้ว่า function,ไหน ดีกว่าแบบไหน เพื่อปรับใช้กับสมองกล
อันนี้ควรทำ
แต่ถ้าเป็นพวก อื่นๆทั่วไปมันไม่จำเป็นครับ :)

สู้ๆๆๆๆๆๆ

#21 พระฤๅษี

พระฤๅษี

    มหาเมพ

  • Members
  • PipPipPipPipPipPipPip
  • 10,127 posts

ตอบ 2 พฤษภาคม พ.ศ. 2556 - 08:54

>>>  เช้าเปิดคอมฯ  เห็น ทรงธรรม..บ่นหาเพลง ( คิดถึง ) ...

....เพลงของ..สุนทราภรณ์...เอื้อ...ร้องเองเลยละ....เลยเอา-

....มาฝาก..ฟังให้เพลินเลยนะ.เพลง.สุนทราภรณ์..อยากฟัง-

....เพลงไร..บอกได้เลย..แต่กระทู้นี้ อะไรก็ไม่รู้..มึน....

 

 



#22 ทรงธรรม

ทรงธรรม

    ต่อให้ต้องเรียนจนแก่ ก็จะเรียนต่อไป คนเราพัฒนาได้ทุกคน

  • Members
  • PipPipPip
  • 2,157 posts

ตอบ 8 พฤษภาคม พ.ศ. 2556 - 12:18

ขอใช้เป็นที่ note เน้อ

 

วิธี package image เข้าไปใน jar file ด้วย eclipse

 

สร้าง folder image ขึ้นที่ ไหน ก็ได้ บรรจุ file image ที่ต้องใช้ให้หมด

 

แล้ว เข้าที่ eclipse ไปที่ package ที่ต้องการ แล้ว copy หรือ cut folder จากที่เราสร้างไว้ มา paste ไว้ที่ ตรงชื่อ package

 

มันจะสร้าง src/package name/image ให้เรา ดังรูป

 

  • delete.png
  • twitter.png
  • facebook.png
 
PE7AmE.PNG

ขอให้พวกเรา ชาวหลากสี และพันธมิตร จงมีชีวิตรอด จากภาวะเศรษฐกิจตกต่ำ ฝีมือปูนา ไปตลอดรอดฝั่งด้วยครับ

 

PEMDAS ย่อมาจาก ลำดับการคำนวณ Parentheses , Exponentials , Multiply , Divide , Add , Subtract

 

FWGHSO ย่อมาจาก ลำดับการประเมินผลของ query  FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY


#23 ทรงธรรม

ทรงธรรม

    ต่อให้ต้องเรียนจนแก่ ก็จะเรียนต่อไป คนเราพัฒนาได้ทุกคน

  • Members
  • PipPipPip
  • 2,157 posts

ตอบ 8 พฤษภาคม พ.ศ. 2556 - 12:23

เวลา เขียน code ให้อ่าน จาก src/package name/image

 

ต้องสร้าง Object ของ ClassLoader ขึ้นมาก่อน (สำคัญมาก ไม่งั้น ไม่ยอม load ให้)

 

โดย ClassLoader cl =  class name.class.getClassLoader();

 

แล้วตอน ที่ ใช้ inputstream ก็ code ดังนี้

 

BufferedImage img = null;
        Image simg = null;
        
        try {
            img = ImageIO.read(cl.getResourceAsStream("" +
                    "river-icon.png"));
            simg = img.getScaledInstance(10, 10, Image.SCALE_DEFAULT);
        } catch (IOException e) {
        }

เป็นอัน เสร็จ พิธี


ขอให้พวกเรา ชาวหลากสี และพันธมิตร จงมีชีวิตรอด จากภาวะเศรษฐกิจตกต่ำ ฝีมือปูนา ไปตลอดรอดฝั่งด้วยครับ

 

PEMDAS ย่อมาจาก ลำดับการคำนวณ Parentheses , Exponentials , Multiply , Divide , Add , Subtract

 

FWGHSO ย่อมาจาก ลำดับการประเมินผลของ query  FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY


#24 ทรงธรรม

ทรงธรรม

    ต่อให้ต้องเรียนจนแก่ ก็จะเรียนต่อไป คนเราพัฒนาได้ทุกคน

  • Members
  • PipPipPip
  • 2,157 posts

ตอบ 11 พฤษภาคม พ.ศ. 2556 - 12:05

ขอใช้พื้นที่ note กันอีกแล้ว

 

การแก้ไข ปัญหา serialversionuid ที่ไม่ตรงกัน

 

เมื่อใช้ map = new hashmap()

 

ตอนที่ ทำการ writeobject จาก map ออกไป จะได้ serialversionuid ที่แตกต่างกับ

 

ตอนที่ ทำการ readobject เข้าสู่ map ซึ่ง local variable ที่เตรียมไว้

 

แม้จะกำหนด class ให้เป็น map เหมือนกันแล้ว

 

แต่ compiler ซึ่งจะ sensitive มาก ก็จะอ่าน serialversionuid ของ local variable ที่เตรียมไว้

 

รองรับ เป็นอีกตัวหนึ่ง ซึ่งเมื่อ serialversionuid ไม่ตรงกัน ก็จะเกิด invalidcastexception เกิดขึ้น

 

ทำให้ไม่สามารถ readobject ได้สำเร็จ

 

จำเป็น ต้อง declare hashmap = new hashmap แทน

 

เพื่อให้ เมื่อ กำหนด local variable เป็น hashmap

 

แล้ว จะได้ serialversionuid ที่ตรงกัน สามารถรองรับ objectinputstream จาก file

 

ที่ class เป็น hashmap ได้ตรงกัน

 

 

สรุป การผ่าน map ทำให้ compiler ไม่สามารถ calculate serialversionuid ที่ตรงกันได้ พอดี


ขอให้พวกเรา ชาวหลากสี และพันธมิตร จงมีชีวิตรอด จากภาวะเศรษฐกิจตกต่ำ ฝีมือปูนา ไปตลอดรอดฝั่งด้วยครับ

 

PEMDAS ย่อมาจาก ลำดับการคำนวณ Parentheses , Exponentials , Multiply , Divide , Add , Subtract

 

FWGHSO ย่อมาจาก ลำดับการประเมินผลของ query  FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY


#25 ทรงธรรม

ทรงธรรม

    ต่อให้ต้องเรียนจนแก่ ก็จะเรียนต่อไป คนเราพัฒนาได้ทุกคน

  • Members
  • PipPipPip
  • 2,157 posts

ตอบ 11 พฤษภาคม พ.ศ. 2556 - 15:39

วิธี ให้ eclipse รู้จัก ภาษาไทย และ ให้ Object character รับภาษาไทยได้

 

ให้เปิด eclipse เข้าไป ไปที่ menu เลือก windows

 

ใน windows เลือกที่ perference จากนั้น เลือกที่ general

 

แล้วมาที่หัวข้อย่อย content type แล้ว ด้านขวาจะเห็น Java Class File

 

แล้วมี +Text อยู่ ให้คลิ้กที่เครืองหมาย + แล้วโปรแกรมจะแตก fold ลงมา

 

จะเห็นภาษาต่างๆ ไล่กันเรื่อยมา - JavaProperties File - Java Source File

 

ให้ไปที่ Java Source File แล้วแตก node ออก คลิกไปที่ GUI Java file

 

จะขึ้นตรง File associations เป็น *.java(locked)

 

ให้พิมพ์ตรง default encoding เป็น utf-8 แล้วกด update จากนั้น ok

 

 

ต่อไป ย้อนกลับไปที่ general อีกครั้ง คราวนี้ ไปที่ node workspace

 

แล้วคลิกที่ตัวมัน จะเห็น Text File encoding เปลี่ยนจาก default

 

เป็น other แล้วเลือก จาก combo box ไปที่ utf-8 กด ok

 

 

ทำ 2 ขั้นตอนนี้ ก็เป็นอันจบ


ขอให้พวกเรา ชาวหลากสี และพันธมิตร จงมีชีวิตรอด จากภาวะเศรษฐกิจตกต่ำ ฝีมือปูนา ไปตลอดรอดฝั่งด้วยครับ

 

PEMDAS ย่อมาจาก ลำดับการคำนวณ Parentheses , Exponentials , Multiply , Divide , Add , Subtract

 

FWGHSO ย่อมาจาก ลำดับการประเมินผลของ query  FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY





ผู้ใช้ 0 ท่านกำลังอ่านกระทู้นี้

สมาชิก 0 ท่าน, ผู้เยี่ยมชมทั่วไป 0 ท่าน และไม่เปิดเผยตัวตน 0 ท่าน