package game;

import util.Config;
import util.MyFrame;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.LinkedList;

public class Tetris extends MyFrame {

    Block block=new Block();
    Tetrisblok tetrisblok=new Tetrisblok(block);
    Image offScreenImage = null;
    Thread t=new Thread(new PaintThread());

     public void luanchFrame(){
         super.launchFrame();
         this.addKeyListener(new KeyMonitor());
         t.start();
     }



     public void paint(Graphics g){


         g.drawImage(bg,0,-100, null);

         for(int i = 1; i< Config.ROW; i++) {
             g.drawLine(0, Config.BlockSize * i, (Config.COL+7) * Config.BlockSize, Config.BlockSize * i);
         }
         for(int i=1; i<(Config.COL+7); i++) {
             g.drawLine(Config.BlockSize * i, 0, Config.BlockSize * i, Config.BlockSize * Config.ROW);
         }

         g.drawImage(head, 465, 100, null);

         tetrisblok.draw(g);

         //话分数区域
         for(int i=0;i<7;i++){
             Block block=new Block(Config.COL+i-1,Config.ROW-2);
             block.draw(g);
         }
         for(int i=0;i<Config.ROW;i++){
             Block block=new Block(Config.COL+5,Config.ROW-2-i);
             block.draw(g);
         }
         Color color = g.getColor();
         g.setColor(Color.gray);

         g.drawLine(Config.BlockSize*(Config.COL), (Config.ROW-10)*Config.BlockSize, Config.BlockSize*(Config.COL),(Config.ROW-6)*Config.BlockSize );
         g.drawLine(Config.BlockSize*(Config.COL+4), (Config.ROW-10)*Config.BlockSize, Config.BlockSize*(Config.COL+4),(Config.ROW-6)*Config.BlockSize );
         g.drawLine(Config.BlockSize*(Config.COL), (Config.ROW-6)*Config.BlockSize, Config.BlockSize*(Config.COL+4),(Config.ROW-6)*Config.BlockSize );
         g.drawLine(Config.BlockSize*(Config.COL), (Config.ROW-10)*Config.BlockSize, Config.BlockSize*(Config.COL+4),(Config.ROW-10)*Config.BlockSize );
         g.setFont(new Font("宋体", Font.BOLD, 20));
         g.drawString("下一个方块:",Config.BlockSize*(Config.COL) , Config.BlockSize*(Config.ROW-10)-20);

         g.setFont(new Font("宋体", Font.BOLD, 30));
         g.drawString("score:"+block.score,450 , 300);
         g.drawString("speed:"+block.speed,450 , 350);
         //g.drawString(""+System.currentTimeMillis(), 465, 300);
        g.setColor(color);
        tetrisblok.drawNextBlock(g);

     }
    private class KeyMonitor extends KeyAdapter {
        public void keyPressed(KeyEvent e) {
            tetrisblok.keyPressed(e);
        }
    }
    class PaintThread implements Runnable{

        @Override
        public void run() {
            while(true){
                    repaint();

                try {
                    Thread.sleep(20);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    //双缓冲解决屏幕一闪一闪
    public void update(Graphics g) {
        if(offScreenImage == null) {
            offScreenImage = this.createImage((Config.COL+7) * Config.BlockSize, Config.ROW * Config.BlockSize);
        }
        Graphics gOff = offScreenImage.getGraphics();
        paint(gOff);
        g.drawImage(offScreenImage, 0, 0,  null);
    }

     public static void main(String[] args) {
         Tetris t=new Tetris();
         t.luanchFrame();

     }
}
最近下载更多
ClydeSon  LV5 2023年12月27日
1474371745  LV1 2023年12月23日
微信网友_6699076084797440  LV7 2023年10月30日
lsglsg9  LV22 2022年9月27日
uuuuuu1  LV1 2022年6月3日
姜广坤  LV14 2022年5月21日
二十  LV1 2021年12月8日
15661649928  LV1 2020年12月12日
jrh947869206  LV4 2020年12月7日
Zcjiayouya  LV1 2020年9月6日
最近浏览更多
ClydeSon  LV5 2023年12月27日
1474371745  LV1 2023年12月23日
iceworld 2023年11月30日
暂无贡献等级
1112WHQ  LV7 2023年11月3日
微信网友_6699076084797440  LV7 2023年10月30日
大白8加3  LV1 2023年8月18日
W1234561 2023年7月18日
暂无贡献等级
3210619837 2023年6月23日
暂无贡献等级
小安同学  LV7 2023年5月11日
wind12 2023年3月26日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友