[align=center]java二打一棋子求代码,测试可行后50分!
高手有空只当玩玩,帮忙编一下,新手可以当学习编一下,[/align]游戏“二打一棋”:http://baike.baidu.com/view/8852571.htm
这是一个80后小时候玩的小游戏,因为本人java初学,又很想编出来,求高手按百度中的解释把代码帮我改进一下:1.走棋:走在相邻空位上2,吃子方法(如图1.0走动黑子,白子被吃掉系统自己去除,如图2.0走动白子黑子被去除,注意在同一行或同一列中不能有其它棋子)(1.0)
(2.0)
3.判断输赢:有一方棋子数小于1,则这方输;或者有一方棋子不能走动如图3.0
(3.0)
4.人人对战,人机对战,(人机对战可以让电脑随机走动一棋子,优先走在不使一行有单个的)
注:如果能实现网络对战更好!如图没还没有实现走棋子,和判定输赢,另外,下面显示也不对,应该是:
(练走棋步数:___,黄走棋步数___,请绿(黄)点击自己的棋子/请黄点击相邻的空位)界面:
package kangzi.kang.kaioes;import java.awt.*;
import java.awt.event.*;import javax.swing.*;
public class Game extends JFrame implements MouseListener
{
/**
 * 
 */
private static final long serialVersionUID = 1L;
public Game()
{
this.setLayout(null);//
this.setTitle("80后小时候玩的游戏");
this.addMouseListener(this);
this.setSize(800, 600);
this.setLocationRelativeTo(null);
//窗口置于屏幕中央
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
//不可自动调节窗口大小
this.setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
      new Game();
}
/*
 * 用数组position代表棋盘上点的状态
 * 其中不可以下棋的地方设置为0
 * 可以走棋的地方设置为1
 * 有棋子且颜色为绿色的2
 * 有棋子且颜色为橘黄色的3
//定义一个二维数组,用来储存,20个position可取1234
//表示当前的状态*/
int state=3;
/*
 *用1表示放置棋子(默认)
 *用2表示吃棋子(点击对方的棋子)
 *用3表示走棋的第一步,即点击自己的棋子
 *用4表示走棋的第二步,即点击相邻的下棋空白点
 */
//定义棋盘的起始坐标
int a=50,b=50,c=60;
int x,y,r=c/4;
//定义绿棋已经下的棋子数目
int greennum=0;
//定义绿方被吃掉的棋子数目
int greeneat=0;
//定义黄棋已经下的棋子数目
int orangenum=0;
//定义黄方被吃掉的棋子数目
int orangeeat=0;
//定义下棋的人的状态,默认为绿方先下
boolean GREEN=true;

//设置提示信息的字体
Font font=new Font("华文行楷",Font.BOLD,25);//font 字体
//提示玩家下棋信息
String s="请绿方点击自己棋子";
String s1="绿方已放置棋子数目:";
String s2="黄方已放置棋子数目:";
//String s0="现在是放棋阶段";
String s3=null;
    //保存上一步信息
int xx,yy;

public  boolean win(int x,int y)
{

boolean b=false;
if(orangenum<2||greennum<2)
{
b=true;
}
return b;
}

public void paint(Graphics g)
{
super.paintComponents(g);//清屏重绘
Graphics2D g2d=(Graphics2D)g;
//所有传递到 Graphics2D 对象的坐标都在一个与设备无关并且名为用户空间的坐标系统中指定的,这是应用程序使用的坐标系统
g2d.setColor(Color.BLACK);
//画出棋盘
drawchessboard(g2d, a, b, c);
drawpieces(g2d);
g2d.setColor(Color.BLACK);
    g2d.setFont(font);
g2d.drawString(s1, 450, 450);
g2d.drawString(s1+greennum, 350, 500);
g2d.drawString(s2+orangenum, 350, 550);
g2d.drawString("state="+state, 50, 500);
g2d.drawString(GREEN+" "+(greennum+orangenum), 200, 500);
//g2d.drawString(s0,50, 550);
if(s3!=null)
{
g2d.drawString(s3, 500, 50);
}
}

int[][]  position=new int[13][13];
{
for(int i=0;i<=6;i=i+2)
{
for(int j=0;j<=8;j=j+2)
{
   position[i][j]=1;
   position[i][i]=1;
}}

for(int i=0;i<=6;i=i+2)
{
for(int j=0;j<=8;j=j+2)
{
    position[i][0]=2;
position[0][2]=2;
position[6][2]=2;
//greennum++;
}}
for(int i=0;i<=6;i=i+2)
{
for(int j=0;j<=8;j=j+2)
{
position[i][8]=3;
position[0][6]=3;
position[6][6]=3;
//orangeeat++;
}}


   //20个放置点
  


}
//画棋子的方法
public void drawpieces (Graphics2D g2d)
{
for(int i=0;i<13;i++)
{
for(int j=0;j<13;j++)
{
int plecesX=a+i*c/2;
        int plecesY=b+j*c/2;
if(position[i][j]==2)//
{
g2d.setColor(Color.GREEN);
g2d.fillOval(plecesX-r, plecesY-r, 2*r, 2*r);//使用当前颜色填充外接指定矩形框的椭圆
}
if(position[i][j]==3)
{
g2d.setColor(Color.ORANGE);
g2d.fillOval(plecesX-r, plecesY-r, 2*r, 2*r);
}
}
}
}
//画棋盘的方法
public void drawchessboard(Graphics2D g2d,int a,int b,int c)
{

for(int i=0;i<=3;i++){
for(int j=0;j<=4;j++){
g2d.drawLine(a+i*c, b+j*c, a+(3-i)*c, b+j*c);
g2d.drawLine(a+i*c, b+j*c, a+i*c, b+(4-j)*c);
}

}
}



