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 LV23
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日
最近浏览更多
微信网友_7556339099734016 LV3
6月23日
13133117021 LV5
2024年12月24日
saikiTEST
2024年12月12日
暂无贡献等级
yimaoermao LV1
2024年9月21日
luoyanglin LV2
2024年9月14日
azzzz1 LV2
2024年6月26日
bill1234 LV1
2024年6月23日
RicardoLou
2024年5月7日
暂无贡献等级
ClydeSon LV5
2023年12月27日
1474371745 LV1
2023年12月23日

