亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? aithread.java

?? J2ME的游戲原代碼!希望能幫助有需要幫助的師兄弟們!..
?? JAVA
字號:
/*機(jī)器人思考算法來自網(wǎng)絡(luò)  僅做稍許修改*/
package fivegame;

import java.util.Random;
import java.util.Vector;


public class AIThread extends Thread {

	MainGamePlayWithAI boardCanvas;
	static Random rand = new Random();
	static byte computerSide = 1;
	static byte userSide = 2;
	static final int dValuesWhen2SidesSelf[] = { 0, 1, 8, 16, 1024, 32767,
			-32767 };
	static final int dValuesWhen1SideSelf[] = { 0, 0, 4, 8, 16, 32767, -32767 };
	static final int dValuesWhen0SideSelf[] = { 0, 0, 0, 0, 0, 32767, -32767 };
	static final int dValuesSelf[][] = { dValuesWhen0SideSelf,
			dValuesWhen1SideSelf, dValuesWhen2SidesSelf };
	static final int dValuesWhen2SidesEnemy[] = { 0, 0, -4, -8, -512, -32767,
			32767 };
	static final int dValuesWhen1SideEnemy[] = { 0, 0, -2, -4, -6, -32767,
			32767 };
	static final int dValuesWhen0SideEnemy[] = { 0, 0, 0, 0, 0, -32767, 32767 };
	static final int dValuesEnemy[][] = { dValuesWhen0SideEnemy,
			dValuesWhen1SideEnemy, dValuesWhen2SidesEnemy };
	static Pattern patterns[] = { new Pattern("WOM.", 1),
			new Pattern("WMO.", 1), new Pattern("WOMM.", 2),
			new Pattern("WMOM.", 2), new Pattern("WMMO.", 2),
			new Pattern("WOMMM.", 8), new Pattern("WMOMM.", 8),
			new Pattern("WMMOM.", 8), new Pattern("WMMMO.", 8),
			new Pattern("WOMMMM.", 16384), new Pattern("WMOMMM.", 16384),
			new Pattern("WMMOMM.", 16384), new Pattern("WMMMOM.", 16384),
			new Pattern("WMMMMO.", 16384), new Pattern("XOM.", 1),
			new Pattern("XMO.", 1), new Pattern("XOMM.", 2),
			new Pattern("XMOM.", 2), new Pattern("XMMO.", 2),
			new Pattern("XOMMM.", 8), new Pattern("XMOMM.", 8),
			new Pattern("XMMOM.", 8), new Pattern("XMMMO.", 8),
			new Pattern("OMMMM", 16384), new Pattern("MOMMM", 16384),
			new Pattern("MMOMM", 16384), new Pattern("MMMOM", 16384),
			new Pattern("MMMMO", 16384), new Pattern(".OM.", 1),
			new Pattern(".MO.", 1), new Pattern(".OMM.", 2),
			new Pattern(".MOM.", 2), new Pattern(".MMO.", 2),
			new Pattern(".OMMM.", 8), new Pattern(".MOMM.", 8),
			new Pattern(".MMOM.", 8), new Pattern(".MMMO.", 8),
			new Pattern("OMMMMM", -16384), new Pattern("MOMMMM", -16384),
			new Pattern("MMOMMM", -16384), new Pattern("MMMOMM", -16384),
			new Pattern("MMMMOM", -16384), new Pattern("MMMMMO", -16384),
			new Pattern(".OMMMM.", 16384), new Pattern(".MOMMM.", 16384),
			new Pattern(".MMOMM.", 16384), new Pattern(".MMMOM.", 16384),
			new Pattern(".MMMMO.", 16384), new Pattern("MWO.", 1),
			new Pattern("MWWO.", 1), new Pattern("MWWWO.", 2),
			new Pattern("MWOW.", 1), new Pattern("MWWOW.", 2),
			new Pattern("MWOWW.", 2), new Pattern("WOWWW", 256),
			new Pattern("WWOWW", 256), new Pattern("WWWOW", 256),
			new Pattern("WWWWO", 256), new Pattern("WWOWWW.", 256),
			new Pattern("WWWOWW.", 256), new Pattern("WWWWOW.", 256),
			new Pattern(".WWO.", 4), new Pattern(".WOW.", 4),
			new Pattern(".WWOW.", 32), new Pattern(".WWWO.", 32) };
	static final int dxs[] = { 1, 1, 0, -1, -1, -1, 0, 1 };
	static final int dys[] = { 0, 1, 1, 1, 0, -1, -1, -1 };

	public AIThread(MainGamePlayWithAI boardcanvas) {
		boardCanvas = boardcanvas;
	}

	static boolean nearToExistedStones(int i, int j, byte abyte0[][]) {
		for (int k = Math.max(0, i - 1); k <= Math.min(14, i + 1); k++) {
			for (int l = Math.max(0, j - 1); l <= Math.min(14, j + 1); l++)
				if (abyte0[k][l] != 0)
					return true;

		}

		return false;
	}

	public void run() {
		if (boardCanvas.side != computerSide)
			return;
		byte abyte0[][] = new byte[15][];
		byte abyte1[][] = new byte[15][];
		byte abyte2[][] = new byte[15][];
		for (int i1 = 0; i1 < 15; i1++) {
			abyte0[i1] = new byte[15];
			abyte1[i1] = new byte[15];
			abyte2[i1] = new byte[15];
		}

		for (int i = 0; i < 15; i++) {
			for (int k = 0; k < 15; k++) {
				abyte0[i][k] = MainGamePlayWithAI.Board[i][k];
				abyte1[i][k] = 0;
				abyte2[i][k] = 0;
			}

		}

		Vector vector = new Vector();
		for (int j = 0; j < 15; j++) {
			for (int l = 0; l < 15; l++)
				if (nearToExistedStones(j, l, MainGamePlayWithAI.Board)
						&& MainGamePlayWithAI.Board[j][l] == 0) {
					OneStep onestep = new OneStep();
					onestep.x = j;
					onestep.y = l;
					abyte0[j][l] = computerSide;
					onestep.value = -dynamicEval(abyte0, userSide, j, l, 0);
					abyte0[j][l] = 0;
					vector.addElement(onestep);
				}

		}

		sortFirstGroup(vector);
		int j1 = ((OneStep) vector.elementAt(0)).value;
		int k1 = 0;
		k1 = 0;
		do {
			if (k1 >= vector.size())
				break;
			OneStep onestep1 = (OneStep) vector.elementAt(k1);
			if (j1 != onestep1.value)
				break;
			k1++;
		} while (true);
		OneStep onestep2 = (OneStep) vector.elementAt(Math.abs(rand.nextInt())
				% k1);
		MainGamePlayWithAI.Board[onestep2.x][onestep2.y] = computerSide;
		MainGamePlayWithAI.cursorX = onestep2.x;
		MainGamePlayWithAI.cursorY = onestep2.y;
		boardCanvas.StepRecord[MainGamePlayWithAI.StepIndex][1] = onestep2.x
				* 15 + onestep2.y;
		boardCanvas.repaint();
		boardCanvas.checkWin(MainGamePlayWithAI.Board, onestep2.x, onestep2.y);
		boardCanvas.side = userSide;
	}

