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

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

?? frame1.java

?? JAVA俄羅斯方塊源碼,復制到java即可運行
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package diamond;

import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import javax.swing.*;
/**
    主窗體類,
 */
public class Frame1 extends JFrame {
    customThread thread = new customThread(this);    //自定義線程類
    Thread t2;     //線程
    Graphic graphic = new Graphic(this);   //自定義繪圖類
    Action rol = new Action(this);   //自定義旋轉類
    JPanel contentPane;              //窗體中的主面板
    JLabel backGround = new JLabel();//窗體中的背景圖
    JLabel GameOver = new JLabel();  //顯示“游戲結束!”字樣
    JLabel[] backShape = new JLabel[200];  //游戲區面板中的小圖形塊,為10列20行
    JLabel[] shape = new JLabel[4];     //可以移動的圖形,由4個小塊組成
    JLabel[] shapeView = new JLabel[4]; //預覽區的圖形,由4個小塊組成
    ImageIcon imgicon;                 //圖片類,用來加載圖片
    JPanel GameAreaPanel = new JPanel();   //游戲區面板
    JLabel PanelBG = new JLabel();   //游戲區面板的背景
    JLabel begin = new JLabel();     //開始按鈕
    JLabel mark = new JLabel();      //分數標簽
    JLabel level = new JLabel();      //分數標簽
    JTextField jTextField1 = new JTextField();  //文本框,用來接收鍵盤的輸入
    int graphicNum;  //形狀的編號
    int viewGraphicNum; //預覽窗口中的形狀編號
    int[] state = new int[7]; //存儲7種形狀的旋轉狀態
    int[] shapeLocation = new int[4]; //存儲一個圖形的4個小塊的位置,作刪行時用

