Java基于swing实现的弹球游戏代码
本文实例讲述了Java基于swing实现的弹球游戏代码。分享给大家供大家参考。
主要功能代码如下:
packageGame;
importjava.awt.Graphics; importjava.awt.Insets; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; importjava.util.ArrayList; importjava.util.Random;
importjavax.swing.ButtonGroup; importjavax.swing.JMenu; importjavax.swing.JMenuBar; importjavax.swing.JMenuItem; importjavax.swing.JOptionPane; importjavax.swing.JRadioButtonMenuItem;
/** *游戏界面类 * *@authorAdministrator * */ publicclassGameextendsjavax.swing.JFrame{ privatestaticfinallongserialVersionUID=1L; privatestaticGameUI; privateGraphicsg; privateListenerml; publicjavax.swing.JLabeltext_field; publicjavax.swing.JProgressBarpBar; privateStringcommand; publicArrayList<MyThread>list=newArrayList<MyThread>(); privatejavax.swing.JToggleButtonbutton;
publicstaticvoidmain(Stringargs[]){ UI=newGame(); UI.initUI(); }
/** *初始化窗体的方法 */ publicvoidinitUI(){ //设置标题 this.setTitle("是高手就坚持10s"); //设置大小 this.setSize(610,635); //设置关闭是退出程序 this.setDefaultCloseOperation(3); //设置打开窗体时在屏幕中间显示 this.setLocationRelativeTo(null); //设置窗体的流式布局管理器 this.setLayout(newjava.awt.FlowLayout()); //设置窗体背景颜色 this.getContentPane().setBackground(java.awt.Color.black); //创建文本标签对象 text_field=newjavax.swing.JLabel(); javax.swing.JLabellable=newjavax.swing.JLabel("时 间 :"); //设置文本标签前景颜色 lable.setForeground(java.awt.Color.red); text_field.setForeground(java.awt.Color.red);
//创建进度条对象 pBar=newjavax.swing.JProgressBar(0,330); //创建按钮对象 button=newjavax.swing.JToggleButton(); button.setMargin(newInsets(0,0,0,0)); button.setIcon(newjavax.swing.ImageIcon("images/Pause.gif")); button.setActionCommand("暂停"); //通过匿名内部类来创建动作监听器 java.awt.event.ActionListenerbutton_listener=newjava.awt.event.ActionListener(){
publicvoidactionPerformed(ActionEvente){ Stringcom=e.getActionCommand();
if(com.equals("暂停")){ button.setMargin(newInsets(0,0,0,0)); button.setIcon(newjavax.swing.ImageIcon("images/start.gif")); button.setActionCommand("继续"); for(inti=0;i<list.size();i++){ list.get(i).PauseThread();
}
} if(com.equals("继续")){
button.setMargin(newInsets(0,0,0,0)); button.setIcon(newjavax.swing.ImageIcon("images/Pause.gif")); button.setActionCommand("暂停");
for(inti=0;i<list.size();i++){ list.get(i).ContinueThread(); }
}
}
}; button.addActionListener(button_listener);
this.add(button); this.add(lable); this.add(pBar); this.add(text_field); //的到菜单条 JMenuBarbar=creatMenuBar(); //为窗体设置菜单条 this.setJMenuBar(bar); //设置窗体的可见性 this.setVisible(true); }
/** *创建菜单条的方法 * *@return */ publicJMenuBarcreatMenuBar(){ //创建菜单条对象 JMenuBarbar=newJMenuBar(); //创建菜单对象 JMenumenu_menu=newJMenu("菜单"); JMenudifficulty_menu=newJMenu("难度"); JMenuhelp_menu=newJMenu("帮助"); //创建菜单选项对象 JMenuItemstar_item=newJMenuItem("开始"); JMenuItemexit_item=newJMenuItem("退出"); JMenuItemhelp_item=newJMenuItem("游戏说明"); JMenuItemabout_item=newJMenuItem("关于"); //创建单选选项 JRadioButtonMenuItemeasy_item=newJRadioButtonMenuItem( "简单"); JRadioButtonMenuItemmiddle_item=newJRadioButtonMenuItem( "中等"); JRadioButtonMenuItemhard_item=newJRadioButtonMenuItem( "困难"); //创建一个按钮组 ButtonGroupgroup=newButtonGroup(); //将单选按钮添加到按钮组中 group.add(easy_item); group.add(middle_item); group.add(hard_item); //将单选按钮添加到菜单中 difficulty_menu.add(easy_item); difficulty_menu.add(middle_item); difficulty_menu.add(hard_item); //通过匿名内部类来创建动作监听器 ActionListenerlistener=newActionListener(){ publicvoidactionPerformed(ActionEvente){ command=e.getActionCommand(); //如果选择开始,则创建线程对象 if(command.equals("开始")&&list.size()==0){ creatBall(20,1);
} //如果选择退出按钮,则退出程序 if(command.equals("退出")){ System.exit(0); }
//如果选择简单按钮 if(command.equals("简单")&&list.size()==0){
creatBall(20,1); }
//如果选择中等按钮 if(command.equals("中等")&&list.size()==0){ creatBall(50,2);
} if(command.equals("困难")&&list.size()==0){ creatBall(40,2); } if(command.equals("游戏说明")){ JOptionPane.showMessageDialog(null, "移动鼠标,用挡板接球,如果接不住,就算输了……\n游戏可以选择难度,包括简单、中等、困难"); } if(command.equals("关于")){ JOptionPane .showMessageDialog(null, "这是一个用Java编写的小游戏……\n制作人:沈冠军\n时间:2010年8月\n版权所有,翻版必究!"); } } }; //添加动作监听器 star_item.addActionListener(listener); exit_item.addActionListener(listener); easy_item.addActionListener(listener); middle_item.addActionListener(listener); hard_item.addActionListener(listener); help_item.addActionListener(listener); about_item.addActionListener(listener);
//将菜单选项对象添加到菜单对象上 menu_menu.add(star_item); menu_menu.add(exit_item); help_menu.add(help_item); help_menu.add(about_item); //将菜单对象添加到菜单条上 bar.add(menu_menu); bar.add(difficulty_menu); bar.add(help_menu); //返回菜单条对象 returnbar; }
/** *创建线程对象的方法 * *@paramspeed * :速度 * */ publicvoidcreatBall(intspeed,intnum){ Randomran=newRandom();
if(ml==null){ g=UI.getGraphics(); ml=newListener(g); UI.addMouseListener(ml); UI.addMouseMotionListener(ml);
} for(inti=0;i<num;i++){ intx=ran.nextInt(600)+10; inty=ran.nextInt(300)+100; MyThreadth=newMyThread(g,ml,UI,x,y,speed); list.add(th); th.start(); }
}
/** *得到命令的方法 */ publicStringgetCommand(){ returncommand; }
}