    //判断两颗棋子相邻的方法
public boolean isnext(int xx,int yy,int x,int y)
{
boolean b=false;
if(x==xx&&y!=yy)//在同一竖直线上
{
if(xx==6&&Math.abs(y-yy)==2)//返回绝对值
b=true;
else if(xx!=6&&Math.abs(y-yy)==(6-Math.min(xx, 12-xx)))
b=true;
else
b=false;
}
else if(y==yy&&x!=xx)//在同一水平线上
{
if(yy==6&&Math.abs(x-xx)==2)
b=true;
else if(yy!=6&&Math.abs(x-xx)==(6-Math.min(yy, 12-yy)))
b=true;
else
b=false;
}
else
b=false;
return b;

}

//移除别人的棋子state=2
/* * 用数组position代表棋盘上点的状态
 * 其中不可以下棋的地方设置为0
 * 可以走棋的地方设置为1
 * 有棋子且颜色为绿色的2
 * 有棋子且颜色为橘黄色的3
 * *用4表示走棋的第二步,即点击相邻的下棋空白点
 * */
public void Remove(int x,int y,boolean b)
{
//如果是绿方下棋
if(b==true)
{
//判断点击的是不是对方的棋子
if(position[x][y]==3)
{
//若点击成功
if(!win(x,y))
{
position[x][y]=4;
GREEN=false;
orangeeat++;
if(greennum>2&&orangenum>0)
{
state=3;
s="请黄方走棋:点击自己的棋子";
}
}
else
{

s="请绿方点击对方有效棋子0000";
}
}
else
{
s="请绿方点击对方的棋子11111";
}
}
else
{
//判断点击的是不是对方的棋子
if(position[x][y]==2)
{
if(!win(x,y))
{
position[x][y]=4;
GREEN=true;
greeneat++;
if(greennum<0&&orangenum>2)
{
state=3;
s="请绿方放棋";
}
else
{
state=3;
s="请绿方走棋:点击自己的棋子";
}
}
else
{
s="请黄方点击对方有效棋子";
}
}
else
{
s="请黄方点击对方的棋子!";
}
}
}
//走棋第一步:点击自己的棋子state=3
public void zouqione(int x,int y)
{
//判断当前该谁走棋
//如果该绿方走棋
if(GREEN==true)
{
//判断点击的是不是绿方棋子
if(position[x][y]==2)
{
xx=x;
yy=y;
s2="请绿方点击要放置的位置";
state=4;
}
else
{
s2="请绿方走棋:点击自己的棋子";
}
}
else
{
//判断点击的是不是黄方棋子
if(position[x][y]==3)
{
xx=x;
yy=y;
s2="请黄方点击要放置的位置";
state=4;
}
else
{
s2="请黄方走棋:点击自己的棋子";
}
}
}
//走棋第一步:点击新的位置state=4
public void zouqitwo(int x,int y)
{
//判断点击的是不是空闲位置
if(position[x][y]==1||position[x][y]==4)
{
//如果点击的位置是相邻的
if(isnext(xx,yy,x,y))
{
//改变位置的属性
position[xx][yy]=1;
if(GREEN)
    position[x][y]=2;
if(!GREEN)
position[x][y]=3;
//判断是否成三
if(win(x,y))
{
//将状态设置为吃掉对方一颗棋子
state=2;
s2=GREEN?"请绿方移除黄方的一颗棋子":"请黄方移除绿方的一颗棋子";
}
else
{
GREEN=GREEN?false:true;
s2=GREEN?"请绿方走棋:点击自己的棋子":"请黄方走棋:点击自己的棋子";
//将状态设置为对方走棋
state=3;
}
}else
{
s2=GREEN?"请绿方点击相邻的下棋处":"请黄方点击相邻的下棋处";
}
}
else
{
s2=GREEN?"请绿方点击可以放置的位置":"请黄方点击可以放置的位置";
}
}
@Override
public void mouseClicked(MouseEvent e) {
Point p=e.getPoint();
//getpoint()选择一个点


if(p.x>a-c/4&&p.x<a+6*c+c/4&&p.y>b-c/4&&p.y<b+6*c+c/4)
{
x=(p.x-a+c/4)*2/c;
y=(p.y-b+c/4)*2/c;
}



if(p.x>a-c/4&&p.x<a+6*c+c/4&&p.y>b-c/4&&p.y<b+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,GREEN);
//else 

if(state==3)
zouqione(x,y);
else if(state==4)
zouqitwo(x,y);

else if(state==2)
Remove(x,y,GREEN); if(6-greeneat<2)
{
s3="绿方输了!";
s="比赛结束";
//移除鼠标监听器
this.removeMouseListener(this);
}
if(6-orangeeat<2)
{
s3="黄方输了!";
s="比赛结束";
//移除鼠标监听器
this.removeMouseListener(this);
}
repaint();
//对于自己画的东西,比如画布(canvas)、自定义的图象等,则需要自己写程序去控制(repaint)
}
else
{

}
}

public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}也可以邮给我:[email protected]
java二打一棋80后小时爱玩的棋java棋