    //構造方法
    public Frame1() {
        try {
            setDefaultCloseOperation(EXIT_ON_CLOSE);  //點窗口的關閉按鈕時直接關閉程序
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    //初始化方法
    private void jbInit() throws Exception {
        //主窗體的初始化
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(null);
        imgicon = createImageIcon("background.jpg");  //createImageIcon為自定義方法,用來加載圖片
        backGround.setIcon(imgicon);
        backGround.setBounds(new Rectangle(0, 0, 576, 444));

        //游戲區面板的初始化
        GameAreaPanel.setBackground(new Color(110, 66, 15));
        GameAreaPanel.setBorder(null);
        GameAreaPanel.setBounds(new Rectangle(236, 41, 180, 360));
        GameAreaPanel.setLayout(null);
        imgicon = createImageIcon("panelBG.jpg");
        PanelBG.setBounds(new Rectangle(0, 0, 180, 360));
        PanelBG.setIcon(imgicon);


        //開始按鈕的初始化
        begin.setFont(new java.awt.Font("宋體", Font.BOLD, 20));
        begin.setForeground(Color.yellow);
        begin.setBorder(BorderFactory.createRaisedBevelBorder());
        begin.setText("  開始 ");
        begin.setBounds(new Rectangle(80, 350, 86, 43));
        begin.addMouseListener(new Frame1_begin_mouseAdapter(this));

        //分數標簽的初始化
        mark.setFont(new java.awt.Font("宋體", Font.BOLD, 30));
        mark.setForeground(Color.orange);
        mark.setText("00000");
        mark.setBounds(new Rectangle(75, 230, 180, 43));

        //級別標簽的初始化
        level.setFont(new java.awt.Font("宋體", Font.BOLD, 30));
        level.setForeground(Color.black);
        level.setText("1");
        level.setBounds(new Rectangle(490, 300, 180, 43));

        //游戲結束標簽的初始化
        GameOver.setFont(new java.awt.Font("宋體", Font.BOLD, 35));
        GameOver.setForeground(Color.yellow);
        GameOver.setText("游戲結束!");
        GameOver.setBounds(new Rectangle(250, 140, 250, 100));
        GameOver.setVisible(false);

        //文本框的初始化
        jTextField1.setBorder(null);
        jTextField1.setBounds(new Rectangle(-10, -10, 5, 5)); //位置到窗體以外
        jTextField1.addKeyListener(new Frame1_jTextField1_keyAdapter(this)); //鍵盤監聽

        //游戲區背景的初始化
        for (int i=0; i<20; i++){
            for (int j=0; j<10; j++){
                backShape[i*10+j] = new JLabel("");
                backShape[i*10+j].setBounds(new Rectangle(j*18, i*18, 18, 18));
                GameAreaPanel.add(backShape[i*10+j]);
            }
        }

        //可移動方塊和預覽區方塊的初始化
        for (int i=0; i<4; i++){
           shape[i] = new JLabel("");
           shapeView[i] = new JLabel("");
           GameAreaPanel.add(shape[i]);
           contentPane.add(shapeView[i]);
        }

        GameAreaPanel.add(PanelBG);  //把背景標簽到游戲區面板
        //所有控件加到主面板上
        contentPane.add(GameOver);
        contentPane.add(begin);
        contentPane.add(mark);
        contentPane.add(level);
        contentPane.add(jTextField1);
        contentPane.add(GameAreaPanel);
        contentPane.add(backGround);
    }

    //加載圖片的方法,返回一個ImageIcon類型
    protected static ImageIcon createImageIcon(String path){
                    java.net.URL imgURL = Frame1.class.getResource(path);
            if (imgURL != null) {
                     return new ImageIcon(imgURL);
                    } else {
                     System.err.println("Couldn't find file: " + path);
                    return null;
            }
   }

   //初始化要預覽窗口和準備下落的圖形的方法
    private void paintGraphic(){
        //把預覽窗口的圖形的類型、背景和坐標賦給準備下落的圖形
        graphicNum = viewGraphicNum;
        for(int i=0; i<4; i++){
            shape[i].setIcon(shapeView[i].getIcon());
            shape[i].setBounds(new Rectangle(shapeView[i].getX()-412, shapeView[i].getY()-85, 18, 18));
        }
        //初始化預覽窗口的形狀
        Random ran = new Random();
        int imgNum = ran.nextInt(5);  //圖片文件名的編號,隨機取一個
        imgicon = createImageIcon(imgNum + ".jpg");
        shapeView[0].setIcon(imgicon);
        shapeView[1].setIcon(imgicon);
        shapeView[2].setIcon(imgicon);
        shapeView[3].setIcon(imgicon);
        viewGraphicNum = ran.nextInt(7);  //隨機取一個形狀的編號,有7種形狀
        graphic.paint();  //繪制圖形
        state[graphicNum] = 0; //形狀的旋轉狀態
    }

    //把定位好的形狀復制到背景上的方法
    public void copy(){  //把下落已經停止的圖形背景賦給游戲區相應的圖形塊
        backShape[(shape[0].getX()/18) + (shape[0].getY()/18)*10].setIcon(shape[0].getIcon());
        backShape[(shape[1].getX()/18) + (shape[1].getY()/18)*10].setIcon(shape[1].getIcon());
        backShape[(shape[2].getX()/18) + (shape[2].getY()/18)*10].setIcon(shape[2].getIcon());
        backShape[(shape[3].getX()/18) + (shape[3].getY()/18)*10].setIcon(shape[3].getIcon());
        fullLine();  //自定義方法,用來判斷是否存在滿行
        paintGraphic(); //自定義方法,繪制下個圖形
        t2 = new Thread(thread);//線程開始
        t2.start();
    }

    //判斷是否滿行的方法
    private void fullLine(){
        for (int i=0; i<4; i++){   //四個小塊
            for (int j=0; j<10; j++){
                if ( ((shape[i].getY()/18)*10+j) < 10 ){  //判斷是否到了頂行
                    gameOver(); //游戲結束;
                }
                //if ( ((shape[i].getY()/18)*10+j)>199 ) continue; //如果超出最低行則不執行后面判斷;
                if (backShape[(shape[i].getY()/18)*10+j].getIcon() == null){ //如果有空格就跳出
                    break;
                }else if ( j==9 ){   //如果是滿行
                    shapeLocation[i] = (shape[i].getY()/18)*10;
                }
            }
        }
        DeleteFullLine();//刪除滿行
    }

    //刪除滿行的方法
    private void DeleteFullLine(){
        int tempMark ;  //保存分數的臨時變量
        int accumulativeMark = 0; //累計分數的臨時變量
        int tempLevel;  //保存級別的臨時變量
        //下面循環是去除數組中重復的數并按升序排序,指要刪除水平坐標相同塊的坐標;
        for (int i=0; i<3; i++){
            for (int j=i+1; j<4; j++){
                if (shapeLocation[i] > shapeLocation[j]){
                    int tempNum = shapeLocation[i];
                    shapeLocation[i] = shapeLocation[j];
                    shapeLocation[j] = tempNum;
                }else if (shapeLocation[i] == shapeLocation[j]){
                    shapeLocation[i] = 0;
                }
            }
        }

        for (int i=0; i<4; i++){
            if ( shapeLocation[i] == 0 ) continue;  //如果碰不是滿行或重復要刪除的行則后面的不執行
            for (int j=shapeLocation[i]+9; j>10; j--){  //刪除滿行以后上面所有的圖形塊往下移一格
                backShape[j].setIcon( backShape[j-10].getIcon());
            }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区免费看| 日韩欧美中文字幕精品| 欧美日韩精品一区视频| 久久蜜桃av一区二区天堂| 亚洲精品高清在线| 国产精品一级黄| 欧美一区日本一区韩国一区| 18成人在线视频| 国产黑丝在线一区二区三区| 91精品啪在线观看国产60岁| 亚洲欧美日韩综合aⅴ视频| 国内精品国产三级国产a久久| 欧美日韩一级片在线观看| 最新国产精品久久精品| 国产精品91一区二区| 日韩精品中文字幕一区二区三区 | 日韩国产精品91| 99国产精品久久久久久久久久久 | 亚洲va欧美va人人爽午夜| 成人18视频日本| 久久久久久99久久久精品网站| 亚洲成a人片在线不卡一二三区 | 亚洲视频在线一区观看| 国模冰冰炮一区二区| 91精品国模一区二区三区| 亚洲综合丁香婷婷六月香| 成人精品小蝌蚪| 国产婷婷色一区二区三区 | 91在线视频观看| 中文字幕在线不卡国产视频| 国产91综合一区在线观看| 欧美精品一区二区久久久| 狂野欧美性猛交blacked| 欧美一区二区网站| 美腿丝袜在线亚洲一区| 日韩一级片在线播放| 另类小说一区二区三区| 欧美成人精品3d动漫h| 久久精品久久综合| 久久一区二区三区四区| 激情综合色播激情啊| 精品久久久久久综合日本欧美| 美女视频黄频大全不卡视频在线播放| 欧美一级一区二区| 精品一区二区三区影院在线午夜| 欧美一二三四区在线| 九九在线精品视频| 国产欧美一区二区精品性| 9色porny自拍视频一区二区| 亚洲激情校园春色| 制服丝袜国产精品| 国产福利91精品一区| 亚洲美腿欧美偷拍| 日韩三级精品电影久久久| 国产一区二区三区蝌蚪| 亚洲同性同志一二三专区| 欧美日韩五月天| 国产一区二区三区香蕉| 国产精品超碰97尤物18| 欧美三级在线看| 国内不卡的二区三区中文字幕 | 欧美亚洲国产一区二区三区va| 一区二区三区免费网站| 91精品欧美福利在线观看| 国产麻豆精品theporn| 一区二区三区欧美| 久久综合九色综合97婷婷女人 | 久久99国产乱子伦精品免费| 欧美高清在线一区二区| 色婷婷精品久久二区二区蜜臀av | 国产河南妇女毛片精品久久久| 亚洲欧美一区二区不卡| 精品成人一区二区三区四区| eeuss鲁片一区二区三区在线观看| 亚洲网友自拍偷拍| 国产视频911| 制服丝袜中文字幕亚洲| 91色乱码一区二区三区| 精品亚洲porn| 亚洲国产精品久久久久婷婷884| 26uuu国产电影一区二区| 欧美影视一区在线| 成人午夜私人影院| 看片的网站亚洲| 亚洲国产综合视频在线观看| 中文字幕精品—区二区四季| 欧美一级一区二区| 91高清视频免费看| 成人免费高清在线| 捆绑变态av一区二区三区| 亚洲制服欧美中文字幕中文字幕| 欧美激情一区二区三区四区| 91精品婷婷国产综合久久| 欧美主播一区二区三区| 不卡视频免费播放| 国产麻豆视频一区二区| 久久国产精品一区二区| 日韩av中文字幕一区二区三区| 亚洲精品欧美在线| 国产精品国产三级国产有无不卡 | 极品尤物av久久免费看| 日韩国产在线观看| 亚洲图片欧美色图| 亚洲图片欧美综合| 亚洲国产一二三| 一区二区三区高清在线| 综合久久国产九一剧情麻豆| 国产视频一区二区三区在线观看| 精品久久人人做人人爰| 精品国产乱码久久久久久蜜臀| 欧美精品tushy高清| 欧美一区二区在线看| 欧美精品第一页| 欧美一区二区三区四区视频| 777a∨成人精品桃花网| 欧美日本在线看| 91精品国产综合久久精品| 91精品国产91久久久久久一区二区 | 中文av一区二区| 国产亚洲欧美中文| 国产欧美日韩视频在线观看| 久久婷婷综合激情| 亚洲国产精品av| 国产精品你懂的| 亚洲精品中文在线影院| 亚洲在线中文字幕| 日本中文字幕一区二区视频| 久久国产精品99精品国产| 婷婷丁香激情综合| 男人的天堂亚洲一区| 麻豆专区一区二区三区四区五区| 麻豆传媒一区二区三区| 国产精品影视在线观看| 91麻豆.com| 777久久久精品| 久久久久久久久久久久久久久99 | 久久免费电影网| 国产精品美女一区二区| 亚洲美女淫视频| 婷婷久久综合九色综合伊人色| 麻豆精品蜜桃视频网站| 国产盗摄一区二区三区| 色婷婷综合久色| 日韩欧美色综合| 国产精品电影院| 日韩精品乱码免费| 国产成a人亚洲| 欧美高清视频不卡网| 国产欧美一区二区精品秋霞影院| 亚洲手机成人高清视频| 蜜臀av性久久久久蜜臀aⅴ| 国产成人超碰人人澡人人澡| 色88888久久久久久影院按摩| 日韩一区二区影院| 亚洲人妖av一区二区| 老司机一区二区| 91高清在线观看| 中文字幕不卡一区| 麻豆国产精品一区二区三区| 91麻豆精东视频| 亚洲精品一区二区三区在线观看 | 亚洲欧美在线另类| 久久99日本精品| 欧美三级日韩三级国产三级| 久久精品人人做| 日韩精品欧美精品| 91丨porny丨国产| 26uuu亚洲综合色| 日韩精品福利网| 91蝌蚪国产九色| 国产欧美一区二区三区网站| 日韩电影一区二区三区| 99久久精品国产一区二区三区| 欧美一级高清片在线观看| 亚洲色图.com| 成人高清免费观看| xvideos.蜜桃一区二区| 日韩av一区二区在线影视| 91福利视频在线| 国产精品三级av在线播放| 精品综合免费视频观看| 在线成人免费视频| 一级女性全黄久久生活片免费| 成人av网站免费观看| xfplay精品久久| 精品一区二区成人精品| 日韩免费观看2025年上映的电影| 亚洲一区在线视频观看| 一本久久精品一区二区| 亚洲色图19p| 色视频欧美一区二区三区| 日韩一区中文字幕| 99精品视频在线观看| 国产精品久久久久桃色tv| 国产精品99久久久| 日本一区二区三区dvd视频在线| 极品美女销魂一区二区三区| 欧美一卡二卡在线| 另类综合日韩欧美亚洲| 精品毛片乱码1区2区3区|