資源簡介
用java實現的漢諾塔游戲,含源代碼和可執行exe文件,供初學者參考學習

代碼片段和文件信息
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
import?java.util.*;
public?class?Hanoi?extends?Jframe?{
??DrawPanel?panel?=?new?DrawPanel(3);
??ButtonPanel?panel2?=?new?ButtonPanel();
??KeyBoardListener?keyboardlistener?=?new?KeyBoardListener(panel);
??public?Hanoi()?{
????this.setFocusable(true);
????panel.setBounds(2222);
panel.setBorder(BorderFactory.createLineBorder(Color.black));
????ButtonPanel.start.addActionListener(new?ActionListener()?{
??public?void?actionPerformed(ActionEvent?e)?{
????panel.refresh(3);
??}
});
ButtonPanel.quit.addActionListener(new?ActionListener()?{
??public?void?actionPerformed(ActionEvent?e)?{
????int?res;
res?=?JOptionPane.showConfirmDialog(null“確定退出?““退出“JOptionPane.YES_NO_OPTION);
if(res?==?JOptionPane.YES_OPTION)?{
??????System.exit(0);
}
??}
});
ButtonPanel.help.addActionListener(new?ActionListener()?{
??public?void?actionPerformed(ActionEvent?e)?{
????JOptionPane.showMessageDialog(null“將所有盤子移動到最后一個柱子上,通過鍵盤上下左右鍵操作。另外請注意每一關都是有步數限制的“);
??}
});
????add(panelBorderLayout.CENTER);
add(panel2BorderLayout.EAST);
this.addKeyListener(keyboardlistener);
ButtonPanel.start.addKeyListener(keyboardlistener);
ButtonPanel.help.addKeyListener(keyboardlistener);
ButtonPanel.quit.addKeyListener(keyboardlistener);
??}
???
??public?static?void?main(String[]?args)?{
????Hanoi?frame?=?new?Hanoi();
frame.settitle(“漢諾塔“);
frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
frame.setSize(500309);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
??}
}
//鍵盤監聽器
class?KeyBoardListener?extends?KeyAdapter?{
??DrawPanel?panel;
??KeyBoardListener(DrawPanel?panel)?{
????this.panel?=?panel;
??}
??
??public?void?keyPressed(KeyEvent?e)?{
int?n?=?e.getKeyCode();
????if(n?==?38)?{
??panel.getPlate();
}?else?if(n?==?40)?{
??panel.setPlate();
}?else?if(n?==?39)?{
??panel.movePlateRight();
}?else?if(n?==?37)?{
??panel.movePlateLeft();
}
??}
??public?void?keyTyped(KeyEvent?e)?{
????????
??}
??public?void?keyReleased(KeyEvent?e)?{
????????
??}
}
//圖形界面模塊
class?DrawPanel?extends?JPanel?{
??ArrayList?plates?=?new?ArrayList();//盤子
??static?Pillar[]?pillars?=?new?Pillar[3];//柱子
??Hand?hand?=?new?Hand(1);//抓取工具
??int?chosen;//被抓起的盤子id
??int?n;//盤子個數
??boolean?init;//初始化判斷
??int?step;//步數
??
??static?{
????for(int?i=0;i<3;i++)?{
??pillars[i]?=?new?Pillar(i+1);
}
??}
??
??//構造方法
??DrawPanel(int?a)?{
init?=?true;
this.refresh(a);
??}
??//刷新
??public?void?refresh(int?a)?{
????n?=?a;
cleanUp();
Plate[]?temp?=?new?Plate[a];
int?i;
for(i=1;i ??temp[i-1]?=?new?Plate(i);
??temp[i-1].pillarid?=?1;
??temp[i-1].position?=?a-i+1;
??pillars[0].count++;
??pillars[0].plateid[temp[i-1].position]?=?temp[i-1].id;
??plates.add(temp[i-1]);
}
if(!init)?{
??repaint();
}?else?{
??init?=?false;
}
??}
??
??//清空
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????449536??2014-03-02?14:20??Hanoi\Hanoi.exe
?????文件???????6801??2014-03-02?11:46??Hanoi\Hanoi.java
?????目錄??????????0??2014-03-02?21:21??Hanoi
-----------?---------??----------?-----??----
???????????????456337????????????????????3
- 上一篇:4.3讀取攝像頭并顯示
- 下一篇:android opengl 魔方源代碼
評論
共有 條評論