Java汉诺塔课程设计程序Word格式.docx
- 文档编号:6424971
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:32
- 大小:20.76KB
Java汉诺塔课程设计程序Word格式.docx
《Java汉诺塔课程设计程序Word格式.docx》由会员分享,可在线阅读,更多相关《Java汉诺塔课程设计程序Word格式.docx(32页珍藏版)》请在冰点文库上搜索。
1"
;
Stringstr2="
2"
Stringstr3="
3"
intA[]={1,2,3};
//用来作为移动按钮的哨兵,
intB[]={0,0,0};
intC[]={0,0,0};
publicvoidpaint(Graphicsg)
Graphics2Dg_2d=(Graphics2D)g;
Line2Dline_1=newLine2D.Double(100,0,100,480);
g_2d.setColor(Color.black);
g_2d.draw(line_1);
Line2Dline_2=newLine2D.Double(400,0,400,480);
g_2d.draw(line_2);
Line2Dline_3=newLine2D.Double(700,0,700,480);
g_2d.draw(line_3);
B()
b3=newJButton(str3);
//
b3.setBounds(25,440,150,40);
//
add(b3,JLayeredPane.DEFAULT_LAYER);
b2=newJButton(str2);
b2.setBounds(40,400,120,40);
add(b2,JLayeredPane.DEFAULT_LAYER);
b1=newJButton(str1);
b1.setBounds(55,360,90,40);
add(b1,JLayeredPane.DEFAULT_LAYER);
b3.addMouseListener(this);
b3.addMouseMotionListener(this);
b2.addMouseListener(this);
b2.addMouseMotionListener(this);
b1.addMouseListener(this);
b1.addMouseMotionListener(this);
//向三个按钮分别加入两个监视器
publicvoidsetJTextAreaOne(JTextAreaArea)
one=Area;
publicvoidsetJTextAreaTwo(JTextAreaArea)//
two=Area;
/*publicvoidsetJTextArea(JTextAreaa)
show=a;
}*/
publicvoidsetLevel(Strings)
level=s;
publicvoidactionPerformed(ActionEvente)
try
{
if(level.equals("
叁"
))
{
two.setText(null);
two.append("
7"
);
}
肆"
15"
伍"
31"
陆"
63"
}
catch(ExceptionE)
one.append("
enternumbers,pls\n"
publicvoidmousePressed(MouseEvente)
JComponentcomp=null;
comp=(JComponent)e.getSource();
setLayer(comp,JLayeredPane.DRAG_LAYER);
m=comp.getBounds().x;
n=comp.getBounds().y;
m0=m;
n0=n;
x0=e.getX();
y0=e.getY();
//获取鼠标的位置
publicvoidmouseClicked(MouseEvente)
publicvoidmouseEntered(MouseEvente)
publicvoidmouseExited(MouseEvente)
publicvoidmouseReleased(MouseEvente)
{System.out.println("
mouseReleased"
intxx;
xx=comp.getBounds().x;
//yy=comp.getBounds().y;
if(e.getSource()==b1)
{System.out.println("
movebutton(1,xx)"
movebutton(1,xx);
elseif(e.getSource()==b2)
movebutton(2,xx);
elseif(e.getSource()==b3)
movebutton(3,xx);
publicvoidmouseMoved(MouseEvente)
publicvoidmouseDragged(MouseEvente)
mouseDragged"
Componentcomp=null;
if(e.getSource()instanceofComponent)
comp=(Component)e.getSource();
m=comp.getBounds().x;
n=comp.getBounds().y;
//获得当前组件左上点坐标?
?
x=e.getX();
y=e.getY();
m+=x;
n+=y;
comp.setLocation(m-x0,n-y0);
voidmovebutton(inta,intxx)
"
+xx);
if(xx<
175)//如果落在A塔
+A[2]+A[1]+A[0]);
if(A[2]==0)//如果A塔没有盘子
{//放在A塔
A[2]=a;
switch(a)
{
case1:
b1.setLocation(55,440);
break;
case2:
b2.setLocation(40,440);
case3:
b3.setLocation(25,440);
}
if(m0>
175&
&
m0<
475)
B[a-1]=0;
elseif(m0>
C[a-1]=0;
elseif(a<
A[2])
{//如果A塔至少有一个盘子,且a盘小于它
if(A[1]==0)//如果A塔只有一个盘子
{//放在A塔
A[1]=a;
switch(a)
{
case1:
b1.setLocation(55,400);
System.out.println("
aaaaaaaaaaaa"
case2:
b2.setLocation(40,400);
case3:
b3.setLocation(25,400);
}
if(m0>
B[a-1]=0;
elseif(m0>
C[a-1]=0;
elseif(a<
A[1])//如果A塔有2个盘子,且a盘小于他们
A[0]=a;
b1.setLocation(55,360);
b2.setLocation(40,360);
b3.setLocation(25,360);
}//A
elseif(xx>
xx<
475)//如果落在B塔
iamhere"
if(B[2]==0)//如果B塔没有盘子
{//放在B塔
B[2]=a;
iamhere2"
b1.setBounds(355,440,90,40);
b2.setLocation(340,440);
b3.setLocation(325,440);
if(m0<
175)
A[a-1]=0;
B[2])
{//如果B塔至少有一个盘子,且a盘小于它
if(B[1]==0)//如果B塔只有一个盘子
{//放在B塔
B[1]=a;
b1.setLocation(355,400);
b2.setLocation(340,400);
b3.setLocation(325,400);
if(m0<
A[a-1]=0;
B[1])//如果B塔有2个盘子,且a盘小于他们
B[0]=a;
b1.setLocation(355,360);
b2.setLocation(340,360);
b3.setLocation(325,360);
}//B
475)//如果落在C塔
if(C[2]==0)//如果C塔没有盘子
{//放在C塔
C[2]=a;
b1.setLocation(655,440);
b2.setLocation(640,440);
b3.setLocation(625,440);
System.out.println("
hhh"
+m0);
+A[a-1]);
C[2])//如果C塔至少有一个盘子,且a盘小于它
if(C[1]==0)//如果C塔只有一个盘子
{//放在C塔
C[1]=a;
b1.setLocation(655,400);
b2.setLocation(640,400);
b3.setLocation(625,400);
C[1])//如果C塔有2个盘子,且a盘小于他们
C[0]=a;
b1.setLocation(655,360);
b2.setLocation(640,360);
b3.setLocation(625,360);
}//c
fn(A,1);
fn(B,2);
fn(C,3);
voidfn(intD[],intx)
intlx=0;
switch(x)
case1:
lx=25;
case2:
lx=325;
case3:
lx=625;
if(D[2]==0)//最下面没有棋子
return;
//stop;
else//最下有棋子
if(D[2]==1)//最下为1,
b1.setLocation(lx+30,440);
//设置位置
return;
elseif(D[2]==2)//最下为2,
b1.setLocation(lx+15,440);
if(D[1]==0)//继续判断中间位置
return;
else
if(D[1]==1)//中间位置为1
b1.setLocation(lx+30,400);
return;
elseif(D[2]==3)//最下为3,
b1.setLocation(lx,440);
if(D[1]==2)//中间位置为1
b1.setLocation(lx+15,400);
if(D[0]==0)
{
return;
}
else
if(D[0]==1)
{
b1.setLocation(lx+30,360);
return;
}
/*if(e.getSource()==b1)//1号棋子
intk=0;
m=comp.getBounds().x;
n=comp.getBounds().y;
if(m==55)//判断从哪来的棋子ing
x=e.getX();
y=e.getY();
m+=x;
n+=y;
if(x>
=175&
x<
=475)//yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
if(AtoB
(1))
A[0]=0;
for(inti=0;
i<
3;
i++)
if(B[i]==0)
{
k++;
}
if(k==3)
comp.setLocation(325,440);
B[0]=1;
if(k==2)
comp.setLocat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 汉诺塔 课程设计 程序