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

📄 keylistenerdemo.java

📁 本程序用java编写的汉偌塔游戏汉偌塔最终版
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import javax.swing.JPanel;


public class KeyListenerDemo extends JFrame implements KeyListener
{
     MainFrame  mainframe;
	 BorderLayout borderLayout1 = new BorderLayout();
     private ImagePanel imagePanel;   //绘制图像的面板
    //声明布尔型变量v1、v2、v3,用来控制哪个杆被选择,值为true的,对应序号的杆被选
    boolean v1 = true,v2 = false,v3 = false,v4 = false,v5 = false;
    private ImageIcon images;
    //帮助信息Dialog窗口对象声明
     帮助信息 dialog;
     最佳排行 dialog1;
     MultiMidiDemo mult;
    public KeyListenerDemo()
    {
    	  //获取内容面板
	    Container container = getContentPane();
	    
	     //创建帮助信息Dialog窗口对象
        dialog = new 帮助信息();
        dialog1=new 最佳排行();
	    //创建用于绘制图像的面板
	    imagePanel = new ImagePanel();
	    images= new ImageIcon("img0029.jpg");
	    
	    mult=new MultiMidiDemo();
	    mainframe=new MainFrame();
	    container.add(imagePanel, BorderLayout.CENTER);
	    
        addKeyListener(this);  //添加键盘事件监听器
	    //this.setSize(400,400);
	    this.setBounds(150,150,400,400); //设置窗口大小
	    //this.setVisible(true); //设置窗口为可见 addKeyListener(this);  
	  
    }
      class ImagePanel extends JPanel 
    {
    	
    
  	
        public ImagePanel() 
        {
        
        	super();
        	setBackground(Color.WHITE);
       }
    }
    
