高分给Java补个小游戏?(80后玩过,90后可能看不懂)

给你换个棋码,换个棋盘,自己来。

导入Java . awt . color;

导入Java . awt . font;

导入Java . awt . graphics;

导入Java . awt . graphics 2d;

导入Java . awt . point;

导入Java . awt . event . mouse event;

导入Java . awt . event . mouse listener;

导入javax . swing . jframe;

公共类游戏扩展JFrame实现MouseListener

{

/**

*

*/

private static final long serialVersionUID = 1L;

公共游戏()

{

this . set layout(null);//

This.setTitle(“成三棋”);

this . addmouse listener(this);

this.setSize(800,600);

this . setlocationrelativeto(null);

//窗口位于屏幕的中央

this . setdefaultcloseoperation(JFrame。EXIT _ ON _ CLOSE);

this . setresizable(false);

//窗口大小不能自动调整。

this . set visible(true);

}

公共静态void main(String[] args) {

// TODO自动生成的方法存根

新游戏();

}

/*

*用数组位置来表示棋盘上点的状态。

*不能下棋的地方设为0。

*可以下棋的地方设置为1。

* 2已经下过棋子,颜色为绿色。

* 3已下过棋子,颜色为橙色。

*在放置棋子阶段,如果错过某个位置被对方吃掉,则设置为4。

*/

int[][]position = new int[13][13];

{

for(int I = 0;我& lt=12;i=i+2)

{

如果(我!=6)

{

position[I][I]= 1;

位置[I][12-I]= 1;

位置[I][6]= 1;

position[6][I]= 1;

}

}

}

//定义一个二维数组来存储,24位可以取为1234。

//指示当前状态。

int state = 1;

/*

*用1表示放置棋子(默认)。

*吃棋子用2(点对方棋子)。

*用3表示国际象棋的第一步,即点击自己的棋子。

*用4表示下棋的第二步,即点击相邻的下棋空白点。

*/

//定义棋盘的起始坐标。

int a=60,b=60,c = 60

int x,y,r = c/4;

//定义绿棋已经下过的棋子数。

int green num = 0;

//定义绿方吃掉的棋子数。

int greeneat = 0;

//定义黄色已经玩过的棋子数。

int orangenum = 0;

//定义黄芳吃掉的棋子数。

int orangee at = 0;

//定义棋手的状态。默认情况下,绿色玩家先玩。

布尔绿色=真;

//设置提示信息的字体

Font font =新字体(“中文刻字”,字体。粗体,25);//font字体

//提示玩家下棋。

String s= "请将棋子放在绿色的一面";

String s1= "放在绿色一边的棋子数:";

String s2= "放在黄边的棋子数:";

String s0= "现在是象棋阶段";

字符串s3 = null

//保存之前的信息。

int xx,YY;

公共空白油漆(图形g)

{

super . paint components(g);//清除屏幕并重新绘制

graphics 2d g2d =(graphics 2d)g;

//传递给Graphics2D对象的所有坐标都在一个与设备无关的坐标系中指定,该坐标系称为用户空间,是应用程序使用的坐标系。

g2d.setColor(颜色。黑色);

//画一个棋盘

draw棋盘(g2d,a,b,c);

拉伸件(g2d);

g2d.setColor(颜色。黑色);

g2d.setFont(字体);

g2d .抽绳(s,450,450);

g2d . drawstring(s 1+greennum,350,500);

g2d.drawString(s2+orangenum,350,550);

g2d.drawString("state="+state,50,500);

g2d . drawstring(GREEN+" "+(greennum+orangenum),200,500);

g2d .拉绳(s0,50,550);

如果(s3!=空)

{

g2d .抽绳(s3,500,50);

}

}

//绘制棋子的方法

公共空图纸(图形2D g2d)

{

for(int I = 0;我& lt13;i++)

{

for(int j = 0;j & lt13;j++)

{

int plecesX = a+I * c/2;

int plecesY = b+j * c/2;

if(位置[i][j]==2)//

{

g2d.setColor(颜色。绿色);

g2d.fillOval(plecesX-r,plecesY-r,2*r,2 * r);//用当前颜色填充包围指定矩形框的椭圆。

}

if(位置[i][j]==3)

{

g2d.setColor(颜色。橙色);

g2d.fillOval(plecesX-r,plecesY-r,2*r,2 * r);

}

}

}

}

//绘制棋盘的方法

public void棋盘(Graphics2D g2d,int a,int b,int c)

{

for(int I = 0;我& lt7;i++)

{

g2d.drawLine(a+i*c,b+i*c,a+(6-i)*c,b+I * c);

g2d.drawLine(a+i*c,b+i*c,a+i*c,b+(6-I)* c);

}

g2d.drawLine(a,b+3*c,a+2*c,b+3 * c);

g2d.drawLine(a+4*c,b+3*c,a+6*c,b+3 * c);

g2d.drawLine(a+3*c,b,a+3*c,b+2 * c);

g2d.drawLine(a+3*c,b+4*c,a+3*c,b+6 * c);

}

//判断输赢的方法

公共布尔win(int x,int y)

{

布尔b =假;

如果(x==6)

{

if(position[y][y]= = position[6][y]& amp;& amp

位置[6][y]= =位置[12-y][y])

b =真;

else if(位置[6][0]= =位置[6][2]& amp;& amp

位置[6][0]= =位置[6][4]& amp;& ampy & lt6)

b =真;

else if(位置[6][8]= =位置[6][10]& amp;& amp

位置[6][8]= =位置[6][12]& amp;& ampy & gt6)

b =真;

}

else if(y==6)

{

if(位置[x][x]= =位置[x][6]& amp;& amp

位置[x][x]= =位置[x][12-x])

b =真;

else if(位置[0][6]= =位置[2][6]& amp;& amp

位置[0][6]= =位置[4][6]& amp;& ampx & lt6)

b =真;

else if(position[8][6]= position[10][6]& amp;& amp

位置[8][6]= =位置[12][6]& amp;& ampx & gt6)

b =真;

}

其他

{

if(位置[x][y]= =位置[x][6]& amp;& amp

位置[x][y]= =位置[x][12-y])

b =真;

if(位置[x][y]= =位置[6][y]& amp;& amp

位置[x][y]= =位置[12-x][y])

b =真;

}

返回b;

}

//判断两个棋子相邻的方法

public boolean isnext(int xx,int yy,int x,int y)

{

布尔b =假;

if(x = = xx & amp;& ampy!=yy)//在同一垂直线上

{

if(xx = = 6 & amp;& ampMath.abs(y-yy)==2)//返回绝对值。

b =真;

else if(xx!= 6 & amp& ampMath.abs(y-yy)==(6-Math.min(xx,12-xx)))

b =真;

其他

b =假;

}

else if(y = = YY & amp;& ampx!=xx)//在同一水平线上

{

if(YY = = 6 & amp;& ampMath.abs(x-xx)==2)

b =真;

else if(yy!= 6 & amp& ampMath.abs(x-xx)==(6-Math.min(yy,12-yy)))

b =真;

其他

b =假;

}

其他

b =假;

返回b;

}

//放置棋子的方法state=1

公共void PlacePiece(int x,int y,boolean b)

{

//首先判断棋子是否可以放在这里。

if(位置[x][y]==1)

{

//判断放的是哪个棋子。

//如果绿方放置棋子。

如果(b = =真)

{

position[x][y]= 2;

green num++;

}

//如果棋子放在黄色。

如果(b = =假)

{

位置[x][y]= 3;

orangenum++;

}

//摆放棋子后判断是否有三块相连。

if(win(x,y))

{

//设置当前状态吃对方棋子。

状态= 2;

s=b?“请要求绿方去掉黄方的一块”:“请要求黄方去掉绿方的一块”;

}

其他

{

绿色=b?假:真;

if(orangenum+greennum & lt;18)

{

状态= 1;

s =绿色?“请把棋子放在绿色的一边”:“请把棋子放在黄色的一边”;

}

其他

{

S0= "现在是象棋阶段";

状态= 3;

s =绿色?“请走绿色:点击自己的棋子”:“请走黄色:点击自己的棋子”;

}

}

}

其他

{

s =绿色?“请点击绿色边的有效棋点”:“请点击黄色边的有效棋点”;

}

}

//去掉别人的棋子state=2

public void Remove(int x,int y,boolean b)

{

//如果绿方下棋,

如果(b = =真)

{

//判断对方棋子是否被点击。

if(位置[x][y]==3)

{

//如果点击成功。

如果(!win(x,y))

{

position[x][y]= 4;

绿色=假;

orangee at++;

if(greennum+orangenum & lt;18)

{

状态= 1;

S= "请让黄方下棋";

}否则

{

状态= 3;

S= "请黄芳下棋:点自己的棋子";

}

}

其他

{

S= "请点击对方有效棋子上的绿色边";

}

}

其他

{

S= "请点击绿色边的对方棋子!";

}

}

其他

{

//判断对方棋子是否被点击。

if(位置[x][y]==2)

{

如果(!win(x,y))

{

position[x][y]= 4;

绿色=真;

greeneat++;

if(greennum+orangenum & lt;18)

{

状态= 1;

S= "请让绿方下棋";

}

其他

{

状态= 3;

S= "请走绿色:点击您自己的作品";

}

}

其他

{

S= "请点击对方有效棋子";

}

}

其他

{

S= "请点击对方的棋子!";

}

}

}

//象棋第一步:点击自己的棋子状态=3。

public void zouqione(int x,int y)

{

//判断目前谁应该下棋

//如果绿方走棋,

if(绿色= =真)

{

//判断绿色棋子是否被点击。

if(位置[x][y]==2)

{

xx = x;

YY = y;

S= "请点击绿色边放置";

状态= 4;

}

其他

{

S= "请走绿色:点击您自己的作品";

}

}

其他

{

//判断黄色棋子是否被点击。

if(位置[x][y]==3)

{

xx = x;

YY = y;

S= "请点击要放置的位置";

状态= 4;

}

其他

{

S= "请黄芳下棋:点自己的棋子";

}

}

}

//国际象棋第一步:点击新位置state=4。

public void zouqitwo(int x,int y)

{

//判断点击的位置是否空闲。

if(position[x][y]= = 1 | | position[x][y]= = 4)

{

//如果点击的位置相邻。

if(isnext(xx,yy,x,y))

{

//更改位置的属性

位置[xx][YY]= 1;

如果(绿色)

position[x][y]= 2;

如果(!绿色)

位置[x][y]= 3;

//判断是不是三。

if(win(x,y))

{

//设置状态吃对方一颗棋子。

状态= 2;

s =绿色?“请要求绿方去掉黄方的一块”:“请要求黄方去掉绿方的一块”;

}

其他

{

绿色=绿色?假:真;

s =绿色?“请走绿色:点击自己的棋子”:“请走黄色:点击自己的棋子”;

//将状态设置为对手的移动。

状态= 3;

}

}否则

{

s =绿色?“请点击绿色边的相邻棋位”:“请点击黄色边的相邻棋位”;

}

}

其他

{

s =绿色?“请点击可放置的绿色边”:“请点击可放置的黄色边”;

}

}

@覆盖

public void mouse clicked(mouse event e){

point p = e . get point();

//getpoint()选择一个点。

if(p . x & gt;a-c/4 & amp;& ampp.x & lta+6 * c+c/4 & amp;& ampp.y & gtb-c/4 & amp;& ampp.y & ltb+6*c+c/4)

{

x =(p . x-a+c/4)* 2/c;

y =(p . y-b+ c/4)* 2/c;

//处理下棋

if(state==1)

PlacePiece(x,y,绿色);

else if(state==2)

移除(x,y,绿色);

else if(state==3)

zouqione(x,y);

else if(state==4)

zouqitwo(x,y);

if(9-greeneat & lt;3)

{

S3=“绿方输了!”;

S= "游戏结束";

//移除鼠标监视器

this . remove mouse listener(this);

}

if(9-orangee at & lt;3)

{

S3=“黄芳输了!”;

S= "游戏结束";

//移除鼠标监视器

this . remove mouse listener(this);

}

repaint();

//对于你画的东西,比如画布,自定义图像,你需要自己写程序来控制。

}

其他

{

}

}

public void mouse pressed(mouse event e){ }

public void mouse released(mouse event e){ }

public void mouse enter(mouse event e){ }

public void mouse exited(mouse event e){ }

}