import java.applet.Applet;
import java.awt.*;
import java.util.Random;
public class wzq extends Applet
implements Runnable
{
public void stop()
{
LoopThread = null;
}
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;
}
private int CPUDo(CXY cxy, byte byte0)
{
int ai[] = new int[2];
int ai1[] = new int[2];
int ai2[] = new int[2];
boolean flag = false;
EnterTimes++;
ai2[0] = 0;
for(int i = recLU.x; i <= recRD.x; i++)
{
for(int k = recLU.y; k <= recRD.y; k++)
{
int l = 0;
if(QiPan[i][k] == 0)
{
DoAStep(i, k, byte0);
l = CalcCPU(i, k, 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] = k;
ai2[0] = l;
flag = true;
}
QiPan[i][k] = 0;
}
}
}
if(EnterTimes <= 1)
{
cxy.x = ai[0];
cxy.y = ai1[0];
int j = 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(++j < 2);
}
EnterTimes--;
return ai2[0];
}
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;
}
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 paint(Graphics g)
{
super.paint(g);
for(int i = 0; i < GRIDSUM + 1; i++)
{
g.drawLine(0, i * GRIDWIDTH, GRIDSUM * GRIDWIDTH, i * GRIDWIDTH);
g.drawLine(i * GRIDWIDTH, 0, i * GRIDWIDTH, GRIDSUM * GRIDWIDTH);
}
for(int j = 0; j < GRIDSUM; j++)
{
for(int k = 0; k < GRIDSUM; k++)
drawQi(g, j, k, QiPan[j][k]);
}
}
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;
}
public void mouseDOWNThis(Event event)
{
if(playerdo)
xiazi.put(event.x, event.y);
}
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;
}
}
public wzq()
{
GRIDWIDTH = 18;
GRIDSUM = 18;
QiPan = new byte[GRIDSUM][GRIDSUM];
oAdd = new int[8][2];
playing = false;
playerdo = true;
xy = new CXY();
xiazi = new CXiaZi();
rd = new Random();
recLU = new CXY();
recRD = new CXY();
PosAdd = new int[4][4];
}
public void update(Graphics g)
{
paint(g);
}
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 - 2,
GRIDWIDTH - 2);
return;
case 1: // '\001'
g.setColor(Color.red);
g.fillArc(i * GRIDWIDTH + 2, j * GRIDWIDTH + 2, GRIDWIDTH - 4,
GRIDWIDTH - 4, 0, 360);
return;
case 2: // '\002'
g.setColor(Color.black);
break;
}
g.fillArc(i * GRIDWIDTH + 2, j * GRIDWIDTH + 2, GRIDWIDTH - 4,
GRIDWIDTH - 4, 0, 360);
}
public void start()
{
if(LoopThread == null)
LoopThread = new Thread(this, "wbqloop");
LoopThread.setPriority(1);
LoopThread.start();
}
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(who == 1)
{
lblStatus.setText("\u7EA2\u65B9\u4E0B");
lblStatus.setForeground(Color.red);
}
else
{
lblStatus.setText("\u9ED1\u65B9\u4E0B");
lblStatus.setForeground(Color.black);
}
if(steps < ((GRIDSUM * GRIDSUM) / 100) * 80)
{
passes = 0;
if(who == 1)
{
xiazi.get
whlte.zip_java五子棋
版权申诉
84 浏览量
2022-09-14
23:53:27
上传
评论
收藏 10KB ZIP 举报
小波思基
- 粉丝: 72
- 资源: 1万+
最新资源
- Picasso_v3.1 2.ipa
- chromedriver-mac-arm64.zip
- 蓝zapro.apk
- chromedriver-linux64.zip
- UCAS研一深度学习实验-MNIST手写数字识别python源码+详细注释(高分项目)
- 基于Python和PyTorch框架完成的一个手写数字识别实验源码(带MINIST手写数字数据集)+详细注释(高分项目)
- 基于Matlab在MNIST数据集上利用CNN完成手写体数字识别任务,并实现单层CNN反向传播算法+源代码+文档说明(高分项目)
- NVIDIA驱动、CUDA和Pytorch及其依赖
- 基于SVM多特征融合的微表情识别python源码+项目说明+详细注释(高分课程设计)
- html动态爱心代码一(附源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