	int dynamicEval(byte abyte0[][], int i, int j, int k, int l) {
		byte abyte1[][] = abyte0;
		if (l == 0)
			return staticEval(abyte0, (byte) i, j, k);
		Vector vector = new Vector();
		for (int i1 = 0; i1 < 15; i1++) {
			for (int k1 = 0; k1 < 15; k1++)
				if (nearToExistedStones(i1, k1, abyte0) && abyte0[i1][k1] == 0) {
					OneStep onestep = new OneStep();
					onestep.x = i1;
					onestep.y = k1;
					abyte1[i1][k1] = (byte) i;
					onestep.value = -staticEval(abyte1, (byte) (3 - i), i1, k1);
					abyte1[i1][k1] = 0;
					vector.addElement(onestep);
				}

		}

		int j1 = vector.size();
		j1 = Math.min(j1, 2);
		sort(vector, j1);
		int i2 = -65535;
		for (int l1 = 0; l1 < j1; l1++) {
			OneStep onestep1 = (OneStep) vector.elementAt(l1);
			int j2 = onestep1.x;
			int k2 = onestep1.y;
			abyte1[j2][k2] = (byte) i;
			int l2 = -dynamicEval(abyte0, 3 - i, j2, k2, l - 1);
			abyte1[j2][k2] = 0;
			onestep1.value = l2;
			if (i2 < l2)
				i2 = l2;
		}

		return i2;
	}

	int staticEval(byte abyte0[][], byte byte0, int i, int j) {
		return staticEval1(abyte0, byte0, i, j);
	}

	int staticEval0(byte abyte0[][], byte byte0) {
		int i = 0;
		for (int j = 0; j < 15; j++) {
			int l1 = 1;
			int j3 = 0;
			for (int l4 = 0; l4 < 15; l4++) {
				byte byte1 = abyte0[j][l4];
				if (byte1 != 0 && byte1 == j3)
					l1++;
				else if (byte1 != j3 && j3 != 0) {
					if (l1 > 6)
						l1 = 6;
					int j7 = 0;
					if (l4 - (l1 + 1) >= 0 && abyte0[j][l4 - (l1 + 1)] == 0)
						j7++;
					if (abyte0[j][l4] == 0)
						j7++;
					if (j3 == byte0)
						i += dValuesSelf[j7][l1];
					else
						i += dValuesEnemy[j7][l1];
					l1 = 1;
				}
				j3 = byte1;
			}

		}

		for (int k = 0; k < 15; k++) {
			int i2 = 1;
			int k3 = 0;
			for (int i5 = 0; i5 < 15; i5++) {
				byte byte2 = abyte0[i5][k];
				if (byte2 != 0 && byte2 == k3)
					i2++;
				else if (byte2 != k3 && k3 != 0) {
					if (i2 > 6)
						i2 = 6;
					int k7 = 0;
					if (i5 - (i2 + 1) >= 0 && abyte0[i5 - (i2 + 1)][k] == 0)
						k7++;
					if (abyte0[i5][k] == 0)
						k7++;
					if (k3 == byte0)
						i += dValuesSelf[k7][i2];
					else
						i += dValuesEnemy[k7][i2];
					i2 = 1;
				}
				k3 = byte2;
			}

		}

		for (int l = 0; l < 15; l++) {
			int j2 = 1;
			int l3 = 0;
			int j5 = 0;
			for (int j6 = l; j5 < 15 && j6 < 15; j6++) {
				byte byte3 = abyte0[j6][j5];
				if (byte3 != 0 && byte3 == l3)
					j2++;
				else if (byte3 != l3 && l3 != 0) {
					if (j2 > 6)
						j2 = 6;
					int l7 = 0;
					if (j5 - (j2 + 1) >= 0 && j6 - (j2 + 1) >= 0
							&& abyte0[j6 - (j2 + 1)][j5 - (j2 + 1)] == 0)
						l7++;
					if (abyte0[j6][j5] == 0)
						l7++;
					if (l3 == byte0)
						i += dValuesSelf[l7][j2];
					else
						i += dValuesEnemy[l7][j2];
					j2 = 1;
				}
				l3 = byte3;
				j5++;
			}

		}

		for (int i1 = 0; i1 < 15; i1++) {
			int k2 = 1;
			int i4 = 0;
			int k5 = i1;
			for (int k6 = 0; k5 < 15 && k6 < 15; k6++) {
				byte byte4 = abyte0[k6][k5];
				if (byte4 != 0 && byte4 == i4)
					k2++;
				else if (byte4 != i4 && i4 != 0) {
					if (k2 > 6)
						k2 = 6;
					int i8 = 0;
					if (k5 - (k2 + 1) >= 0 && k6 - (k2 + 1) >= 0
							&& abyte0[k6 - (k2 + 1)][k5 - (k2 + 1)] == 0)
						i8++;
					if (abyte0[k6][k5] == 0)
						i8++;
					if (i4 == byte0)
						i += dValuesSelf[i8][k2];
					else
						i += dValuesEnemy[i8][k2];
					k2 = 1;
				}
				i4 = byte4;
				k5++;
			}

		}

		for (int j1 = 0; j1 < 15; j1++) {
			int l2 = 1;
			int j4 = 0;
			int l5 = 14;
			for (int l6 = j1; l5 >= 0 && l6 < 15; l6++) {
				byte byte5 = abyte0[l6][l5];
				if (byte5 != 0 && byte5 == j4)
					l2++;
				else if (byte5 != j4 && j4 != 0) {
					if (l2 > 6)
						l2 = 6;
					int j8 = 0;
					if (l5 + (l2 + 1) >= 0 && l6 - (l2 + 1) >= 0
							&& abyte0[l6 - (l2 + 1)][l5 + (l2 + 1)] == 0)
						j8++;
					if (abyte0[l6][l5] == 0)
						j8++;
					if (j4 == byte0)
						i += dValuesSelf[j8][l2];
					else
						i += dValuesEnemy[j8][l2];
					l2 = 1;
				}
				j4 = byte5;
				l5--;
			}

		}

		for (int k1 = 14; k1 >= 0; k1--) {
			int i3 = 1;
			int k4 = 0;
			int i6 = 0;
			for (int i7 = k1; i7 >= 0 && i6 < 15; i6++) {
				byte byte6 = abyte0[i6][i7];
				if (byte6 != 0 && byte6 == k4)
					i3++;
				else if (byte6 != k4 && k4 != 0) {
					if (i3 > 6)
						i3 = 6;
					int k8 = 0;
					if (i7 + (i3 + 1) >= 0 && i6 - (i3 + 1) >= 0
							&& abyte0[i6 - (i3 + 1)][i7 + (i3 + 1)] == 0)
						k8++;
					if (abyte0[i6][i7] == 0)
						k8++;
					if (k4 == byte0)
						i += dValuesSelf[k8][i3];
					else
						i += dValuesEnemy[k8][i3];
					i3 = 1;
				}
				k4 = byte6;
				i7--;
			}

		}

		return i;
	}

