为什么用java设计五子棋界面时鼠标点的地方不是棋子出来的地方,而是点的地方两个下面

 我来答
makwy
2013-01-09 · 超过35用户采纳过TA的回答
知道答主
回答量:149
采纳率:0%
帮助的人:95.9万
展开全部
代码编写的时候没有考虑棋子宏轿帆贴图的位置

draw 方法贴图蔽雹 是以鼠标点击获取的点对应图片的左上角开始贴图

所以需要在程序里面x,y位置减去图片的长和宽的一半 来锁定中心位置贴帆改图
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
http_p
2013-01-09 · TA获得超过1095个赞
知道小有建树答主
回答量:733
采纳率:100%
帮助的人:583万
展开全部
通过键春监听鼠标点击时世袭的坐标来计算你应该下棋的位置
鼠标监听事件里getX和getY是注册了事件的搜亮兄组件的左上角的相对位置
你再看看你的坐标计算方法是不是哪里算错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
心情影娱
2013-01-09 · 超过29用户采纳过TA的回答
知道答主
回答量:292
采纳率:0%
帮助的人:114万
展开全部
看不懂说什么 最好来个图
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-01-09
展开全部
package ghost.xuanyu.fivechess;
public class FiveChessAI {
private int data_a[][] = new int[5][3];// 用于储存进攻值
private int data_d[][] = new int[5][3];// 用于储存防守值

FiveChessAI() {
// 进攻值的初始化
data_a[1][1] = 2;
data_a[1][2] = 3;
data_a[2][1] = 10;
data_a[2][2] = 110;
data_a[3][1] = 2500;
data_a[3][2] = 3000;
data_a[4][1] = 99999;
data_a[4][2] = 99999;
// 防守值的初始化
data_d[1][1] = 1;
data_d[1][2] = 2;
data_d[2][1] = 1;
data_d[2][2] = 100;
data_d[3][1] = 100;
data_d[3][2] = 500;
data_d[4][1] = 20000;
data_d[4][2] = 50000;
}

private FiveChessMap g1 = new FiveChessMap(); private int x, y;
void find()// 查找最冲此大散渗迅值
{
int max = 0;
for (int i = 0; i < 15; ++i) {
for (int j = 0; j < 15; ++j) {
if (max < g1.data[i][j]) {
max = g1.data[i][j];
}
}
}
for (int i = 0; i < 15; ++i) {
for (int j = 0; j < 15; ++j) {
if (max == g1.data[i][j]) {
x = i;
y = j;
return;
}
}
}
}

int getx()// 返回x坐标值
{
return x;
}

int gety()// 返回y坐标值
{
return y;
}

boolean judge_result(int x, int y, int who, FiveChessMap gm)// 判断胜负
{
int m, n, i, lianzi = 0;
for (m = -1; m <= 1; m++)
for (n = -1; n <= 1; n++) {
if (m != 0 || n != 0) {
for (i = 1; i <= 4; i++) {
if (x + i * m >= 0 && x + i * m < 15 && y + i * n >= 0
&& y + i * n < 15
&& gm.data[x + i * m][y + i * n] == who) {
lianzi++;
} else {
break;
}
}
for (i = -1; i >= -4; i--) {
if (x + i * m >= 0 && x + i * m < 15 && y + i * n >= 0
&& y + i * n < 15
&& gm.data[x + i * m][y + i * n] == who) {
lianzi++;
} else {
break;
}
}
if (lianzi >= 4)

{
return true;
} else {
lianzi = 0;
}
}
}
return false;
}

void judge(int a, FiveChessMap gm)/喊返/ 判断全局攻守值
{
g1.clear();
int b = 3 - a;
int continues1 = 0, continues2 = 0, free = 0;
for (int x = 0; x < 15; ++x) {
for (int y = 0; y < 15; ++y) {
if (gm.data[x][y] == 0) {
for (int m = -1; m <= 1; ++m) {
for (int n = -1; n <= 1; ++n) {
if (m != 0 || n != 0) {
for (int i = 1; i <= 4; ++i) {
if (x + i * m < 15
&& y + i * n < 15
&& x + i * m >= 0
&& y + i * n >= 0
&& gm.data[x + i * m][y + i * n] == a) {
continues1++;
} else {
if (x + i * m < 15
&& y + i * n < 15
&& x + i * m >= 0
&& y + i * n >= 0
&& gm.data[x + i * m][y + i
* n] == 0) {
free++;
}
i = 5;
break;
}
}
for (int i = -1; i >= -4; --i) {
if (x + i * m < 15
&& y + i * n < 15
&& x + i * m >= 0
&& y + i * n >= 0
&& gm.data[x + i * m][y + i * n] == a) {
continues1++;
} else {
if (x + i * m < 15
&& y + i * n < 15
&& x + i * m >= 0
&& y + i * n >= 0
&& gm.data[x + i * m][y + i
* n] == 0) {
free++;
}
i = -5;
break;
}
}
if (continues1 == 1) {
if (free == 1) {
g1.data[x][y] += data_a[1][1];
} else if (free >= 2) {
g1.data[x][y] += data_a[1][2];
}
} else if (continues1 == 2) {
if (free == 1) {
g1.data[x][y] += data_a[2][1];
} else if (free >= 2) {
g1.data[x][y] += data_a[2][2];
}
} else if (continues1 == 3) {
if (free == 1) {
g1.data[x][y] += data_a[3][1];
} else if (free >= 2) {
g1.data[x][y] += data_a[3][2];
}
} else if (continues1 >= 4) {
if (free >= 0) {
g1.data[x][y] += data_a[4][1];
} else if (free >= 2) {
g1.data[x][y] += data_a[4][2];
}
}
free = 0;
// ///////////////////////进攻////////////////////////////////////
for (int i = 1; i <= 4; ++i) {
if (x + i * m < 15
&& y + i * n < 15
&& x + i * m >= 0
&& y + i * n >= 0
&& gm.data[x + i * m][y + i * n] == b) {
continues2++;
} else {
if (x + i * m < 15
&& y + i * n < 15
&& x + i * m >= 0
&& y + i * n >= 0
&& gm.data[x + i * m][y + i
* n] == 0) {
free++;
}
i = 5;
break;
}
}
for (int i = -1; i >= -4; --i) {
if (x + i * m < 15
&& y + i * n < 15
&& x + i * m >= 0
&& y + i * n >= 0
&& gm.data[x + i * m][y + i * n] == b) {
continues2++;
} else {
if (x + i * m < 15
&& y + i * n < 15
&& x + i * m >= 0
&& y + i * n >= 0
&& gm.data[x + i * m][y + i
* n] == 0) {
free++;
}
i = -5;
break;
}
}
if (continues2 == 1) {
if (free == 1) {
g1.data[x][y] += data_d[1][1];
} else if (free >= 2) {
g1.data[x][y] += data_d[1][2];
}
} else if (continues2 == 2) {
if (free == 1) {
g1.data[x][y] += data_d[2][1];
} else if (free >= 2) {
g1.data[x][y] += data_d[2][2];
}
} else if (continues2 == 3) {
if (free == 1) {
g1.data[x][y] += data_d[3][1];
} else if (free >= 2) {
g1.data[x][y] += data_d[3][2];
}
} else if (continues2 >= 4) {
if (free >= 0) {
g1.data[x][y] += data_d[4][1];
} else if (free >= 2) {
g1.data[x][y] += data_d[4][2];
}
}
continues1 = 0;
continues2 = 0;
free = 0;
// ////////////////////////防守///////////////////////
}
}
}
// /////////222222222///////////////////////////////////////////////////////////////////
}
}
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式