亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mainframe.java

?? Help_Dialog.java; MainFrame.java; Snake.java
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package snake;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;

/**
 * <p>Title: 貪食蛇游戲</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: </p>
 * @author zsb
 * @version 1.0
 */

public class MainFrame extends JFrame {
  private JPanel contentPane;//窗體內容網格
  private JToolBar jToolBar1 = new JToolBar();//工具欄
  private JButton jButton1 = new JButton();//游戲開始按鈕
  private JButton jButton2 = new JButton();//游戲暫停按鈕
  private JButton jButton3 = new JButton();//游戲退出按鈕
  private JButton jButton4 = new JButton();//幫助按鈕
  private JPanel jPanel1 = new JPanel();//游戲主體面板容器
  private JPanel jPanel_PlayArea = new JPanel();//游戲區面板容器

  private XYLayout xYLayout1 = new XYLayout();//容器布局管理器
  private XYLayout xYLayout2 = new XYLayout();
  private XYLayout xYLayout3 = new XYLayout();
  private static final int UP = 1, LEFT = 2, DOWN = 3, RIGHT = 4;//貪食蛇運動方向
  private static final int BEGINNER = 1, MIDDLE = 2, EXPERT = 3;//游戲級別常量
  private static final int ROWS = 30;//游戲區行數
  private static final int COLS = 50;//游戲區列數
  private boolean isPause = false;//游戲暫停標志
  private boolean isEnd;//游戲結束標志
  private SnakeBody snake ;//貪食蛇
  private int score = 0;//當前得分
  private int level = BEGINNER;//當前游戲級別
  SnakeThread thread = new SnakeThread();//游戲主線程
  private GridLayout gridLayout1 = new GridLayout(ROWS, COLS, 0, 0);//游戲區布局
  private JButton[][] playBlocks;//游戲區的所有方塊

  JPanel jPanel2 = new JPanel();
  JLabel jLabel1 = new JLabel();
  JLabel jLabel2 = new JLabel();
  JLabel jLabel3 = new JLabel();
  JLabel jLabel4 = new JLabel();
  JLabel jLabel5 = new JLabel();
  JLabel jLabel6 = new JLabel();
  JLabel jLabel7 = new JLabel();
  ButtonGroup buttonGroup1 = new ButtonGroup();
  JRadioButton jRadioButton1 = new JRadioButton();
  JRadioButton jRadioButton2 = new JRadioButton();
  JRadioButton jRadioButton3 = new JRadioButton();


  //Construct the frame
  public MainFrame() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  //Component initialization
  private void jbInit() throws Exception {
    //setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Your Icon]")));
    contentPane = (JPanel)this.getContentPane();
    contentPane.setLayout(xYLayout2);
    this.setResizable(false);
    this.setSize(new Dimension(512, 414));
    this.setTitle("貪食蛇");
    this.addKeyListener(new MainFrame_this_keyAdapter(this));
    jButton1.setFont(new java.awt.Font("DialogInput", 0, 12));
    jButton1.setMaximumSize(new Dimension(79, 39));
    jButton1.setMinimumSize(new Dimension(79, 39));
    jButton1.setPreferredSize(new Dimension(79, 39));
    jButton1.setFocusPainted(false);
    jButton1.setText("開始");
    jButton1.addActionListener(new MainFrame_jButton1_actionAdapter(this));
    jButton1.addKeyListener(new MainFrame_this_keyAdapter(this));
    jButton2.setText("暫停");
    jButton2.addActionListener(new MainFrame_jButton2_actionAdapter(this));
    jButton2.setPreferredSize(new Dimension(79, 39));
    jButton2.setFocusPainted(false);
    jButton2.setMinimumSize(new Dimension(79, 39));
    jButton2.setMaximumSize(new Dimension(79, 39));
    jButton2.setFont(new java.awt.Font("DialogInput", 0, 12));
    jButton2.addKeyListener(new MainFrame_this_keyAdapter(this));
    jButton3.setText("退出");
    jButton3.addActionListener(new MainFrame_jButton3_actionAdapter(this));
    jButton3.setPreferredSize(new Dimension(79, 39));
    jButton3.setFocusPainted(false);
    jButton3.setMinimumSize(new Dimension(79, 39));
    jButton3.setMaximumSize(new Dimension(79, 39));
    jButton3.setFont(new java.awt.Font("DialogInput", 0, 12));
    jButton3.addKeyListener(new MainFrame_this_keyAdapter(this));
    jButton4.setText("幫助");
    jButton4.addActionListener(new MainFrame_jButton4_actionAdapter(this));
    jButton4.setPreferredSize(new Dimension(79, 39));
    jButton4.setFocusPainted(false);
    jButton4.setMinimumSize(new Dimension(79, 39));
    jButton4.setMaximumSize(new Dimension(79, 39));
    jButton4.setFont(new java.awt.Font("DialogInput", 0, 12));
    jButton4.addKeyListener(new MainFrame_this_keyAdapter(this));
    jPanel1.setLayout(xYLayout1);
    jPanel1.addKeyListener(new MainFrame_this_keyAdapter(this));
    jPanel_PlayArea.setLayout(gridLayout1);
    jPanel_PlayArea.setBorder(BorderFactory.createEtchedBorder());
    jPanel_PlayArea.addKeyListener(new MainFrame_this_keyAdapter(this));
    jLabel1.setFont(new java.awt.Font("DialogInput", 0, 12));
    jLabel1.setText("得分:");
    jPanel2.setLayout(xYLayout3);
    jLabel2.setFont(new java.awt.Font("DialogInput", 0, 12));
    jLabel2.setToolTipText("");
    jLabel2.setText("0");
    jLabel3.setText("穿身:");
    jLabel3.setFont(new java.awt.Font("DialogInput", 0, 12));
    jLabel4.setFont(new java.awt.Font("DialogInput", 0, 12));
    jLabel4.setText("0");
    jLabel5.setText("穿墻:");
    jLabel5.setFont(new java.awt.Font("DialogInput", 0, 12));
    jLabel5.setToolTipText("");
    jLabel6.setText("0");
    jLabel6.setFont(new java.awt.Font("DialogInput", 0, 12));
    jLabel6.setToolTipText("");
    jRadioButton1.setFont(new java.awt.Font("DialogInput", 0, 12));
    jRadioButton1.setText("初級");
    jRadioButton1.addActionListener(new MainFrame_jRadioButton1_actionAdapter(this));
    jRadioButton1.addKeyListener(new MainFrame_this_keyAdapter(this));
    jRadioButton2.setText("中級");
    jRadioButton2.addActionListener(new MainFrame_jRadioButton2_actionAdapter(this));
    jRadioButton2.addKeyListener(new MainFrame_this_keyAdapter(this));
    jRadioButton2.setFont(new java.awt.Font("DialogInput", 0, 12));
    jRadioButton3.setText("高級");
    jRadioButton3.addActionListener(new MainFrame_jRadioButton3_actionAdapter(this));
    jRadioButton3.setFont(new java.awt.Font("DialogInput", 0, 12));
    jRadioButton3.addKeyListener(new MainFrame_this_keyAdapter(this));
    buttonGroup1.add(jRadioButton1);
    buttonGroup1.add(jRadioButton2);
    buttonGroup1.add(jRadioButton3);
    jRadioButton1.setSelected(true);
    jLabel7.setFont(new java.awt.Font("DialogInput", 0, 12));
    jLabel7.setText("等級:");
    contentPane.add(jToolBar1,  new XYConstraints(0, 0, 512, -1));
    jToolBar1.add(jButton1, null);
    jToolBar1.add(jButton2, null);
    jToolBar1.add(jButton3, null);
    jToolBar1.add(jButton4, null);
    jToolBar1.addKeyListener(new MainFrame_this_keyAdapter(this));
    contentPane.add(jPanel1,  new XYConstraints(0, 43, 512, 371));
    jPanel1.add(jPanel_PlayArea, new XYConstraints(0, 33, 524, 314));
    jPanel1.add(jPanel2,                  new XYConstraints(0, 0, 498, 30));
    jPanel2.add(jRadioButton1, new XYConstraints(331, 1, -1, -1));
    jPanel2.add(jRadioButton3,    new XYConstraints(443, 1, -1, -1));
    jPanel2.add(jRadioButton2, new XYConstraints(390, 1, -1, -1));
    jPanel2.add(jLabel6, new XYConstraints(245, 6, 30, -1));
    jPanel2.add(jLabel7, new XYConstraints(287, 5, 47, -1));
    jPanel2.add(jLabel5, new XYConstraints(197, 6, 47, -1));
    jPanel2.add(jLabel4, new XYConstraints(166, 7, 26, -1));
    jPanel2.add(jLabel3,  new XYConstraints(120, 6, 38, -1));
    jPanel2.add(jLabel1, new XYConstraints(23, 6, 39, -1));
    jPanel2.add(jLabel2, new XYConstraints(62, 6, 54, -1));
    //創建并初始化游戲區方塊
    playBlocks = new JButton[ROWS][COLS];
    for (int i = 0; i < ROWS; i++) {
      for (int j = 0; j < COLS; j++) {
        playBlocks[i][j] = new JButton();
        playBlocks[i][j].setBackground(Color.lightGray);
        playBlocks[i][j].setVisible(false);
        jPanel_PlayArea.add(playBlocks[i][j]);
      }
    }

  }

