import java.awt.BorderLayout;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
public class MainFrame extends JFrame implements KeyListener //主程序
{
//声明并创建布局管理器
BorderLayout borderLayout1 = new BorderLayout();
KeyListenerDemo key;
//游戏界面中菜单栏、菜单项的声明及创建
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenu1 = new JMenu();
JMenuItem jMenuItem1 = new JMenuItem();
JMenuItem jMenuItem2 = new JMenuItem();
JMenuItem jMenuItem3 = new JMenuItem();
JMenuItem jMenuItem4 = new JMenuItem();
JMenu jMenu2 = new JMenu();
JMenu jMenu3 = new JMenu();
JMenu jMenu4 = new JMenu();
//菜单中登记单选框的声明及创建
ButtonGroup buttonGroup = new ButtonGroup();
JCheckBoxMenuItem jCheckBoxMenuItem1 = new JCheckBoxMenuItem();
JCheckBoxMenuItem jCheckBoxMenuItem2 = new JCheckBoxMenuItem();
JCheckBoxMenuItem jCheckBoxMenuItem3 = new JCheckBoxMenuItem();
//返回按钮
JButton button;
//图形处理,画图类对象声明
DrawPanel drawPanel;
//帮助信息Dialog窗口对象声明
帮助信息 dialog;
//声明SuperPlate盘子类对象数组
SuperPlate superPlate[];
int plate_num; //保存当前游戏指定难度的盘子数
//声明三个SuperPlate对象,用于提取vector数组中末端(最上方)盘子对象以便操作
SuperPlate sp1,sp2,sp3;
//设置3个vector数组用来存取盘子SuperPlate的对象,代表3个柱子上盘子
Vector s1,s2,s3;
//表示当前控制对象是哪个柱子,值为true的表示被选中
boolean b1,b2,b3;
int d = 20; //表示相邻盘子之间的距离基值
int press_num=0; //统计移动盘子次数
int num,winNum; //游戏胜利时,最右侧杆上盘子数
boolean chooseLever = false; //游戏开始参数:是否选择游戏难度
//-------------------------------------------------------------------
public MainFrame()
{
//设置内容面板布局方式
getContentPane().setLayout(borderLayout1);
//添加键盘事件监听器
addKeyListener(this);
//创建帮助信息Dialog窗口对象
dialog = new 帮助信息();
//创建画图类对象
drawPanel = new DrawPanel(this);
// KeyListenerDemo key=new KeyListenerDemo();
// drawPanel.setVisible(false);
button=new JButton();
// button.setText("返回");
this.setJMenuBar(jMenuBar1); //添加菜单栏
jMenu1.setText("设定");
jMenu2.setText("游戏等级");
jMenu3.setText("帮助");
jMenu4.setText("返回");
//设置等级单选框
jCheckBoxMenuItem1.setText("初级");
jCheckBoxMenuItem2.setText("中级");
jCheckBoxMenuItem3.setText("高级");
//为等级单选框添加事件监听器
jCheckBoxMenuItem1.addActionListener(new JCheckBoxMenuItem1_actionAdapter());
jCheckBoxMenuItem2.addActionListener(new JCheckBoxMenuItem2_actionAdapter());
jCheckBoxMenuItem3.addActionListener(new JCheckBoxMenuItem3_actionAdapter());
buttonGroup.add(jCheckBoxMenuItem1);
buttonGroup.add(jCheckBoxMenuItem2);
buttonGroup.add(jCheckBoxMenuItem3);
//设置菜单栏中,其他菜单项
jMenuItem1.setText("开始");
jMenuItem2.setText("游戏信息");
jMenuItem3.setText("结束");
jMenuItem4.setText("返回主菜单");
//为菜单栏中的其他菜单项添加事件监听器
jMenuItem1.addActionListener(new JMenuItem1_actionAdapter());
jMenuItem3.addActionListener(new JMenuItem3_actionAdapter());
jMenuItem2.addActionListener(new JMenuItem2_actionAdapter());
jMenuItem4.addActionListener(new JMenuItem4_actionAdapter());
//向菜单栏中添加菜单项
jMenu1.add(jMenuItem1);
jMenu1.addSeparator();
jMenu1.add(jMenuItem3);
jMenu2.add(jCheckBoxMenuItem1);
jMenu2.add(jCheckBoxMenuItem2);
jMenu2.add(jCheckBoxMenuItem3);
jMenu3.add(jMenuItem2);
jMenu4.add(jMenuItem4);
jMenuBar1.add(jMenu1);
jMenuBar1.add(jMenu2);
jMenuBar1.add(jMenu3);
jMenuBar1.add(jMenu4);
//创建Vector对象s1、s2、s3
s1 = new Vector();;
s2 = new Vector();
s3 = new Vector();
//向内容面板中加入画图面板
getContentPane().add(drawPanel, java.awt.BorderLayout.CENTER);
// getContentPane().add(button,java.awt.BorderLayout.NORTH);
this.setBounds(180,150,400,400); //设置界面大小
//setVisible(true); //设置为可见
}
/* public static void main(String[] args)
{
MainFrame mainframe = new MainFrame();
mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
*/
//-----------------------------------------------------------------
//内布类用于处理菜单中,"开始"菜单项的动作
class JMenuItem1_actionAdapter implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(chooseLever == true) //若已选定等级情况
{
drawPanel.choose = false;
}
else //若未选定等级情况
{
drawPanel.choose = true;
}
drawPanel.start = true;
System.out.println("点开始了 ");
drawPanel.setVisible(true);
}
}
//内布类用于处理菜单中,"帮助信息"菜单项的动作
class JMenuItem2_actionAdapter implements ActionListener
{
public void actionPerformed(ActionEvent e) //菜单项“帮助信息”动作
{
dialog.setVisible(true);
}
}
//内布类用于处理菜单中,"关闭"菜单项的动作
class JMenuItem3_actionAdapter implements ActionListener
{
public void actionPerformed(ActionEvent e) //菜单项“关闭”动作
{
String m="确定要退出游戏吗?";
int ok=JOptionPane.showConfirmDialog(null,m,"确认",JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if(ok==JOptionPane.YES_OPTION)
{
setVisible(false);
System.exit(0);
}
}
}
//内布类用于处理菜单中,"返回"菜单项的动作
class JMenuItem4_actionAdapter implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.out.println("返回");
setVisible(false);
// key.setVisible(true);
}
}
//------------------------------------------------------------------
//内布类用于处理菜单中,游戏难度选择"初级"单选框的动作
class JCheckBoxMenuItem1_actionAdapter implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
s1.removeAllElements();
s2.removeAllElements();
s3.removeAllElements();
plate_num=3; //初级:设定盘子数为3
drawPanel.setPlateNum(plate_num); //向drawPanel传递参数
chooseLever = true; //已选择等级chooseLever值设置为true
drawPanel.choose = false;
//初始化SuperPlate对象并赋值
superPlate = new SuperPlate[plate_num];
for(int x=0;x<3;x++)
{
superPlate[x] = new SuperPlate(100,290-x*d,50-x*d/2);
//将盘子加入到vector的数组s1中,相当于加到柱1上
s1.addElement(superPlate[x]);
}
getactionZhu(); //调用getactionZhu()方法,
//调用DrawPanel对象drawPanel的数据更新方法
drawPanel.updata();
jCheckBoxMenuItem2.setVisible(true);
jCheckBoxMenuItem3.setVisible(true);
}
}
//内布类用于处理菜单中,
没有合适的资源?快使用搜索试试~ 我知道了~
hannuota.rar_java动画
共76个文件
class:39个
java:15个
jpg:14个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 46 浏览量
2022-09-23
08:08:28
上传
评论
收藏 1.48MB RAR 举报
温馨提示
。使用Java语言来开发一个简单的游戏一直以来是我的想法,游戏程序是比较复杂的,其中涉及到大量的编程技术,游戏中加载了图片、动画、声音等功能。 相传古印度,布拉玛婆罗门圣庙的僧侣常进行一种被叫称为汉偌塔的游戏,其装置是一块铜板,上面有三根柱子,第一个柱子自下而上、由大到小按顺序串上64个金盘,游戏的目标是把第一个柱子上的金盘全部移到第三个柱子上,并按原有顺序叠好,条件是每次移动都不许将大盘移到小盘上。
资源推荐
资源详情
资源评论
收起资源包目录
hannuota.rar (76个子文件)
汉偌塔最终版
boy01.png 19KB
MainFrame$JMenuItem4_actionAdapter.class 678B
%5Bwallcoo.com%5D_vector_art_of_summer_0Untitled-36.jpg 182KB
Animator$AnimatorPanel.class 2KB
DigitalClock.class 848B
JSplashWindowPlus.java 2KB
帮助信息.java 3KB
LoadImageDemo.java 2KB
LoadImageDemo$ImagePanel.class 1KB
MainFrame$JCheckBoxMenuItem3_actionAdapter.class 1KB
MainFrame.class 7KB
帮助信息.class 2KB
LoadImage.class 2KB
1234.jpg 235KB
boy04.png 880B
帮助信息.jpg 17KB
DrawPanel.class 5KB
%5Bwallcoo.com%5D_vector_art_of_summer_0Untitled-35.jpg 162KB
Animator.java 3KB
betsy.mid 500B
13[1].jpg.lnk 665B
MainFrame$JMenu4_actionAdapter.class 628B
MainFrame$JCheckBoxMenuItem2_actionAdapter.class 1KB
LoadImageDemo.class 1KB
SuperPlate.java 495B
Animator.class 927B
KeyListenerDemo$ImagePanel.class 481B
a.java 5KB
JProgressBarDemo.java 4KB
LoadImageDemo1 2KB
DigitalClock.java 3KB
DrawPanel.java 14KB
LoadImage$ImagePanel.class 1KB
最佳排行.class 2KB
MultiMidiPlayer.class 3KB
DrawPanel$AnimatorPanel.class 1KB
MultMiDemo.java 0B
%5Bwallcoo.com%5D_vector_art_of_summer_0Untitled-20.jpg 146KB
MultiMidiPlayer$ImagePanel.class 1KB
MainFrame$JMenuItem1_actionAdapter.class 893B
MainFrame$JMenuItem2_actionAdapter.class 580B
ImagePanel.class 929B
SuperPlate.class 405B
帮助信息$ImagePanel.class 1KB
KeyListenerDemo.class 4KB
Image.jpg 12KB
AnimatorDemo$AnimatorPanel.class 2KB
最佳排行.jpg 36KB
MultiMidi.class 870B
MainFrame.java 18KB
MultiMidi.java 6KB
JPEGImage.jpg 12KB
camptown.mid 338B
img0029.jpg 120KB
1.JPG 12KB
d412505582.jpg 127KB
最佳排行.java 3KB
JSplashWindowPlus.class 3KB
MainFrame$JMenuItem3_actionAdapter.class 825B
JProgressBarDemo.class 3KB
JProgressBarDemo$TimerHandler.class 2KB
KeyControl.class 4KB
%5Bwallcoo.com%5D_vector_art_of_summer_back_15.jpg 200KB
DigitalClockPanelUI.class 3KB
music.jpg 35KB
LoadImage.java 2KB
boy02.png 15KB
最佳排行$ImagePanel.class 1KB
1231.jpg 296KB
KeyControl.java 8KB
AnimatorDemo.class 955B
MultiMidiDemo.class 862B
MainFrame$JCheckBoxMenuItem1_actionAdapter.class 1KB
KeyControl$ImagePanel.class 456B
DrawPanel$ImagePanel.class 451B
boy03.png 724B
共 76 条
- 1
资源评论
寒泊
- 粉丝: 85
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功