gameke.java
来自「一个俄罗斯方块游戏」· Java 代码 · 共 307 行
JAVA
307 行
package iiist1;
import iiist2.Score;
import iiist2.Square;
import iiist2.State;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
public class GameKe extends KeyAdapter implements KeyListener, Runnable,ActionListener
{
//=============声明==================
Square square;
//////==========end==============
JFrame frame;
boolean start =false;
Thread timerThread;
// JMenuBar mb = new JMenuBar();
// JMenu file = new JMenu("File");
// JMenuItem save = new JMenuItem("Save");
// JMenuItem open = new JMenuItem("Open File");
// JMenuItem close = new JMenuItem("Close");
public GameKe()
{
//==========初始化构造函数==================
new Init();
//=======end==============
frame = new JFrame();
frame.addMouseListener(new DoubleClick());
frame.addMouseMotionListener(new DoubleClick());
frame.getContentPane().add(new Screen());
frame.addKeyListener(this);
// save.addActionListener(this);
// open.addActionListener(this);
// close.addActionListener(this);
// mb.add(file);
// file.add(save);
// file.add(open);
// file.add(close);
// frame.setJMenuBar(mb);
frame.setSize(640+5*2, 480+5*2+25+30);
frame.setVisible(true);
frame.repaint();
}
public void run()
{
try
{
timerThread.sleep(400);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
while(start)
{
//running
}
}
public void keyPressed(KeyEvent e)
{
switch(e.getKeyCode())
{
case KeyEvent.VK_ENTER:
break;
case KeyEvent.VK_ESCAPE:
start =false;
System.exit(1);
break;
case KeyEvent.VK_UP:
break;
case KeyEvent.VK_DOWN:
break;
case KeyEvent.VK_RIGHT:
break;
case KeyEvent.VK_LEFT:
break;
}
}
public class Screen extends JComponent
{
public void paint(Graphics g)
{
Graphics2D g2d =(Graphics2D)g;
//=============draw picture=========
showOther( g2d,this);
square.showFirstSquare(g2d);
square.showMergeSquare(this, g2d);
square.showSecondSquare(g2d, this);
//===============end draw picture===========
frame.repaint();
}
}
public class ScrollBarExample extends JPanel
{
JLabel label;
public ScrollBarExample()
{
super(true);
label = new JLabel();
setLayout(new BorderLayout());
JScrollBar hbar =new JScrollBar(JScrollBar.HORIZONTAL, 30,20,0,3000);
JScrollBar vbar =new JScrollBar(JScrollBar.VERTICAL,30,40,0,3000);
hbar.setUnitIncrement(2);
vbar.setUnitIncrement(1);
hbar.addAdjustmentListener(new MyAdjustmentListener());
vbar.addAdjustmentListener(new MyAdjustmentListener());
add(hbar,BorderLayout.SOUTH);
add(vbar,BorderLayout.EAST);
add(label,BorderLayout.CENTER);
}
public class MyAdjustmentListener implements AdjustmentListener
{
public void adjustmentValueChanged(AdjustmentEvent e)
{
label.setText("" + e.getValue());
repaint();
}
}
}
public class DoubleClick implements MouseListener, MouseMotionListener
{
private boolean flag = false;
//用来判断是副已经执行doubleClick Event
private int clickNum =0;
//涌来判断是夫执行double Click Event
public void mouseClicked (MouseEvent e)
{
final MouseEvent me = e; //Source Event
flag = false;
//每次点击鼠标初始化事件执行标志为false;
if(clickNum==1) // 当clickTime ==1 时执行事件
{
mouseDoubleClicked(me);//执行double Click event
clickNum=0; //初始化double Click Event 执行标志为0;
this.flag=true; // double Clicke Event 已执行事件标志为true;
return ;
}
java.util.Timer timer= new java.util.Timer();
timer.schedule(new java.util.TimerTask()
{
private int n=0;//纪录定时器执行次数
//定时器开始执行, 延时0,2秒后确定是夫执行单击事件
public void run()
{
if(flag)
{
n=0;
clickNum=0;
this.cancel();
return ;
}
if(n==1) // 定时器等待0,2秒后, double click event 仍未发生, 执行单击事件
{
mouseSingleClicked(me); //执行单击事件;
flag=true;
clickNum=0;
n=0;
this.cancel();
return ;
}
clickNum++; n++;
}
}, new java.util.Date(),400
);
}
public void mouseSingleClicked(MouseEvent e)
{
if(e.getButton()==MouseEvent.BUTTON1)
{
System.out.println("single Left Clicked!!!!");
}
else if(e.getButton() == MouseEvent.BUTTON3)
{
System.out.println("single Right Click");
}
frame.repaint();
}
public void mouseDoubleClicked(MouseEvent e)
{
System.out.println("Double Clicked!!");
frame.repaint();
}
public void mouseEntered(MouseEvent arg0) { }
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) { }
public void mouseReleased(MouseEvent arg0) {}
public void mouseDragged(MouseEvent arg0) { }
public void mouseMoved(MouseEvent arg0) {}
}
public static void main(String [] e)
{
new GameKe();
}
public int rand(int from ,int to)
{
return (int)(from+(to-from+1)*Math.random());
}
public void showPic(Graphics2D g2d, Screen s,String file ,int x, int y)
{
java.io.File files = new java.io.File(file);
if(files.exists())
{
Image phto = (new ImageIcon(file)).getImage();
g2d.drawImage(phto,x,y,s);
}
else
{
System.out.println("The file path does not exist");
}
}
public boolean join(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2)
{
Rectangle r1 = new Rectangle(x1,y1, w1, h1);
Rectangle r2 = new Rectangle(x2,y2, w2, h2);
return r1.intersects(r2);
}
public void actionPerformed(ActionEvent e)
{
// if(e.getSource()==save)
// {
// new Init();
// }
//
// if(e.getSource()==open)
// {
//
// }
// if(e.getSource()==close)
// {
// System.exit(1);
// }
}
public class Init
{
public Init()
{
square = new Square();
square.createFirstSquare();
square.createSecondSquare();
}
}
public void gameOver()
{
start=false;
System.exit(1);
}
public void showOther(Graphics2D g2d,Screen s)
{
showPic(g2d,s,"pic/kk.png",0,0);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?