  //Overridden so we can exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }

  public void start() {
    //初始化游戲參數
    score = 0;
    isPause = false;
    isEnd = false; //
    jButton2.setText("暫停");
    //初始化游戲區
    for (int i = 0; i < ROWS; i++) {
     for (int j = 0; j < COLS; j++) {
       playBlocks[i][j].setBackground(Color.lightGray);
       playBlocks[i][j].setVisible(false);
     }
    }
    //創建蛇身
    snake = new SnakeBody();
    //在游戲區內隨機放置食物
    int x = (int) (Math.random() * ROWS);
    int y = (int) (Math.random() * COLS);
    while (playBlocks[x][y].isVisible()) {
      x = (int) (Math.random() * ROWS);
      y = (int) (Math.random() * COLS);
    }
    playBlocks[x][y].setBackground(Color.yellow);
    playBlocks[x][y].setVisible(true);
    //初始化狀態提示區
    jLabel2.setText(Integer.toString(score));
    jLabel4.setText(Integer.toString(snake.throughbody));
    jLabel2.setText(Integer.toString(snake.throughwall));

    try {
      //啟動游戲
      thread.start();
    }
    catch (IllegalThreadStateException illegalThreadStateException) {}

  }

  class SnakeBody {
    // private int snake[][] = new int [MainFrame.ROWS][MainFrame.COLS];										//0位背景,1為蛇身,2為食物,3為穿身,4為穿墻,5為墻壁
    public int length = 3;
    public int rows[];
    public int columes[];
    public int direction = RIGHT;
    public int lastdirection = RIGHT;
    public long speed = 300;
    public int throughbody = 0;
    public int throughwall = 0;
    public SnakeBody() {
      length = 3;
      throughbody = 1;
      throughwall = 1;
      direction = RIGHT;
      lastdirection = RIGHT;
      switch(level){
        case BEGINNER:speed = 300;break;
        case MIDDLE:speed = 200;break;
        case EXPERT:speed = 100;break;
        default:speed = 200;
      }
      throughbody = 0;
      throughwall = 0;
      rows = new int[ROWS];
      columes = new int[COLS];
      for (int i = 0; i <= length; i++) {
        rows[i] = 1;
        columes[i] = length - i;
      }

    }

    public void move() {
      //去掉蛇尾
      playBlocks[rows[length]][columes[length]].setVisible(false);
      playBlocks[rows[length]][columes[length]].setBackground(Color.lightGray);
      //顯示除蛇頭外蛇身
      for (int i = 0; i < length; i++) {
        playBlocks[rows[i]][columes[i]].setBackground(Color.green);
        playBlocks[rows[i]][columes[i]].setVisible(true);
      }
      //移動除蛇頭外蛇身

      for (int i = length; i > 0; i--) {
        rows[i] = rows[i - 1];
        columes[i] = columes[i - 1];
      }
      //根據蛇身運動方向,決定蛇頭位置
      switch (direction) {
        case UP: {
          if (lastdirection == DOWN)
            rows[0] += 1;
          else {
            rows[0] -= 1;
            lastdirection = UP;
          }
          break;
        }
        case LEFT: {
          if (lastdirection == RIGHT)
            columes[0] += 1;
          else {
            columes[0] -= 1;
            lastdirection = LEFT;
          }
          break;
        }
        case DOWN: {
          if (lastdirection == UP)
            rows[0] -= 1;
          else {
            rows[0] += 1;
            lastdirection = DOWN;
          }
          break;
        }
        case RIGHT: {
          if (lastdirection == LEFT)
            columes[0] -= 1;
          else {
            columes[0] += 1;
            lastdirection = RIGHT;
          }
          break;
        }
      }
      //處理有穿墻寶物時的穿墻操作
      if (throughwall != 0) {

        if (rows[0] >= ROWS) {
          throughwall--;
          jLabel6.setText(Integer.toString(throughwall));
          rows[0] = ROWS - rows[0];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av不卡免费电影| 五月激情六月综合| 欧美大片顶级少妇| 欧美在线观看一二区| av电影在线观看不卡| 成人毛片老司机大片| 国产成a人亚洲| 国产成人午夜电影网| 国产在线精品免费| 精品午夜久久福利影院| 国产一区二区视频在线播放| 久久99国产精品久久99果冻传媒| 日韩电影一区二区三区| 日本不卡一二三区黄网| 麻豆精品视频在线观看| 激情图片小说一区| 国产福利电影一区二区三区| 国产.欧美.日韩| 成人一二三区视频| 色婷婷久久久久swag精品| 91福利社在线观看| 欧美日韩免费观看一区三区| 欧美日韩你懂得| 久久嫩草精品久久久精品| 中文在线免费一区三区高中清不卡| 久久久久久影视| 亚洲欧美乱综合| 无码av免费一区二区三区试看| 蜜臀av国产精品久久久久| 国产在线精品免费| 色哟哟亚洲精品| 日韩一级黄色片| 中文字幕av资源一区| 亚洲国产精品人人做人人爽| 麻豆国产精品一区二区三区| 成人精品小蝌蚪| 欧美性猛交一区二区三区精品| 日韩欧美资源站| 综合久久久久综合| 日本成人在线网站| 99久久精品国产观看| 在线成人小视频| 亚洲欧洲在线观看av| 日韩高清不卡一区二区| av亚洲精华国产精华| 欧美一区二区三区人| 亚洲视频在线观看一区| 久久99久久99| 欧美唯美清纯偷拍| 中文一区在线播放| 免费视频一区二区| 欧美最猛性xxxxx直播| 日韩欧美第一区| 亚洲v精品v日韩v欧美v专区| 国产二区国产一区在线观看| 欧美日韩成人综合| 亚洲男人的天堂在线aⅴ视频| 久久精品国产99久久6| 在线亚洲人成电影网站色www| 国产日韩在线不卡| 另类小说视频一区二区| 欧美日韩精品三区| 一区二区三区免费在线观看| 国产69精品久久久久777| 欧美一区二区私人影院日本| 一区二区三区在线免费播放| 成人一区二区三区视频| 精品国产污网站| 蜜臀av在线播放一区二区三区| 欧美色视频在线观看| 一区二区三区在线免费视频| bt7086福利一区国产| 中文字幕精品在线不卡| 国产黄色91视频| 久久亚洲一区二区三区四区| 蜜桃一区二区三区在线| 欧美日韩国产精品成人| 亚洲午夜久久久| 欧美做爰猛烈大尺度电影无法无天| 亚洲三级理论片| 91蜜桃传媒精品久久久一区二区| 日本一区二区三级电影在线观看 | 欧洲一区二区av| 国产精品久久久久一区二区三区 | 波多野结衣一区二区三区| 久久影院电视剧免费观看| 久久疯狂做爰流白浆xx| xfplay精品久久| 国产99一区视频免费| 国产日本欧洲亚洲| av资源网一区| 亚洲一区二区欧美日韩| 欧美亚洲一区三区| 美女视频黄a大片欧美| 91麻豆国产精品久久| 欧美性一二三区| 91麻豆.com| 久久久蜜桃精品| 国产盗摄精品一区二区三区在线 | 亚洲r级在线视频| 欧美日韩成人综合在线一区二区| 亚洲国产裸拍裸体视频在线观看乱了| 日本久久精品电影| 奇米一区二区三区av| 欧美一区二区三区视频| 国产精品1区2区3区在线观看| 国产精品色呦呦| 欧美精品日韩一区| 国产一区二区三区国产| 国产精品国产三级国产aⅴ入口| 色哟哟亚洲精品| 久久精品国产一区二区| 国产精品久99| 欧美一区二区三区白人| 高清不卡在线观看| 午夜欧美在线一二页| 久久久综合精品| 欧美三级日韩三级国产三级| 麻豆精品一二三| 亚洲国产精品久久人人爱| 久久只精品国产| 在线精品视频一区二区| 国产综合色视频| 亚洲影视资源网| 国产精品国产三级国产普通话蜜臀 | 成年人国产精品| 日韩一区欧美二区| 国产精品久久二区二区| 日韩精品一区二区三区在线| 91老师片黄在线观看| 狠狠狠色丁香婷婷综合久久五月| 一区二区在线观看视频在线观看| 精品久久国产字幕高潮| 欧洲另类一二三四区| 国产传媒久久文化传媒| 麻豆久久一区二区| 亚洲3atv精品一区二区三区| 中文字幕中文字幕在线一区 | 成人av一区二区三区| 麻豆一区二区在线| 日韩激情在线观看| 一区二区三区中文字幕在线观看| 国产精品久久夜| 久久蜜桃av一区精品变态类天堂| 欧美精品亚洲二区| 色爱区综合激月婷婷| 不卡一区中文字幕| 丁香五精品蜜臀久久久久99网站 | 在线视频一区二区三区| 成人中文字幕合集| 国产精品一二二区| 精品制服美女久久| 久久超级碰视频| 人人超碰91尤物精品国产| 亚洲成人动漫一区| 亚洲第一激情av| 亚洲国产精品久久一线不卡| 亚洲自拍偷拍九九九| 亚洲男女一区二区三区| 一区二区三区中文字幕精品精品 | 激情小说亚洲一区| 久久精品国产免费看久久精品| 日韩激情一区二区| 久久精品99国产精品| 紧缚捆绑精品一区二区| 国产精品亚洲а∨天堂免在线| 国产福利一区二区三区视频| 国产成人av一区二区三区在线| 国产一区二区久久| 成人黄页在线观看| 91亚洲永久精品| 欧美性感一类影片在线播放| 欧美日韩精品三区| 精品福利在线导航| 欧美国产亚洲另类动漫| 亚洲欧洲日产国产综合网| 亚洲男帅同性gay1069| 一区二区久久久久久| 日韩av中文字幕一区二区 | 最新不卡av在线| 亚洲va中文字幕| 国产精品中文字幕日韩精品| gogogo免费视频观看亚洲一| 在线亚洲精品福利网址导航| 日韩欧美一区在线| 国产欧美日韩中文久久| 夜夜嗨av一区二区三区| 免费在线观看精品| 99re成人精品视频| 欧美电影在线免费观看| 久久精品人人做人人爽人人 | 欧美一区二区三区喷汁尤物| 久久精品人人做| 天使萌一区二区三区免费观看| 久久99国内精品| 欧美日韩一区二区在线观看视频| 亚洲精品在线三区| 亚洲午夜久久久久久久久电影网| 国产美女一区二区三区| 欧美嫩在线观看|