俄罗斯方块小游戏

俄罗斯方块小游戏

简单的实现俄罗斯方块,只有一个主代码,很好理解的,有暂停/继续、重新开始、结束游戏的简单功能。这里就不多说实现的原理了,可以在网上进行相关的查询。这里就直接给出了源代码,这个也是我参考网上的,自己进行了相关的更改,增加了一些功能。

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import javax.swing.*;
import javax.swing.Timer;


public class MyGame extends JFrame {
   

	   public MyGame(){
   
		GameBody gamebody=new GameBody();
		gamebody.setBounds(5,10,500,600);  //
	    gamebody.setOpaque(false);
		gamebody.setLayout(null);
		addKeyListener(gamebody);
		add(gamebody);
		

		int w=Toolkit.getDefaultToolkit().getScreenSize().width;
        int h=Toolkit.getDefaultToolkit().getScreenSize().height;
		JLabel image=new JLabel(new ImageIcon("13.jpg"));
		image.setBounds(0,0,500,600);
	    getLayeredPane().setLayout(null);
		getLayeredPane().add(image,new Integer(Integer.MIN_VALUE));
		((JPanel)getContentPane()).setOpaque(false);

		final JButton login=new JButton(new ImageIcon("login4.PNG"));
		login.setContentAreaFilled(false);
		login.setMargin(new Insets(0,0,0,0));
		login.setBorderPainted(false);
		login.setBounds(340,320,120,26);
		gamebody.add(login);

		login.addActionListener(new ActionListener(){
   
		   public void actionPerformed(ActionEvent e) {
       //登录的按钮
				if(e.getSource()==login){
   
				requestFocus(true);    //获得焦点,不用失去焦点
				gamebody.resetMap();   //重置地图
				gamebody.drawWall();   //冲重新绘制边界墙体
				gamebody.createshape();   //重新产生新的地图
				gamebody.setStart(false);  //唤醒定时下落的线程
			    gamebody.score=0;       //将分数置为零
			    repaint();
				}
		   }
		});

		final JButton pauselogin=new JButton(new ImageIcon("login6.PNG"));
		pauselogin.setContentAreaFilled(false);
		pauselogin.setMargin(new Insets(0,0,0,0));
		pauselogin.setBorderPainted(false);
		pauselogin.setBounds(340,370,120,26);
		gamebody.add(pauselogin);

		pauselogin.addMouseListener(new MouseListener(){
      //暂停的按钮
		  /* public void actionPerformed(ActionEvent e) {   //用事件监听,没用实现再次按暂停键后继续游戏
				//while(true){
				if (e.getSource()==pauselogin)
				{
					gamebody.setStart(true);
					requestFocus(true);

				}if(e.getSource()==login){
					new GameBody.setStart(false);
					requestFocus(true);
				}
				//}
		   }*/

		 //鼠标点击事件,可以分别判断不同的事件,做出不同的反应 
		public void mouseClicked(MouseEvent e){
   
			if(e.getButton()==e.BUTTON1 ){
        //单击左键暂停
				gamebody.setStart(true);   //将自动下落线程关闭
				//requestFocus(true);    //同时整个JFrame失去焦点,无法操作,但可以点击按钮
			}
        else if(e.getButton()==e.BUTTON3 ){
      //右击暂停,继续游戏
                gamebody.setStart(false);   //唤醒自动下落线程
				requestFocus(true);
			}
        if(e.getClickCount()==2){
        //左键双击,也可以继续游戏
                gamebody.setStart(false);
			    requestFocus(true);
			}
		}
		public void mouseEntered(MouseEvent e){
   }
		public void mouseExited(MouseEvent e){
   }
		public void mousePressed(MouseEvent e){
   }
		public void mouseReleased(MouseEvent e){
   }
		   
		});

		final JButton overlogin=new JButton(new ImageIcon("login5.PNG"));   //退出的按钮
		overlogin.setMargin(new Insets(0,0,0,0));
		overlogin.setContentAreaFilled(false);
		overlogin.setBounds(340,420,120,26);
		overlogin.setBorderPainted(false);
		add(overlogin);

		overlogin.addActionListener(new ActionListener(){
   
		   public void actionPerformed(ActionEvent e) {
   
		      System.exit(1);
		   }
		});
        
		setTitle("俄罗斯方块 V.1.0");
		setResizable(false);
		setFocusable(true);
		setBounds((w-500)/2,(h-600)/2,500,600);
		setLayout(null);

		setVisible(true);
		setDefaultCloseOperation(3);
	}
	public static void main(String[
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值