	int staticEval1(byte abyte0[][], byte byte0, int i, int j) {
		byte0 = (byte) (3 - byte0);
		int k = 0;
		for (int l = 0; l < dxs.length; l++) {
			int i1 = dxs[l];
			int j1 = dys[l];
			StringBuffer stringbuffer = new StringBuffer();
			int k1 = i - i1 * 6;
			int l1 = j - j1 * 6;
			for (int j2 = 0; j2 < 12; j2++) {
				char c = 'X';
				if (k1 >= 0 && k1 < 15 && l1 >= 0 && l1 < 15)
					if (abyte0[k1][l1] == 0)
						c = '.';
					else if (abyte0[k1][l1] == byte0)
						c = 'M';
					else if (abyte0[k1][l1] == 3 - byte0)
						c = 'W';
				if (k1 == i && l1 == j)
					c = 'O';
				stringbuffer.append(c);
				k1 += i1;
				l1 += j1;
			}

			String s = stringbuffer.toString();
			for (int i2 = 0; i2 < patterns.length; i2++)
				if (s.indexOf(patterns[i2].pattern) >= 0)
					k += patterns[i2].value;

		}

		return -k;
	}

	void sort(Vector vector, int i) {
		for (int j = 0; j < Math.min(i, vector.size() - 1); j++) {
			int k = ((OneStep) vector.elementAt(j)).value;
			int l = j;
			for (int i1 = j + 1; i1 < vector.size(); i1++) {
				int j1 = ((OneStep) vector.elementAt(i1)).value;
				if (j1 > k) {
					l = i1;
					k = j1;
				}
			}

			Object obj = vector.elementAt(j);
			vector.setElementAt(vector.elementAt(l), j);
			vector.setElementAt(obj, l);
		}

	}

	void sortFirstGroup(Vector vector) {
		for (int i = 0; i < vector.size() - 1; i++) {
			int j = ((OneStep) vector.elementAt(i)).value;
			int k = i;
			for (int l = i + 1; l < vector.size(); l++) {
				int i1 = ((OneStep) vector.elementAt(l)).value;
				if (i1 > j) {
					k = l;
					j = i1;
				}
			}

			Object obj = vector.elementAt(i);
			vector.setElementAt(vector.elementAt(k), i);
			vector.setElementAt(obj, k);
			if (i > 0
					&& ((OneStep) vector.elementAt(i)).value != ((OneStep) vector
							.elementAt(i - 1)).value)
				return;
		}

	}

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品72免费观看| 国产91精品一区二区麻豆网站| 久久嫩草精品久久久精品| 一本大道久久a久久综合婷婷 | 一区二区三区四区在线播放| 日韩三区在线观看| 欧美午夜精品免费| 高清国产一区二区| 麻豆国产欧美一区二区三区| 亚洲美女屁股眼交| 国产欧美一区二区精品婷婷 | 99精品久久久久久| 精品一区二区三区日韩| 亚洲成人免费观看| 亚洲免费资源在线播放| 国产欧美一区二区三区沐欲| 欧美一区二区性放荡片| 欧美专区日韩专区| 99久久99久久精品免费看蜜桃| 精品一区二区久久久| 亚洲不卡一区二区三区| 一区二区三区久久久| 国产精品污www在线观看| 欧美成人一区二区三区片免费| 欧美色偷偷大香| 色婷婷av一区二区三区gif| 粉嫩av一区二区三区在线播放| 毛片不卡一区二区| 全国精品久久少妇| 丝袜美腿亚洲综合| 日韩黄色一级片| 视频一区中文字幕| 午夜精品视频在线观看| 亚洲图片有声小说| 亚洲成在人线免费| 亚洲成人免费视频| 午夜国产不卡在线观看视频| 一区二区三区高清不卡| 亚洲综合免费观看高清完整版| 亚洲免费大片在线观看| 亚洲免费成人av| 一二三四社区欧美黄| 亚洲另类在线视频| 亚洲国产视频网站| 亚洲大片精品永久免费| 三级欧美韩日大片在线看| 午夜精品久久久久影视| 日本不卡一区二区| 六月丁香综合在线视频| 国产乱一区二区| 成人激情午夜影院| 色婷婷综合五月| 欧美日韩一区二区三区高清| 欧美精品一二三区| 日韩欧美电影一二三| 精品电影一区二区| 国产欧美一区视频| 亚洲精品日日夜夜| 日韩中文字幕av电影| 精品系列免费在线观看| 国产高清精品在线| 色综合天天性综合| 欧美日韩国产综合久久| 欧美一级一区二区| 国产欧美中文在线| 一区二区三区资源| 蜜桃视频第一区免费观看| 国产乱码精品一区二区三区av| 成人性生交大合| 欧美视频三区在线播放| 欧美成人综合网站| 国产精品美日韩| 亚洲午夜视频在线| 久久国产精品区| 成人福利在线看| 6080国产精品一区二区| 国产亚洲精品中文字幕| 一区二区三区中文字幕在线观看| 日韩1区2区3区| 成人激情图片网| 欧美日本一区二区三区四区| 久久伊人中文字幕| 伊人一区二区三区| 激情综合网激情| 欧美自拍丝袜亚洲| 国产亚洲一区字幕| 丝袜诱惑制服诱惑色一区在线观看 | 日韩国产在线观看一区| 欧美色图免费看| 久久蜜桃av一区精品变态类天堂 | 国产欧美精品一区二区色综合 | 精品国产91亚洲一区二区三区婷婷 | 成人爱爱电影网址| 日韩视频中午一区| 亚洲激情欧美激情| 国产精品主播直播| 欧美精选在线播放| 亚洲日穴在线视频| 精品一区二区三区免费视频| 在线精品观看国产| 国产欧美日韩在线看| 日本美女视频一区二区| 在线观看一区日韩| 国产欧美一区二区精品性色超碰| 一区二区欧美国产| 成人黄动漫网站免费app| 日韩欧美卡一卡二| 国产盗摄精品一区二区三区在线 | 日韩一区二区影院| 一区二区三区四区蜜桃| 国产成人av资源| 精品美女在线观看| 日韩国产一二三区| 欧美性生活久久| 综合激情网...| 成人一二三区视频| 26uuu久久综合| 蜜桃av噜噜一区| 欧美精品在线视频| 亚洲午夜电影网| 91浏览器在线视频| 国产精品成人一区二区艾草| 国产精品一区二区无线| 欧美电影免费观看高清完整版在| 午夜在线成人av| 欧美日韩在线亚洲一区蜜芽| 亚洲精品乱码久久久久久日本蜜臀| 国产成人超碰人人澡人人澡| 久久亚洲私人国产精品va媚药| 日韩电影免费在线| 884aa四虎影成人精品一区| 香蕉影视欧美成人| 欧美日韩你懂的| 偷拍与自拍一区| 欧美久久高跟鞋激| 日韩在线一区二区| 欧美一区二区福利视频| 视频在线观看91| 日韩欧美综合在线| 国内久久精品视频| 久久精品亚洲一区二区三区浴池| 国产一区二区视频在线| 久久精品夜色噜噜亚洲aⅴ| 国产成人精品影视| 国产片一区二区| www.在线欧美| 一区二区三区小说| 这里只有精品99re| 精品一区二区三区在线播放| 久久精品亚洲精品国产欧美kt∨| 国产成人在线看| 亚洲欧洲无码一区二区三区| 色呦呦日韩精品| 日韩电影免费一区| 久久精品亚洲国产奇米99| 成人午夜激情视频| 亚洲精品欧美激情| 欧美日韩国产乱码电影| 日本网站在线观看一区二区三区| 欧美电影免费观看高清完整版在线观看| 国产主播一区二区三区| 国产精品久久二区二区| 欧美午夜一区二区三区免费大片| 婷婷丁香久久五月婷婷| 久久久噜噜噜久久中文字幕色伊伊| 国产成人激情av| 亚洲成a天堂v人片| 久久免费的精品国产v∧| 91亚洲午夜精品久久久久久| 天涯成人国产亚洲精品一区av| 久久综合狠狠综合| 欧美综合一区二区三区| 久久精品久久精品| 成人欧美一区二区三区1314 | 91精品国产综合久久婷婷香蕉| 韩国成人在线视频| 一区二区三区**美女毛片| 精品噜噜噜噜久久久久久久久试看 | 亚洲mv在线观看| 欧美一三区三区四区免费在线看| 国产91在线|亚洲| 一区二区三区在线视频免费观看| 337p亚洲精品色噜噜噜| 成人亚洲精品久久久久软件| 亚洲视频狠狠干| 欧美美女视频在线观看| 韩国v欧美v亚洲v日本v| 国产精品久久久久久久久免费相片| 91国产免费看| 夜夜精品视频一区二区| 国产午夜精品美女毛片视频| 国产999精品久久久久久绿帽| 一区二区三区中文字幕精品精品| 3atv一区二区三区| 99在线视频精品| 午夜精品久久久久久不卡8050| 日韩一级片网站| 欧美图片一区二区三区| 国产乱人伦偷精品视频免下载| 国产精品灌醉下药二区|