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

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

?? mainframe.java

?? 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| 亚洲综合久久久| 欧美人与z0zoxxxx视频| 99re6这里只有精品视频在线观看| 全国精品久久少妇| 秋霞电影一区二区| 天堂久久一区二区三区| 日本视频免费一区| 久久99国产精品久久| 久久se这里有精品| 国产精品一区二区无线| 国产成人在线视频免费播放| 国产一区亚洲一区| 成人网页在线观看| 日本二三区不卡| 欧美精品乱码久久久久久按摩| 欧美精选一区二区| 久久综合中文字幕| 欧美激情自拍偷拍| 一区二区三区四区不卡视频| 首页国产欧美日韩丝袜| 黄页视频在线91| 91在线观看下载| 欧美区一区二区三区| 2020国产精品自拍| 一区二区在线看| 另类小说色综合网站| 成人一二三区视频| 欧美群妇大交群中文字幕| 久久久一区二区三区捆绑**| 亚洲激情男女视频| 久久精品噜噜噜成人av农村| a级精品国产片在线观看| 欧美人妖巨大在线| 中文字幕第一页久久| 五月婷婷久久丁香| 高清不卡在线观看av| 精品视频一区二区不卡| 日本一区二区三区免费乱视频| 亚洲国产精品一区二区www| 毛片av中文字幕一区二区| 91年精品国产| 久久只精品国产| 婷婷中文字幕综合| av在线免费不卡| 精品成人在线观看| 午夜欧美在线一二页| 成人免费视频app| 欧美电影免费观看完整版| 亚洲啪啪综合av一区二区三区| 精品夜夜嗨av一区二区三区| 欧美色综合久久| 亚洲视频资源在线| 国产美女在线精品| 日韩午夜激情视频| 午夜婷婷国产麻豆精品| 91久久一区二区| 中文字幕一区二区三中文字幕| 日韩综合小视频| 欧美日韩精品一二三区| 亚洲精品免费视频| 成人在线视频一区| 国产日韩欧美综合一区| 久久er精品视频| 9191久久久久久久久久久| 亚洲一区二区三区视频在线| 色欧美片视频在线观看| 亚洲私人黄色宅男| www.99精品| 中文字幕在线视频一区| 不卡视频免费播放| 中文字幕不卡的av| 成+人+亚洲+综合天堂| 国产精品久久久久影院亚瑟 | 高清视频一区二区| 久久精品男人的天堂| 国产久卡久卡久卡久卡视频精品| 精品国偷自产国产一区| 国产麻豆成人精品| 国产日韩影视精品| caoporen国产精品视频| 亚洲男人电影天堂| 欧美亚一区二区| 日产欧产美韩系列久久99| 欧美一级夜夜爽| 国产精品主播直播| 国产精品毛片大码女人| 91免费看片在线观看| 香蕉乱码成人久久天堂爱免费| 欧美高清精品3d| 九九**精品视频免费播放| 国产亚洲欧洲一区高清在线观看| 成人午夜激情在线| 亚洲激情校园春色| 日韩美女一区二区三区四区| 国产成人夜色高潮福利影视| 中文字幕日韩一区| 欧美日韩不卡在线| 狠狠色丁香久久婷婷综合丁香| 中文字幕精品在线不卡| 欧美三级乱人伦电影| 久久激五月天综合精品| 国产精品的网站| 7777女厕盗摄久久久| 国产精品99久久不卡二区| 亚洲蜜桃精久久久久久久| 欧美福利一区二区| 成人av网在线| 日韩成人免费电影| 成人免费一区二区三区视频| 91麻豆精品91久久久久久清纯| 国产成人av一区二区| 亚洲bt欧美bt精品| 欧美国产日韩亚洲一区| 欧美精品电影在线播放| 不卡的电视剧免费网站有什么| 日韩电影免费一区| 亚洲靠逼com| 久久蜜桃av一区二区天堂| 欧美视频一区在线| 不卡大黄网站免费看| 美女精品自拍一二三四| 樱桃视频在线观看一区| 国产日韩精品视频一区| 91精品国产免费久久综合| 一本一本大道香蕉久在线精品| 久久国产福利国产秒拍| 午夜精品久久久久久| 1024成人网| 中文字幕乱码久久午夜不卡| 精品国产乱子伦一区| 欧美久久一二区| 欧美在线观看视频一区二区| av成人动漫在线观看| 国产.欧美.日韩| 国产一区二区三区在线观看免费 | 欧美一区二视频| 91老师片黄在线观看| 成人福利在线看| 国产91丝袜在线播放0| 激情五月播播久久久精品| 日韩av电影免费观看高清完整版| 亚洲自拍偷拍图区| 一区二区三区四区不卡在线 | 日韩欧美中文字幕一区| 欧美日韩精品欧美日韩精品| 色94色欧美sute亚洲13| 91视频.com| 日本乱码高清不卡字幕| 91麻豆蜜桃一区二区三区| 成人黄色av电影| 91原创在线视频| 欧美在线观看18| 欧美日韩在线播放一区| 精品视频一区二区不卡| 91精品国产一区二区人妖| 911精品国产一区二区在线| 欧美一区二区视频在线观看2022 | 国产精品美女久久久久久久久 | 三级欧美在线一区| 日本欧洲一区二区| 激情久久久久久久久久久久久久久久| 蜜臀va亚洲va欧美va天堂| 久久国产欧美日韩精品| 国产乱码精品一区二区三区av | 美女视频黄免费的久久| 黑人巨大精品欧美一区| 盗摄精品av一区二区三区| 99精品视频在线观看| 欧美亚洲国产一区二区三区va| 91超碰这里只有精品国产| 久久午夜老司机| 国产精品传媒在线| 亚洲成国产人片在线观看| 美国一区二区三区在线播放| 国产麻豆视频精品| 一本到不卡免费一区二区| 欧美老女人第四色| 国产色产综合色产在线视频| 亚洲天天做日日做天天谢日日欢| 视频在线观看一区二区三区| 国产成人精品亚洲777人妖 | 成人午夜大片免费观看| 91福利在线免费观看| 欧美成人艳星乳罩| 亚洲免费观看高清完整版在线观看熊| 亚洲va欧美va国产va天堂影院| 国产美女精品人人做人人爽| 在线亚洲免费视频| 久久精品亚洲麻豆av一区二区| 亚洲曰韩产成在线| 国产乱色国产精品免费视频| 欧美色图片你懂的| 国产欧美一区二区三区在线看蜜臀 | 成人黄色777网| 欧美日韩精品欧美日韩精品一 | 日韩美女主播在线视频一区二区三区 | 欧美一级在线免费| 国产精品国产自产拍高清av| 美腿丝袜一区二区三区|