     public void paint(Graphics g)              
    {
    
    	//获取Graphics2D对象g_2d,从而进行2D画图
        Graphics2D g_2d = (Graphics2D)g;
        
        
         g_2d.setColor(getBackground());
         g_2d.fillRect(0, 0, getWidth(), getHeight());
            //绘制图像,坐标为屏幕中心 
         int x = (this.getWidth() - images.getIconWidth())/2;
         int y = (this.getHeight() - images.getIconHeight())/2;
          images.paintIcon(this, g, x, y);
        //用白色清屏
      //  g_2d.setColor(Color.WHITE);
      //  g_2d.clearRect(0,0,400,500);
        
        //游戏界面中,设置说明性文字的字体、颜色、位置及内容
        BasicStroke bs2 = new BasicStroke(7f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);
        Font f=new Font("Dialog",Font.BOLD,20);
        g_2d.setFont(f);
        g_2d.setStroke(bs2);
        g_2d.setColor(Color.BLUE);
        g_2d.drawString("光标<上><下>键选择,<回车>键确定",50,80);
        
         //柱1(最左边杆上)被选定画图
        if(v1 == true)                                   
        {
        	//用红色画出直线,表示被选中杆
            g_2d.setColor(Color.RED);
            g_2d.drawString("开始游戏",100,130);
        
            //用绿色画出未选择关
            g_2d.setColor(Color.BLUE);
            g_2d.drawString("最佳排行",100,180);
            g_2d.drawString("游戏说明",100,230);
            g_2d.drawString("音效设置",100,280);
            g_2d.drawString("离开游戏",100,330);
         }
        else if(v2==true)
        { 
          	//用红色画出直线,表示被选中杆
            g_2d.setColor(Color.RED);
            g_2d.drawString("最佳排行",100,180);
          
            //用绿色画出未选择关
            g_2d.setColor(Color.BLUE);
            g_2d.drawString("开始游戏",100,130);
        
            g_2d.drawString("游戏说明",100,230);
         
           g_2d.drawString("音效设置",100,280);
           g_2d.drawString("离开游戏",100,330);
        	
        }
        else if(v3==true)
        {
        	//用红色画出直线,表示被选中杆
            g_2d.setColor(Color.RED);
            g_2d.drawString("游戏说明",100,230);
           
        
            //用绿色画出未选择关
            g_2d.setColor(Color.BLUE);
            g_2d.drawString("最佳排行",100,180);
            g_2d.drawString("开始游戏",100,130);
            g_2d.drawString("音效设置",100,280);
            g_2d.drawString("离开游戏",100,330);
         }
          else if(v4==true)
        {
        	//用红色画出直线,表示被选中杆
            g_2d.setColor(Color.RED);
            g_2d.drawString("音效设置",100,280);
             //用绿色画出未选择关
            g_2d.setColor(Color.BLUE);
            g_2d.drawString("最佳排行",100,180);
            g_2d.drawString("游戏说明",100,230);
            g_2d.drawString("开始游戏",100,130);
            g_2d.drawString("离开游戏",100,330);
         }
          else if(v5==true)
        {
        	//用红色画出直线,表示被选中杆
            g_2d.setColor(Color.RED);
            g_2d.drawString("离开游戏",100,330);
            
            //用绿色画出未选择关
            g_2d.setColor(Color.BLUE);
            g_2d.drawString("最佳排行",100,180);
            g_2d.drawString("游戏说明",100,230);
            g_2d.drawString("音效设置",100,280);
            g_2d.drawString("开始游戏",100,130);
        
         }
       
      
     }
      public void keyPressed(KeyEvent e)      //玩家行动控制,键盘事件处理
    {
        switch (e.getKeyCode())        
        { 
         case KeyEvent.VK_DOWN://当按下光标下键的事件处理
          {
          	if(v1==true)
          	{
          		v1=!v1;
          		v2=!v2;
          	}
  
           else if(v2==true)
          	{
          	    v2=!v2;
          	    v3=!v3;
          	}
        	
        
          else	if(v3==true)
          	{
          		v3=!v3;
          		v4=!v4;
          	}
          else	if(v4==true)
          	{
          		v4=!v4;
          		v5=!v5;
          	}
          else	if(v5==true)
          	{
          		v5=!v5;
          		v1=!v1;
          	}
          	
          	
          this.repaint();	
         
          }               //重新绘制函数
            break;
                     
         case KeyEvent.VK_UP://当按下光标上键的事件处理 
        {
           	if(v1==true)
          	{
          		v1=!v1;
          		v5=!v5;
          	}
          	else if(v2==true)
          	{
          		v2=!v2;
          		v1=!v1;
          	}
          	else if(v3==true)
          	{
          		v3=!v3;
          		v2=!v2;
          	}
          	else if(v4==true)
          	{
          		v4=!v4;
          		v3=!v3;
          	}
          	else if(v5==true)
          	{
          		v5=!v5;
          		v4=!v4;
          	}
          	this.repaint();		
        }                                
                                  //重新绘制函数
             break;
         case KeyEvent.VK_ENTER:
          {
          	if(v1==true)
          	{
          		System.out.println("开始游戏");
          		//this.setVisible(false);
          		mainframe.setVisible(true);
          	}
          	else if(v2==true)
          	{
          		System.out.println("最佳排行");
          	    dialog1.setVisible(true);
          	}
          	else if(v3==true)
          	{
          	  System.out.println("游戏说明");
          	   dialog.setVisible(true);
          	}
          	else if(v4==true)
          	{
          		System.out.println("音效设置");
          	    mult.setVisible(true);
          	}
          	else if(v5==true)
          	{   
  
         
     
              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);
             }
       
               System.out.println("离开游戏");
          	}
      	
           }
         
        }
    }
    
     //实现KeyListener接口中抽象方法,方法体为空
    public void keyTyped(KeyEvent e){}      
    public void keyReleased(KeyEvent e){}
   /* public static void main(String[] args) 
	{
		KeyListenerDemo demo = new KeyListenerDemo();
		demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}*/
        
        
  }

⌨️ 快捷键说明

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