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

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

?? mainframe.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一区二区三区免费野_久草精品视频
玉足女爽爽91| 日韩欧美国产一区在线观看| 国产精品久久久久一区| 国产.精品.日韩.另类.中文.在线.播放 | 日本美女一区二区三区| 欧美久久高跟鞋激| 奇米在线7777在线精品| 日韩欧美在线观看一区二区三区| 久久99久久99| 国产精品盗摄一区二区三区| 成人h动漫精品一区二区| 亚洲精品成人少妇| 欧美一区二区三区免费在线看| 激情伊人五月天久久综合| 日本一区二区免费在线| 色综合中文字幕国产| 91亚洲精品乱码久久久久久蜜桃 | 自拍偷拍亚洲综合| 欧美性感一类影片在线播放| 日本不卡视频一二三区| 国产精品丝袜黑色高跟| 欧美日本国产视频| 国产精品影音先锋| 一区二区三区四区高清精品免费观看 | 国产精品不卡视频| 欧美天堂亚洲电影院在线播放| 久久99久久久欧美国产| 国产精品视频你懂的| 欧美日韩精品专区| 成人晚上爱看视频| 日本中文字幕一区| 中文字幕在线观看一区| 欧美一区二区三区精品| 99精品视频在线免费观看| 另类小说视频一区二区| 亚洲精品高清在线| 国产婷婷精品av在线| 3d动漫精品啪啪| 99精品久久只有精品| 国产一区二区中文字幕| 日韩精品一卡二卡三卡四卡无卡| 国产精品女同互慰在线看| 日韩欧美国产一区二区三区| 色猫猫国产区一区二在线视频| 国产精品1区二区.| 欧美96一区二区免费视频| 亚洲精选视频在线| 国产欧美日韩综合精品一区二区| 91麻豆精品国产91久久久久 | 亚洲成av人片在线观看无码| 国产精品日韩精品欧美在线| 精品噜噜噜噜久久久久久久久试看| 色丁香久综合在线久综合在线观看| 国产精品影音先锋| 狂野欧美性猛交blacked| 亚洲午夜久久久久久久久电影网| 国产精品久久久久婷婷| 久久久www成人免费毛片麻豆 | 国产成人福利片| 蜜臀99久久精品久久久久久软件 | 视频一区在线视频| 亚洲午夜精品网| 亚洲综合激情另类小说区| 亚洲欧洲精品一区二区三区 | 538在线一区二区精品国产| 在线观看成人小视频| 99视频在线观看一区三区| 成人午夜在线免费| 国产a区久久久| 日韩欧美一区电影| 日韩三区在线观看| 91精品中文字幕一区二区三区| 欧美四级电影在线观看| 一本一本久久a久久精品综合麻豆| 成人久久18免费网站麻豆 | 国产福利精品一区二区| 国产一区二区调教| 精品亚洲成av人在线观看| 久久精品国产成人一区二区三区 | 久久精品国产久精国产爱| 蜜臀av性久久久久av蜜臀妖精| 秋霞国产午夜精品免费视频| 青草国产精品久久久久久| 理论片日本一区| 国产精品白丝jk黑袜喷水| 国产精品一级二级三级| 成人午夜激情视频| 91蜜桃免费观看视频| 91极品视觉盛宴| 欧美日韩美少妇| 日韩欧美卡一卡二| 欧美国产日韩在线观看| 亚洲欧美日韩中文字幕一区二区三区 | 国产日韩欧美在线一区| 国产欧美一区二区在线| 成人欧美一区二区三区| 一区二区三区**美女毛片| 天天av天天翘天天综合网 | 日韩电影在线一区二区三区| 免费一级片91| 成人免费视频网站在线观看| 色综合天天综合网天天看片| 欧美日韩国产精选| 精品国产第一区二区三区观看体验| 国产视频一区不卡| 亚洲美女在线国产| 免费观看久久久4p| 国产精品一区二区黑丝| 91日韩一区二区三区| 欧美一级高清大全免费观看| 中文字幕乱码日本亚洲一区二区| 亚洲欧美怡红院| 日韩在线一区二区| 国产99精品国产| 欧美日本一道本在线视频| 国产三级精品三级| 亚洲一区二区成人在线观看| 国产在线日韩欧美| 欧美亚洲高清一区二区三区不卡| 精品精品国产高清a毛片牛牛 | 色88888久久久久久影院按摩| 欧美一区二区三区在线电影 | 欧美另类z0zxhd电影| 久久网站最新地址| 一卡二卡三卡日韩欧美| 国内国产精品久久| 在线日韩一区二区| 国产性色一区二区| 日韩国产欧美三级| 国产人妖乱国产精品人妖| 亚洲国产精品久久人人爱蜜臀| 国产福利91精品| 日韩欧美中文字幕制服| 亚洲日本va午夜在线电影| 国产在线精品一区二区夜色| 欧美日韩一区小说| 日韩一区中文字幕| 狠狠色丁香久久婷婷综合丁香| 欧美日韩一区精品| 亚洲欧洲一区二区在线播放| 国产乱码精品一区二区三区av| 欧美日韩亚洲综合在线 | 91在线看国产| 久久久久久一二三区| 日韩国产欧美三级| 欧美性三三影院| 日韩久久一区二区| 国产福利视频一区二区三区| 26uuu国产一区二区三区| 婷婷久久综合九色综合绿巨人 | 成人免费毛片片v| 日韩欧美国产一二三区| 日韩在线一区二区| 欧美日韩激情在线| 一个色综合网站| 一本色道a无线码一区v| 国产精品你懂的在线欣赏| 国产成人av自拍| 欧美—级在线免费片| 国产精品白丝jk白祙喷水网站| 亚洲精品一区二区三区影院| 另类人妖一区二区av| 欧美大肚乱孕交hd孕妇| 黑人精品欧美一区二区蜜桃 | 欧美经典一区二区| 国产盗摄女厕一区二区三区| 久久一日本道色综合| 韩国一区二区视频| 久久久久97国产精华液好用吗| 国产精品一级二级三级| 亚洲国产精品99久久久久久久久 | 精品一区二区三区免费视频| 欧美一区二区视频网站| 精品写真视频在线观看 | 国产精品美女久久久久久2018| 国产 欧美在线| 一区二区中文视频| 色94色欧美sute亚洲线路一久 | 久久精品噜噜噜成人av农村| 精品国产不卡一区二区三区| 国产精品亚洲专一区二区三区| 日本一区二区三区视频视频| 成人精品国产福利| 亚洲免费在线电影| 欧美唯美清纯偷拍| 日本美女一区二区三区| 久久精品日产第一区二区三区高清版 | 久久精品无码一区二区三区| 不卡的av在线| 亚洲电影一区二区| 日韩女优电影在线观看| 福利电影一区二区三区| 一区二区三区成人| 日韩欧美一区二区在线视频| 东方欧美亚洲色图在线| 亚洲精品日产精品乱码不卡| 欧美一区二区免费观在线| 国产大片一区二区| 北条麻妃国产九九精品视频| 午夜成人免费视频|