📄 java.txt
字号:
{
int l = 0;
if(QiPan[i][j] == 0)
{
DoAStep(i, j, byte0);
l = CalcCPU(i, j, byte0);
}
if(l > 0)
{
int i1 = 0;
byte byte1;
if(byte0 == 1)
byte1 = 2;
else
byte1 = 1;
if(EnterTimes <= level && steps < ((GRIDSUM * GRIDSUM) / 100) * 80)
i1 = CPUDo(cxy, byte1);
l += i1;
if(l + Math.abs(rd.nextInt()) % 5 > ai2[0] || !flag)
{
ai[0] = i;
ai1[0] = j;
ai2[0] = l;
flag = true;
}
QiPan[i][j] = 0;
}
}
}
if(EnterTimes <= 1)
{
cxy.x = ai[0];
cxy.y = ai1[0];
int k = 0;
do
{
try
{
Thread.sleep(300L);
}
catch(InterruptedException _ex) { }
QiPan[cxy.x][cxy.y] = byte0;
repaint();
try
{
Thread.sleep(300L);
}
catch(InterruptedException _ex) { }
QiPan[cxy.x][cxy.y] = 0;
repaint();
} while(++k < 2);
}
EnterTimes--;
return ai2[0];
}
private void CPUInit()
{
PosAdd[0][0] = 8;
PosAdd[0][1] = -2;
PosAdd[1][0] = -2;
PosAdd[0][2] = 3;
PosAdd[2][0] = 3;
PosAdd[0][3] = 2;
PosAdd[3][0] = 2;
PosAdd[1][1] = -7;
PosAdd[1][2] = -1;
PosAdd[2][1] = -1;
PosAdd[1][3] = -1;
PosAdd[3][1] = -1;
PosAdd[2][2] = 4;
PosAdd[3][3] = 4;
PosAdd[2][3] = 4;
PosAdd[3][2] = 4;
}
private int CalcCPU(int i, int j, byte byte0)
{
CXY cxy = new CXY();
String s = "";
String s1 = "";
String s2 = "";
byte byte1 = 0;
CalcTimes++;
if(byte0 == 1)
byte1 = 2;
else
if(byte0 == 2)
byte1 = 1;
int k = 0;
int l = 0;
do
{
int i1 = 0;
String s3 = "";
String s4 = "";
String s5 = "";
int j1 = 0;
do
{
int k1 = 0;
cxy.x = i;
for(cxy.y = j; MoveAGrid(cxy, l + 4 * j1) && k1 < 6 && QiPan[cxy.x][cxy.y] != byte1; k1++)
if(QiPan[cxy.x][cxy.y] == byte0)
{
if(j1 == 0)
s4 = s4 + "1";
else
s5 = "1" + s5;
i1++;
} else
if(j1 == 0)
s4 = s4 + "0";
else
s5 = "0" + s5;
if(j1 == 0)
s4 = s4 + "2";
else
s5 = "2" + s5;
} while(++j1 < 2);
i1++;
s3 = s5 + "1" + s4;
if(s3.indexOf("11111") != -1)
i1 += 1000;
else
if(s3.indexOf("011110") != -1)
i1 += 500;
else
if(s3.indexOf("211110") != -1 || s3.indexOf("011112") != -1 || s3.indexOf("01110") != -1 || s3.indexOf("01110") != -1 || s3.indexOf("011010") != -1 || s3.indexOf("010110") != -1 || s3.indexOf("11101") != -1 || s3.indexOf("10111") != -1 || s3.indexOf("11011") != -1)
i1 += 100;
else
if(s3.indexOf("21110") != -1 || s3.indexOf("01112") != -1 || s3.indexOf("0110") != -1 || s3.indexOf("211010") != -1 || s3.indexOf("210110") != -1)
i1 += 20;
if(l == 1 || l == 3)
i1 += (i1 * 20) / 100;
k += i1;
} while(++l < 4);
if(CalcTimes <= 1)
k += CalcCPU(i, j, byte1);
else
if(k > 10)
k -= 10;
CalcTimes--;
return k;
}
private int CalcZi(int i, int j, byte byte0)
{
CXY cxy = new CXY();
int k = 0;
int l = 0;
do
{
int i1 = 0;
int j1 = 0;
do
{
cxy.x = i;
cxy.y = j;
if(MoveAGrid(cxy, l + 4 * j1) && QiPan[cxy.x][cxy.y] == byte0)
do
{
if(QiPan[cxy.x][cxy.y] == 0 || QiPan[cxy.x][cxy.y] != byte0)
break;
i1++;
} while(MoveAGrid(cxy, l + 4 * j1));
} while(++j1 < 2);
if(i1 > k)
k = i1;
} while(++l < 4);
return ++k;
}
private boolean CanDo()
{
return steps < ((GRIDSUM * GRIDSUM) / 100) * 80;
}
public void ClearPan()
{
for(int i = 0; i < GRIDSUM; i++)
{
for(int j = 0; j < GRIDSUM; j++)
QiPan[i][j] = 0;
}
scHong = 0;
scHei = 0;
steps = 0;
recLU.x = 8;
recRD.x = 9;
recLU.y = 8;
recRD.y = 9;
haveWin = false;
}
private int DoAStep(int i, int j, byte byte0)
{
if(QiPan[i][j] != 0 || byte0 == 0 || byte0 > 2)
{
return 0;
} else
{
QiPan[i][j] = byte0;
return 1;
}
}
private void FreshRec(int i, int j)
{
if(i - recLU.x < 2)
{
recLU.x = i - 2;
if(recLU.x < 0)
recLU.x = 0;
}
if(recRD.x - i < 2)
{
recRD.x = i + 2;
if(recRD.x >= GRIDSUM)
recRD.x = GRIDSUM - 1;
}
if(j - recLU.y < 2)
{
recLU.y = j - 2;
if(recLU.y < 0)
recLU.y = 0;
}
if(recRD.y - j < 2)
{
recRD.y = j + 2;
if(recRD.y >= GRIDSUM)
recRD.y = GRIDSUM - 1;
}
}
private boolean MoveAGrid(CXY cxy, int i)
{
boolean flag = false;
i %= 8;
int j = cxy.x + oAdd[i][0];
int k = cxy.y + oAdd[i][1];
if(j >= 0 && j < GRIDSUM && k >= 0 && k < GRIDSUM)
{
cxy.x = j;
cxy.y = k;
flag = true;
}
return flag;
}
public void drawQi(Graphics g, int i, int j, int k)
{
switch(k)
{
case 0: // '\0'
g.clearRect(i * GRIDWIDTH + 1, j * GRIDWIDTH + 1, GRIDWIDTH - 1, GRIDWIDTH - 1);
return;
case 1: // '\001'
g.setColor(Color.black);
g.fillArc(i * GRIDWIDTH - 6, j * GRIDWIDTH - 6, GRIDWIDTH - 2, GRIDWIDTH - 2, 0, 360);
return;
case 2: // '\002'
g.setColor(Color.white);
break;
}
g.fillArc(i * GRIDWIDTH - 6, j * GRIDWIDTH - 6, GRIDWIDTH - 2, GRIDWIDTH - 2, 0, 360);
g.setColor(Color.black);
g.drawArc(i * GRIDWIDTH - 6, j * GRIDWIDTH - 6, GRIDWIDTH - 2, GRIDWIDTH - 2, 0, 360);
}
public boolean handleEvent(Event event)
{
if(event.id != 501 || event.target != this)
{
return super.handleEvent(event);
} else
{
mouseDOWNThis(event);
return true;
}
}
public void init()
{
super.init();
LoopThread = null;
oAdd[0][0] = 0;
oAdd[0][1] = -1;
oAdd[1][0] = 1;
oAdd[1][1] = -1;
oAdd[2][0] = 1;
oAdd[2][1] = 0;
oAdd[3][0] = 1;
oAdd[3][1] = 1;
oAdd[4][0] = 0;
oAdd[4][1] = 1;
oAdd[5][0] = -1;
oAdd[5][1] = 1;
oAdd[6][0] = -1;
oAdd[6][1] = 0;
oAdd[7][0] = -1;
oAdd[7][1] = -1;
CPUInit();
setLayout(null);
resize(197, 200);
try
{
image_you = getImage(new URL("http://203.212.5.161/6288/simulator/game/you-win.gif"));
image_phone = getImage(new URL("http://203.212.5.161/6288/simulator/game/phone-win.gif"));
}
catch(MalformedURLException _ex) { }
ac_you = getAudioClip(getCodeBase(), "Ok01.au");
ac_phone = getAudioClip(getCodeBase(), "Ok04.au");
}
public void mouseDOWNThis(Event event)
{
if(playerdo)
xiazi.put(event.x, event.y);
}
public void paint(Graphics g)
{
super.paint(g);
setBackground(new Color(150, 185, 96));
g.clearRect(0, 0, GRIDSUM * GRIDWIDTH + 5, GRIDSUM * GRIDWIDTH + 5);
g.translate(5, 5);
for(int i = 0; i < GRIDSUM; i++)
{
g.drawLine(0, i * GRIDWIDTH, (GRIDSUM - 1) * GRIDWIDTH, i * GRIDWIDTH);
g.drawLine(i * GRIDWIDTH, 0, i * GRIDWIDTH, (GRIDSUM - 1) * GRIDWIDTH);
}
for(int j = 0; j < GRIDSUM; j++)
{
for(int k = 0; k < GRIDSUM; k++)
drawQi(g, j, k, QiPan[j][k]);
}
int l = xy.x;
int i1 = xy.y;
if(l > 0 && i1 > 0 && who != 1)
{
g.setColor(Color.black);
g.drawLine(l * GRIDWIDTH - 3, i1 * GRIDWIDTH - 3, l * GRIDWIDTH + 3, i1 * GRIDWIDTH + 3);
g.drawLine(l * GRIDWIDTH - 3, i1 * GRIDWIDTH + 3, l * GRIDWIDTH + 3, i1 * GRIDWIDTH - 3);
}
if(scHong >= 5)
{
g.drawImage(image_you, 0, 0, this);
if(!haveWin)
{
ac_you.play();
haveWin = true;
}
} else
if(scHei >= 5)
{
g.drawImage(image_phone, 0, 40, this);
if(!haveWin)
{
ac_phone.play();
haveWin = true;
}
}
}
int random(int i)
{
return (int)Math.floor(Math.random() * (double)i);
}
public void run()
{
for(; Thread.currentThread() == LoopThread; xiazi.get(xy))
{
ClearPan();
repaint();
playing = true;
who = (byte)(Math.abs(rd.nextInt()) % 2 + 1);
for(passes = 0; playing && passes < 2;)
{
if(steps < ((GRIDSUM * GRIDSUM) / 100) * 80)
{
passes = 0;
if(who == 1)
{
if(scHong == 0 && scHei == 0)
{
xy.x = 7;
xy.y = 7;
} else
{
xiazi.get(xy);
}
for(; DoAStep(xy.x, xy.y, who) == 0; xiazi.get(xy));
scHong = CalcZi(xy.x, xy.y, who);
FreshRec(xy.x, xy.y);
steps++;
} else
{
if(scHong == 0 && scHei == 0)
{
xy.x = 7;
xy.y = 7;
} else
{
CPUDo(xy, who);
}
for(; DoAStep(xy.x, xy.y, who) == 0; CPUDo(xy, who));
scHei = CalcZi(xy.x, xy.y, who);
FreshRec(xy.x, xy.y);
steps++;
}
} else
{
passes = 2;
}
if(scHong >= 5 || scHei >= 5)
playing = false;
repaint();
who = (byte)((1 - (who - 1)) + 1);
Thread.yield();
}
if(scHong >= 5)
{
Status = "red win";
LoseTimes++;
} else
if(scHei >= 5)
{
Status = "black win";
if(LoseTimes > 0)
LoseTimes--;
} else
{
Status = "notknow!";
}
repaint();
}
}
public void start()
{
if(LoopThread == null)
LoopThread = new Thread(this, "wbqloop");
LoopThread.setPriority(1);
LoopThread.start();
}
public void stop()
{
LoopThread = null;
}
public void update(Graphics g)
{
paint(g);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -