资源简介
用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 魔方源代码
相关资源
- 4.3读取摄像头并显示
- java2word jar包
- 图书管理系统 servlet+jsp适合初学者
- Java证书打印工具类
- java openCV 人脸识别 找茬
- 基于java旅游网站毕业论文
- JAVA动物识别系统266510
- java猴子选王
- java8+tomcat8+struts2.5+spring4.3+hibernate5.2框
- jdbc+控制台java+oracle模拟银行程序MVC思
- Java版剑指Offer全部测试用例
- java秒杀(高并发)视频教程
- 基于UDP协议的数据包收发程序代码+报
- 基于java和mysql的学生信息管理系统
- 西电软院java上机大作业全
- JavaATM机取款模拟程序
- mail.jar+activation.jar+additional.jar
- java打砖块源码加注释
- jxl完美实现Excel加水印(内及jar包,基
- javadbf.jar-修复中文乱码-部分生僻字显
- 数据结构课设 java版 校园导航系统
- Java实现音视频通讯
- pcap文件解析,并且按照五元组分类
- javaweb 图片上传
- 学生成绩管理系统java源代码
- commons-collections-3.2.jar - Java包页
- 基于rxtx的java串口通信
- Elasticsearch5.5.1 JAVA客户端TransportClien
- java-client-5.0.4.jar
- java实现聊天室功能全部代码,有界面
评论
共有 条评论