📄 retpanel.java
字号:
//Lik俄罗斯方块 1.0beta1import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.geom.Line2D;import java.util.ArrayList;import javax.swing.JButton;import javax.swing.JPanel;import javax.swing.Timer;public class RetPanel extends JPanel{ /** * */ private static final long serialVersionUID = 1L; public RetPanel(){ super(); lrt=new LikRecT(); lrt.add(1,1); lrt.add(2,2); RetPanel.KeyHandle kh=new KeyHandle(); this.addKeyListener(kh); al=new ActionListener(){ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(!start){ lrt.createmove(); start=true; } else{ if(!outer.pause){ if(!lrt.movert(0,1)){ time.stop(); //outer.setVisible(false); outer.startButton.setVisible(true); outer.showstr="Game Over"; } } } outer.repaint(); } }; time=new Timer(DELAY,al); startButton=new JButton("Start"); startButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub outer.showstr=null; outer.pause=false; outer.start=false; outer.setFocusable(true); outer.lrt.start(); outer.startButton.setVisible(false); outer.time.setDelay(outer.DELAY); outer.time.start(); } }); this.add(startButton); } public void paintComponent(Graphics g){ super.paintComponent(g); Graphics2D g2=(Graphics2D)g; Line2D aline=new Line2D.Float(0,LikRecT.H*3,LikRecT.MAX_X*LikRecT.W,LikRecT.H*3); g2.draw(aline); Font f=new Font("SansSerif",Font.BOLD,20); g2.setFont(f); g2.drawString("clean :"+lrt.getn(),5,40); if(this.showstr!=null){ g2.setBackground(Color.LIGHT_GRAY); g2.setPaint(Color.BLACK); f=new Font("SansSerif",Font.BOLD,40); g2.setFont(f); g2.drawString(this.showstr,(int)(lrt.MAX_X*lrt.W/2-f.getStringBounds(this.showstr,g2.getFontRenderContext()).getWidth()/2),(int)(lrt.MAX_Y*lrt.H/2-f.getStringBounds(this.showstr,g2.getFontRenderContext()).getHeight()/2-f.getStringBounds(this.showstr,g2.getFontRenderContext()).getY())); } else{ this.draw(g2,Color.BLUE.darker().darker().darker(),lrt.getabove()); } this.draw(g2,Color.GRAY.darker().darker().darker(),lrt.getrts()); this.draw(g2,Color.MAGENTA,lrt.getmoverts()); } private void draw(Graphics2D g2,Color c,ArrayList<LikRecT.RecT> rts){ Color cc=g2.getColor(); for(LikRecT.RecT rt:rts){ g2.setPaint(Color.BLACK); g2.draw(rt.getRec2D_out()); g2.draw(rt.getRec2D_in()); //g2.fill(rt.getRec2D_out()); g2.setPaint(c.brighter().brighter().brighter()); g2.fill(rt.getRec2D_in()); } g2.setPaint(cc); } private class KeyHandle implements KeyListener{ public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } public void keyPressed(KeyEvent e) { // TODO Auto-generated method stub int keyCode=e.getKeyCode(); switch(keyCode){ case KeyEvent.VK_SPACE: if(outer.showstr==null&&!outer.pause) lrt.setRecT_m(); break; case KeyEvent.VK_DOWN: /*if(outer.showstr==null&&!outer.pause){ if(!lrt.movert(0,1)){ time.stop(); outer.showstr="Game Over"; } }*/ outer.time.setDelay(outer.DELAY/10); break; case KeyEvent.VK_RIGHT: if(outer.showstr==null&&!outer.pause) lrt.movert(1,0); break; case KeyEvent.VK_LEFT: if(outer.showstr==null&&!outer.pause) lrt.movert(-1,0); break; case KeyEvent.VK_UP: if(outer.pause) outer.pause=false; else outer.pause=true; break; default: break; } outer.repaint(); } public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub int keyCode=e.getKeyCode(); if(keyCode==KeyEvent.VK_DOWN) outer.time.setDelay(outer.DELAY); } } private final RetPanel outer=this; private LikRecT lrt; private boolean start=false; private ActionListener al; private Timer time; private final int DELAY=200; private String showstr=null; private boolean pause=false; private JButton startButton;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -