📄 hannuota.java
字号:
/**
***
**/
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
/**
***
**/
public class HanNuoTa extends Applet implements ActionListener,Runnable{
public int TaGao,TaFromTa,TaMidTa,TaToTa;
public int DuiZhan[][];
public int TopPoint[];
public int i,j,times,fullnumber,delay,welcome,minite,second;
private Thread hnt;
public String TextString;
Label TaNumber,NumberFrom,NumberTo;
TextField TaText,FromText,ToText;
Button StartToMove,StartGame;
Graphics OfGraphics;
/**
***
**/
public void init(){
DuiZhan=new int[3][20];
TopPoint=new int[3];
TaGao=7;
TaFromTa=0;
TaMidTa=1;
TaToTa=2;
welcome=-1;
i=0;
j=0;
for(i=0;i<3;i++)
for(j=0;j<20;j++)
DuiZhan[i][j]=0;
for(i=0;i<3;i++)
TopPoint[i]=0;
TextString=new String(" ");
TaNumber=new Label("塔高层数");
NumberFrom=new Label("原来塔位置");
NumberTo=new Label("最后塔位置");
TaText=new TextField(10);
FromText=new TextField(10);
ToText=new TextField(10);
StartToMove=new Button("常速移动");
StartGame=new Button("快速移动");
add(TaNumber);
add(TaText);
add(NumberFrom);
add(FromText);
add(NumberTo);
add(ToText);
add(StartToMove);
add(StartGame);
StartToMove.addActionListener(this);
StartGame.addActionListener(this);
}
/**
***
**/
public void paint(Graphics g){
g.setColor(Color.gray);
g.fillRect(0,0,980,450);
g.setColor(Color.black);
g.drawString("第0座",155,70);
g.drawString("第1座",475,70);
g.drawString("第2座",795,70);
if(welcome>0){
paintmain(g);
}
else{
g.setColor(Color.red);
Image MyImages[];
MyImages=new Image[1];
MyImages[0]=getImage(getDocumentBase(),"hnt.class");
g.drawImage(MyImages[0],0,0,this);
welcome++;
for(i=0;i<6;i++)
pause();
}
}
public void update(Graphics g)
{
paint(g);
}
public void paintmain(Graphics g){
g.setColor(Color.black);
g.drawLine(20,380,320,380);
g.drawLine(340,380,640,380);
g.drawLine(660,380,960,380);
g.drawLine(170,80,170,380);
g.drawLine(490,80,490,380);
g.drawLine(810,80,810,380);
for(i=0;i<3;i++){
for(j=0;j<TopPoint[i];j++){
switch(DuiZhan[i][j]%7){
case 0:g.setColor(Color.green);break;
case 1:g.setColor(Color.blue);break;
case 2:g.setColor(Color.cyan);break;
case 3:g.setColor(Color.magenta);break;
case 4:g.setColor(Color.pink);break;
case 5:g.setColor(Color.red);break;
case 6:g.setColor(Color.yellow);break;
default:break;
}
g.fillRect(170+320*i-8*DuiZhan[i][j],364-j*16,16*DuiZhan[i][j],15);
g.drawString("第"+i+"座",160+320*i,400);
}
}
if(fullnumber!=0){
g.setColor(Color.red);
minite=times*delay/1000/60;
second=times*delay/1000-minite*60;
g.drawString("进度:"+times*100/fullnumber+"%",30,416);
g.drawString(" 耗时:"+minite+"分"+second+"秒",110,416);
g.drawRect(50,420,600,20);
g.setColor(Color.green);
g.fillRect(53,423,times*596/fullnumber,16);
}
}
public void NuoYiWei(int FromTa,int ToTa){
TopPoint[FromTa]--;
DuiZhan[ToTa][TopPoint[ToTa]]=DuiZhan[FromTa][TopPoint[FromTa]];
DuiZhan[FromTa][TopPoint[FromTa]]=0;
TopPoint[ToTa]++;
repaint();
pause();
times++;
}
/**
***
**/
public void Nuo(int FromTa,int MidTa,int ToTa,int NeedMove){
if(NeedMove>=2){
Nuo(FromTa,ToTa,MidTa,NeedMove-1);
NuoYiWei(FromTa,ToTa);
Nuo(MidTa,FromTa,ToTa,NeedMove-1);
StartToMove.setVisible(true);
StartGame.setVisible(true);
}
else{
NuoYiWei(FromTa,ToTa);
StartToMove.setVisible(true);
StartGame.setVisible(true);
}
}
public void dealevent(){
String str;
times=0;
fullnumber=0;
for(i=0;i<3;i++)
for(j=0;j<20;j++)
DuiZhan[i][j]=0;
for(i=0;i<3;i++)
TopPoint[i]=0;
str=TaText.getText();
for(i=1;i<20;i++){
if(str.equals(String.valueOf(i)))
break;
}
if(i==20){
TaText.setText("请输入1-19的数");
}
else{
TaGao=Integer.parseInt(TaText.getText());
}
str=FromText.getText();
for(i=0;i<3;i++){
if(str.equals(String.valueOf(i)))
break;
}
if(i==3){
FromText.setText("应输入0-2的数");
}
else{
TaFromTa=Integer.parseInt(FromText.getText());
}
str=ToText.getText();
for(i=0;i<3;i++){
if(str.equals(String.valueOf(i)))
break;
}
if(i==3){
ToText.setText("应输入0-2的数");
}
else{
TaToTa=Integer.parseInt(ToText.getText());
}
if(TaFromTa!=TaToTa){
StartToMove.setVisible(false);
StartGame.setVisible(false);
for(i=0;i<TaGao;i++){
fullnumber=2*fullnumber+1;
}
TaMidTa=3-TaFromTa-TaToTa;
for(i=0;i<TaGao;i++)
DuiZhan[TaFromTa][i]=TaGao-i;
TopPoint[TaFromTa]=TaGao;
times=0;
hnt=new Thread(this);
hnt.start();
hnt=null;
}
else{
FromText.setText("不用挪动");
ToText.setText("不用挪动");
}
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==StartGame){
delay=250;
}
if(e.getSource()==StartToMove){
delay=750;
}
dealevent();
}
public void run(){
repaint();
pause();
Nuo(TaFromTa,TaMidTa,TaToTa,TaGao);
repaint();
}
void pause(){
try{
Thread.sleep(delay);
}
catch(InterruptedException e){
showStatus(e.toString());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -