⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 passframe.java

📁 java编写的一个推箱子游戏
💻 JAVA
字号:

package tuixiangzi;

/**
 *
 * @author Cheny
 */
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.util.Stack;

public class PassFrame extends JFrame implements ActionListener {
    
       JMenuItem   renew, back,  last,  next,   choose,  save;
       JMenuItem   helper;
       JMenuItem   ranker;   
       JMenuItem   backcover;
       private  static Savemap   savemap=new  Savemap ();
       private  static SaveRank saveRank=new  SaveRank();
       private  static RankPanel  rankpanel=new  RankPanel();
       private  static JPanel  FPanel = new   JPanel();
       private  static CardLayout card = new CardLayout();
       private  static CoverPanel cover= new CoverPanel();
       private  static BoxPanel panel =new BoxPanel();
       private  static ProducerPanel  Producer=new ProducerPanel();   
       private  static  HelpPanel  Help=new  HelpPanel();
        
        
  public PassFrame() {
        super("推箱子");
         
	renew=new JMenuItem("   重新开始   F1");
        back=new JMenuItem("    悔一步     F2");
        last=new JMenuItem("    上一关     A ");
        next=new JMenuItem("    下一关     S ");
        choose=new JMenuItem("    选关       D ");
        save=new JMenuItem("     保存        ");
        JMenu choice=new JMenu(" 游戏 ");
	choice.add(renew);              choice.add(back);             choice.add(last);  
        choice.add(next);               choice.add(choose);           choice.addSeparator();      
        choice.add(save);       
       
        
        renew.addActionListener(this);   //choice 监听器
        back.addActionListener(this);
        last.addActionListener(this);
        next.addActionListener(this);
        choose.addActionListener(this);
        save.addActionListener(this);
        
        helper=new JMenuItem("帮助主题");
        JMenu help=new JMenu("帮助");
	help.add(helper);     
	helper.addActionListener(this);
	
        ranker=new JMenuItem(" 排行榜 ");
        JMenu rank =new JMenu("排行榜");
        rank.add(ranker);
        ranker.addActionListener(this);
        
        backcover=new JMenuItem(" 返回封面 ");
        JMenu   Backcover =new JMenu("返回封面");
        Backcover.add( backcover);
        backcover.addActionListener(this);
        
        JMenuBar bar = new JMenuBar();   //添加菜单
        bar.add( choice);   bar.add(help);
        bar.add(rank);      bar.add(Backcover);   
        setJMenuBar(bar); 
        
         FPanel.setLayout(card);
         FPanel.setPreferredSize(new Dimension(410,380));
         FPanel.add(cover,"p1");
         FPanel.add(panel,"p2");
         FPanel.add(rankpanel,"p3");
         FPanel.add(Producer,"p4");
         FPanel.add(Help,"p5");
         FPanel.setFocusable(true);
        
        getContentPane().add(FPanel);
        setVisible(true);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        
     }
public static void cardshow_Producer(){
         card.show(FPanel, "p4");
         Producer.requestFocus();    
}
public static void cardshow_Help(){
         card.show(FPanel, "p5");
         Producer.requestFocus();    
}

public static void cardshow_panel () {
             card.show(FPanel, "p2");
             panel.movements=0;
             panel.level=1;
             panel.score=0;
             panel.play(panel.level);
             panel.requestFocus();      
     }  
public static void  cardshow_continue(){
             card.show(FPanel, "p2");
             panel.play(0);
             panel.requestFocus();    
   }
public static void cardshow_cover() {
             card.show(FPanel, "p1");
             cover.requestFocus();  
   }
public static void cardshow_rankpanel()   {
            
             SaveRankRead  Read =new SaveRankRead();
             String Ranker1,Ranker2,Ranker3 ;
             String RankScore1,RankScore2,RankScore3;
     
             Ranker1=Read.getRanker1();
             RankScore1=Read.getScore1();
             Ranker2=Read.getRanker2();
             RankScore2=Read.getScore2();
             Ranker3=Read.getRanker3();
             RankScore3=Read.getScore3(); 
             
             rankpanel.ranker1.setText( Ranker1);
             rankpanel.score1.setText( RankScore1);
             rankpanel.ranker2.setText( Ranker2);
             rankpanel.score2.setText( RankScore2);     
             rankpanel.ranker3.setText( Ranker3);
             rankpanel.score3.setText( RankScore3);  
             
             card.show(FPanel, "p3");   
             rankpanel.requestFocus();     
   }  
 public static  void FrameExit(){
             System.exit(0);
    }  

public void actionPerformed(ActionEvent e){
    
              if( e.getSource()==renew){           //重新开始
		        panel.play(panel.level);
			panel.requestFocus();
			panel.remove();
                        panel.movements=panel.Smovements.pop();
                    }
	      else if( e.getSource()==last){ //上一关     
		        panel.level--;
			if(panel.level<1){
                             panel.level++;
                             JOptionPane.showMessageDialog(this,"本关是第一关");
                             panel.requestFocus();
                          }
			else{
			      panel.play(panel.level);
			      panel.requestFocus();
                              panel.Smovements.pop();
                              panel.Smovements.pop();
                              panel.movements=panel.Smovements.peek();
                         }
			panel.remove();
		}
	      else if(e.getSource()==next){  //下一关
		        panel.level++;
			if(panel.level>panel.maxlevel()){
                             panel.level=1;
                             JOptionPane.showMessageDialog(this,"本关已是最后一关");
                             panel.play(panel.level);
                             panel.requestFocus();
                         }
			else {
				panel.play(panel.level);
				panel.requestFocus();
			     }
			panel.remove();
		 }
	    else if(e.getSource()==helper){     //帮助主题
                      cardshow_Help();
            }
            else if(e.getSource()==ranker){     //排行榜
                     cardshow_rankpanel(); 
                }
                    
             else if(e.getSource()==choose){ //选关
			String lel=JOptionPane.showInputDialog(this,"请输入您要转到的关卡号:(1~10)");
			panel.level=Integer.parseInt(lel);
			panel.remove();
			if(panel.level>panel.maxlevel()||panel.level<1){
                              JOptionPane.showMessageDialog(this, "没有这一关!!!");
                              panel.requestFocus();
                          }
			else{
				panel.play(panel.level);
				panel.requestFocus();
		        }
		}
           else if(e.getSource()==back) {    //悔一步
		 if(panel.isMystackEmpty() && panel.ismouseclickEmpty() )
                          JOptionPane.showMessageDialog(this, "您还未移动!!!");
		 else{
                        switch( panel.back()){
                              case 10:   panel.upback(10);       break;
                              case 11:   panel.upback(11);       break;
                              case 20:   panel.downback(20);     break;
                              case 21:   panel.downback(21);     break;
                              case 30:   panel.leftback(30);     break;
                              case 31:   panel.leftback(31);     break;
                              case 40:   panel.rightback(40);    break; 
                              case 41:   panel.rightback(41);    break;
                              case 1:    panel.mouseclickback();break;
                              }
                         }
                       panel.backmovements++;
                       panel.requestFocus();
                }
           else if(e.getSource()==save){
                       saveRank_map() ;
                 }
         else if(e.getSource()== backcover){
                      cardshow_cover ();
          }
   }
public static void saveRank_map(){
        try {
            savemap.savewrite();      
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        try {
            saveRank.Rankwrite();
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
       }
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -