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

📄 greedsnakeframe.java

📁 本人经过一周废寝忘食编写的贪食蛇游戏改进版
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package gameproject;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;
import javax.swing.border.*;
import java.util.*;
import java.awt.image.*;
import java.applet.*;


public class GreedSnakeFrame extends Applet {
  JPanel contentPane;
  JMenuBar jMenuBar1 = new JMenuBar();
  JMenu jMenuGame = new JMenu();
  JMenuItem jMenuGameExit = new JMenuItem();
  JMenu jMenuHelp = new JMenu();
  JMenuItem jMenuHelpAbout = new JMenuItem();
  JMenuItem jMenuGamePlay = new JMenuItem();
  JMenuItem jMenuGamePause = new JMenuItem();
  JMenuItem jMenuGameReplay = new JMenuItem();
  JMenu jMenuSpeed = new JMenu();
  JMenu jMenuAudio = new JMenu();
  JCheckBoxMenuItem jCheckBoxAudioVoice = new JCheckBoxMenuItem();
  JMenuItem jMenuHelpHowToPlay = new JMenuItem();
  JRadioButtonMenuItem jRadioButtonSpeed1 = new JRadioButtonMenuItem();
  JRadioButtonMenuItem jRadioButtonSpeed2 = new JRadioButtonMenuItem();
  JRadioButtonMenuItem jRadioButtonSpeed3 = new JRadioButtonMenuItem();
  JRadioButtonMenuItem jRadioButtonSpeed4 = new JRadioButtonMenuItem();
  JRadioButtonMenuItem jRadioButtonSpeed5 = new JRadioButtonMenuItem();
  JRadioButtonMenuItem jRadioButtonSpeed6 = new JRadioButtonMenuItem();
  JRadioButtonMenuItem jRadioButtonSpeed7 = new JRadioButtonMenuItem();
  JRadioButtonMenuItem jRadioButtonSpeed8 = new JRadioButtonMenuItem();
  JRadioButtonMenuItem jRadioButtonSpeed9 = new JRadioButtonMenuItem();
  ButtonGroup buttonGroup1 = new ButtonGroup();
  XYLayout xYLayout1 = new XYLayout();
  JPanel jPanel1 = new JPanel();
  JPanel paintCanvas = new JPanel();
  TitledBorder titledBorder1;
  TitledBorder titledBorder2;
  TitledBorder titledBorder3;
  TitledBorder titledBorder4;
  JPanel jPanel3 = new JPanel();
  TitledBorder titledBorder5;
  TitledBorder titledBorder6;
  TitledBorder titledBorder7;
  TitledBorder titledBorder8;
  JPanel jPanel4 = new JPanel();
  JPanel jPanel5 = new JPanel();
  TitledBorder titledBorder9;
  TitledBorder titledBorder10;
  TitledBorder titledBorder11;
  TitledBorder titledBorder12;
  GridLayout gridLayout1 = new GridLayout();
  JLabel record = new JLabel();
  JLabel jLabel2 = new JLabel();
  JLabel level = new JLabel();
  JLabel jLabel4 = new JLabel();
  JLabel jLabel5 = new JLabel();
  JLabel jLabel6 = new JLabel();
  XYLayout xYLayout2 = new XYLayout();
  GridLayout gridLayout2 = new GridLayout();
  JLabel score = new JLabel();
  JLabel jLabel8 = new JLabel();
  JLabel speed = new JLabel();
  JLabel jLabel10 = new JLabel();
  TitledBorder titledBorder13;
  TitledBorder titledBorder14;
  TitledBorder titledBorder15;
  BorderLayout borderLayout1 = new BorderLayout();
  BorderLayout borderLayout2 = new BorderLayout();
  JLabel jLabel1 = new JLabel();
  //----------------------------------------------
 public static final int squareLength=5;    //every node consist of nine square
 public static final int horizontalNumber=20; //there are 20 nodes in a line
 public static final int verticalNumber=11;   //there are 11 nodes in a row
 public int timeInterval=104;
 public SnakeModel snakeModel=null;
 DrawCanvas canvas=new DrawCanvas();


  //Construct the frame
  public GreedSnakeFrame() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  //Component initialization
  private void jbInit() throws Exception  {
    contentPane = (JPanel) this.getContentPane();
    titledBorder1 = new TitledBorder("");
    titledBorder2 = new TitledBorder("");
    titledBorder3 = new TitledBorder("");
    titledBorder4 = new TitledBorder("");
    titledBorder5 = new TitledBorder("");
    titledBorder6 = new TitledBorder("");
    titledBorder7 = new TitledBorder("");
    titledBorder8 = new TitledBorder("");
    titledBorder9 = new TitledBorder("");
    titledBorder10 = new TitledBorder("");
    titledBorder11 = new TitledBorder("");
    titledBorder12 = new TitledBorder("");
    titledBorder13 = new TitledBorder("");
    titledBorder14 = new TitledBorder("");
    titledBorder15 = new TitledBorder("");
    contentPane.setLayout(xYLayout1);
    this.setSize(new Dimension(410, 335));//????????????????????????(405,285)
    this.setTitle("GreedSnake");
    this.addKeyListener(new GreedSnakeFrame_this_keyAdapter(this));
    jMenuGame.setForeground(SystemColor.activeCaption);
    jMenuGame.setText("游戏");
    jMenuGameExit.setForeground(SystemColor.desktop);
    jMenuGameExit.setText("退出");
    jMenuGameExit.addActionListener(new GreedSnakeFrame_jMenuGameExit_ActionAdapter(this));
    jMenuHelp.setForeground(SystemColor.activeCaption);
    jMenuHelp.setText("帮助");
    jMenuHelpAbout.setForeground(SystemColor.desktop);
    jMenuHelpAbout.setText("关于游戏");
    jMenuHelpAbout.addActionListener(new GreedSnakeFrame_jMenuHelpAbout_ActionAdapter(this));
    jMenuGamePlay.setForeground(SystemColor.desktop);
    jMenuGamePlay.setText("开始");
    jMenuGamePlay.addActionListener(new GreedSnakeFrame_jMenuGamePlay_actionAdapter(this));
    jMenuGamePause.setForeground(SystemColor.desktop);
    jMenuGamePause.setText("暂停");
    jMenuGamePause.addActionListener(new GreedSnakeFrame_jMenuGamePause_actionAdapter(this));
    jMenuGameReplay.setForeground(SystemColor.desktop);
    jMenuGameReplay.setText("重新开始");
    jMenuGameReplay.addActionListener(new GreedSnakeFrame_jMenuGameReplay_actionAdapter(this));
    jMenuSpeed.setForeground(SystemColor.activeCaption);
    jMenuSpeed.setText("速度");
    jMenuAudio.setForeground(SystemColor.activeCaption);
    jMenuAudio.setText("声音");
    jCheckBoxAudioVoice.setForeground(SystemColor.desktop);
    jCheckBoxAudioVoice.setSelected(true);
    jCheckBoxAudioVoice.setText("场景声音");
    jMenuHelpHowToPlay.setForeground(SystemColor.desktop);
    jMenuHelpHowToPlay.setText("玩家必读");
    jMenuHelpHowToPlay.addActionListener(new GreedSnakeFrame_jMenuHelpHowToPlay_actionAdapter(this));
    jRadioButtonSpeed1.setForeground(SystemColor.desktop);
    jRadioButtonSpeed1.setText("1");
    jRadioButtonSpeed1.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed1_actionAdapter(this));
    jRadioButtonSpeed2.setForeground(SystemColor.desktop);
    jRadioButtonSpeed2.setText("2");
    jRadioButtonSpeed2.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed2_actionAdapter(this));
    jRadioButtonSpeed3.setForeground(SystemColor.desktop);
    jRadioButtonSpeed3.setText("3");
    jRadioButtonSpeed3.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed3_actionAdapter(this));
    jRadioButtonSpeed4.setForeground(SystemColor.desktop);
    jRadioButtonSpeed4.setText("4");
    jRadioButtonSpeed4.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed4_actionAdapter(this));
    jRadioButtonSpeed5.setForeground(SystemColor.desktop);
    jRadioButtonSpeed5.setText("5");
    jRadioButtonSpeed5.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed5_actionAdapter(this));
    jRadioButtonSpeed6.setForeground(SystemColor.desktop);
    jRadioButtonSpeed6.setText("6");
    jRadioButtonSpeed6.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed6_actionAdapter(this));
    jRadioButtonSpeed7.setForeground(SystemColor.desktop);
    jRadioButtonSpeed7.setText("7");
    jRadioButtonSpeed7.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed7_actionAdapter(this));
    jRadioButtonSpeed8.setForeground(SystemColor.desktop);
    jRadioButtonSpeed8.setSelected(true);
    jRadioButtonSpeed8.setText("8");
    jRadioButtonSpeed8.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed8_actionAdapter(this));
    jRadioButtonSpeed9.setForeground(SystemColor.desktop);
    jRadioButtonSpeed9.setText("9");
    jRadioButtonSpeed9.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed9_actionAdapter(this));
    jPanel1.setLayout(xYLayout2);
    paintCanvas.setBackground(Color.white);
    paintCanvas.addContainerListener(new GreedSnakeFrame_paintCanvas_containerAdapter(this));
    paintCanvas.setLayout(borderLayout1);
    jPanel4.setBorder(titledBorder10);
    jPanel4.setLayout(gridLayout1);
    jPanel5.setBorder(titledBorder12);
    jPanel5.setLayout(gridLayout2);
    gridLayout1.setColumns(2);
    gridLayout1.setRows(3);
    record.setFont(new java.awt.Font("Dialog", 0, 15));
    record.setForeground(Color.blue);
    record.setText("");
    jLabel2.setFont(new java.awt.Font("Dialog", 0, 15));
    jLabel2.setForeground(SystemColor.desktop);
    jLabel2.setText("最高纪录:");
    level.setFont(new java.awt.Font("Dialog", 0, 15));
    level.setForeground(Color.blue);
    level.setText("");
    jLabel4.setFont(new java.awt.Font("Dialog", 0, 15));
    jLabel4.setForeground(SystemColor.desktop);
    jLabel4.setText("等级:");
    jLabel5.setFont(new java.awt.Font("Dialog", 0, 15));
    jLabel5.setForeground(Color.blue);
    jLabel5.setText("蓝翼");
    jLabel6.setEnabled(true);
    jLabel6.setFont(new java.awt.Font("Dialog", 0, 15));
    jLabel6.setForeground(SystemColor.desktop);
    jLabel6.setDoubleBuffered(false);
    jLabel6.setDisplayedMnemonic('0');
    jLabel6.setText("姓名:");
    gridLayout2.setColumns(2);
    gridLayout2.setRows(2);
    score.setFont(new java.awt.Font("Dialog", 0, 15));
    score.setForeground(Color.red);
    score.setText("0");
    jLabel8.setFont(new java.awt.Font("Dialog", 0, 15));
    jLabel8.setForeground(SystemColor.desktop);
    jLabel8.setText("当前得分:");
    speed.setFont(new java.awt.Font("Dialog", 0, 15));
    speed.setForeground(Color.red);
    speed.setText("8");
    jLabel10.setFont(new java.awt.Font("Dialog", 0, 15));
    jLabel10.setForeground(SystemColor.desktop);
    jLabel10.setText("当前速度:");
    jPanel3.setBackground(Color.white);
    jPanel3.setAlignmentX((float) 0.5);
    jPanel3.setAlignmentY((float) 0.5);
    jPanel3.setBorder(BorderFactory.createEtchedBorder());
    jPanel3.setLayout(borderLayout2);
    contentPane.setAlignmentX((float) 0.5);
    contentPane.setVerifyInputWhenFocusTarget(true);
    contentPane.addKeyListener(new GreedSnakeFrame_contentPane_keyAdapter(this));
    jLabel1.setIcon(new ImageIcon(GreedSnakeFrame.class.getResource("mypic/b_fish.png")));
    jLabel1.setText("jLabel1");
    jMenuBar1.setForeground(UIManager.getColor("FormattedTextField.selectionBackground"));
    jMenuGame.add(jMenuGamePlay);
    jMenuGame.addSeparator();
    jMenuGame.add(jMenuGamePause);
    jMenuGame.add(jMenuGameReplay);
    jMenuGame.addSeparator();
    jMenuGame.add(jMenuGameExit);
    jMenuHelp.add(jMenuHelpAbout);
    jMenuHelp.add(jMenuHelpHowToPlay);
    jMenuBar1.add(jMenuGame);
    jMenuBar1.add(jMenuSpeed);
    jMenuBar1.add(jMenuAudio);
    jMenuBar1.add(jMenuHelp);
    jMenuSpeed.add(jRadioButtonSpeed9);
    jMenuSpeed.add(jRadioButtonSpeed8);
    jMenuSpeed.add(jRadioButtonSpeed7);
    jMenuSpeed.add(jRadioButtonSpeed6);
    jMenuSpeed.add(jRadioButtonSpeed5);
    jMenuSpeed.add(jRadioButtonSpeed4);
    jMenuSpeed.add(jRadioButtonSpeed3);
    jMenuSpeed.add(jRadioButtonSpeed2);
    jMenuSpeed.add(jRadioButtonSpeed1);
    buttonGroup1.add(jRadioButtonSpeed9);
    buttonGroup1.add(jRadioButtonSpeed8);
    buttonGroup1.add(jRadioButtonSpeed7);
    buttonGroup1.add(jRadioButtonSpeed6);
    buttonGroup1.add(jRadioButtonSpeed5);
    buttonGroup1.add(jRadioButtonSpeed4);
    buttonGroup1.add(jRadioButtonSpeed3);
    buttonGroup1.add(jRadioButtonSpeed2);
    buttonGroup1.add(jRadioButtonSpeed1);
    jMenuAudio.add(jCheckBoxAudioVoice);
    contentPane.add(jPanel1,      new XYConstraints(0, 0, 405, 60));
    jPanel4.add(jLabel6, null);
    jPanel4.add(jLabel5, null);
    jPanel4.add(jLabel4, null);
    jPanel4.add(level, null);
    jPanel4.add(jLabel2, null);
    jPanel4.add(record, null);
    jPanel1.add(jPanel3,    new XYConstraints(0, 0, 60, 60));
    jPanel3.add(jLabel1,  BorderLayout.CENTER);
    jPanel1.add(jPanel5,         new XYConstraints(230, 0, 175, 60));
    jPanel5.add(jLabel10, null);
    jPanel5.add(speed, null);
    jPanel5.add(jLabel8, null);
    jPanel5.add(score, null);
    jPanel1.add(jPanel4,            new XYConstraints(60, 0, 170, 60));
    contentPane.add(paintCanvas, new XYConstraints(0, 60, 405, 225));
    this.setJMenuBar(jMenuBar1);
    //---------------------------------------------------------
    String[] msg=Message.readMsg();
    level.setText(msg[0]);
    record.setText(msg[1]);
    contentPane.add(this.canvas,  new XYConstraints(0, 60, 405, 225));
    this.setResizable(false);
  }
  //File | Exit action performed
  public void jMenuGameExit_actionPerformed(ActionEvent e) {
    System.exit(0);
  }
  //Help | About action performed
  public void jMenuHelpAbout_actionPerformed(ActionEvent e) {
    GreedSnakeFrame_AboutBox dlg = new GreedSnakeFrame_AboutBox(this);
    Dimension dlgSize = dlg.getPreferredSize();
    Dimension frmSize = getSize();
    Point loc = getLocation();
    dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
    dlg.setModal(true);
    dlg.pack();
    dlg.show();
  }
  //Overridden so we can exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      jMenuGameExit_actionPerformed(null);
    }
  }
  //----------------------------------------------------------
  public void repaint(){
    Graphics g = paintCanvas.getGraphics();
        //draw background
        g.setColor(Color.WHITE);
        g.fillRect(0,0,405,225);
        // draw the snake
        g.setColor(Color.BLACK);
        LinkedList na = snakeModel.nodeArray;
        Iterator it = na.iterator();
        while(it.hasNext()){
          Node n = (Node)it.next();
          this.drawNode(g,n);
        }
        // draw the food
        g.setColor(Color.RED);
        Node n = snakeModel.food;
        this.drawFood(g,n);
        this.updateScore();
  }

  public void drawNode(Graphics g,Node n){
    switch(n.orient){
      //up
      case 2:g.fillRect(this.squareLength*4*n.x+this.squareLength,
                   this.squareLength*4*n.y+this.squareLength,
                   this.squareLength*3,
                   this.squareLength*4);
             break;
      //down
      case 4:g.fillRect(this.squareLength*4*n.x+this.squareLength,
                     this.squareLength*4*n.y,
                     this.squareLength*3,
                     this.squareLength*4);
              break;
      //left
      case 1:g.fillRect(this.squareLength*4*n.x+this.squareLength,
                      this.squareLength*4*n.y+this.squareLength,
                      this.squareLength*4,
                      this.squareLength*3);

⌨️ 快捷键说明

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