⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 俄罗斯方块.java

📁 自己用JAVA编写的第一个俄罗斯方块小游戏,因为界面是为老婆设计的,后来送给老婆玩把她感动坏了,所以直到现在还记忆犹新.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package 狼魂;

import java.awt.*;
import java.awt.event.*; 
import java.util.ArrayList;

import javax.swing.*;

public class 俄罗斯方块 extends KeyAdapter  implements Runnable, MouseListener,MouseMotionListener
{   
	//定义变量(在下面)-----------------------------------------------------
	int[][] luos=new int[24][13];
	int[][] shis=new int[24][13];

	
	int[][]  lins=new int[24][13];
	int zhuanh;
	int zhuanl;	
	
	int[][] xias=new int[2][5];

	int fen=0;
	int ji=0;
	int zhong=0;
	int xiaKuai=0;


	//定义变量(结束)--------------------------------------------------------	
	int mx=0;
	int my=0;
    JFrame frame;
    Thread timerThread;
    boolean start=false;
    
    俄罗斯方块()
    {  
		//构造初始(在下面)-----------------------------------------------------
		造块();
		造下块();


		//构造初始(结束)--------------------------------------------------------	
		
		frame = new JFrame();
        frame.getContentPane().add(new Screen());
        frame.addKeyListener(this);   
        Container contentPane=frame.getContentPane();
        contentPane.addMouseListener(this);
        contentPane.addMouseMotionListener(this);

        //窗口大小  frame.setSize(宽, 高);
        frame.setSize(640+5*2, 480+22+5*2);

        frame.setVisible(true);
        frame.repaint();
    }
	public void mousePressed(MouseEvent e){}
	public void mouseReleased(MouseEvent e){}
	public void mouseEntered(MouseEvent e){}     
	public void mouseExited(MouseEvent e){}
	public void mouseDragged(MouseEvent e){}  

	//鼠标单击   
	public void mouseClicked(MouseEvent e)
	{
		//鼠标位置
		 mx=e.getX();
		my=e.getY();
		//鼠标左键
		if (e.getButton()==MouseEvent.BUTTON1)
		{
			//鼠标左键处理(在下面)-----------------------------------------------------
			

			//鼠标左键处理(结束)--------------------------------------------------------				
		}
		//鼠标右键
		else if (e.getButton() == MouseEvent.BUTTON3) 
		{
			//鼠标右键处理(在下面)-----------------------------------------------------



			//鼠标右键处理(结束)--------------------------------------------------------	
		}  
		frame.repaint();		  	
	}

	//鼠标移动
	public void mouseMoved(MouseEvent e)
	{
		//鼠标位置
		mx=e.getX();
		my=e.getY();
		//鼠标左键处理(在下面)-----------------------------------------------------


		//鼠标左键处理(结束)--------------------------------------------------------		
		frame.repaint();
	}

    public void keyPressed(KeyEvent evt)
    {
		//键盘处理
        switch(evt.getKeyCode()) 
        {	
			case KeyEvent.VK_ENTER:
				timerThread = new Thread(this);
				timerThread.start();
				start = !start;
				break;
			case KeyEvent.VK_SPACE:
				if(能死吗())
				{
					for (int h=0;h<24; h++ )
					{
						for (int l=0;l<13 ;l++ )
						{
							shis[h][l]=0;
							luos[h][l]=0;
						}
					}
					timerThread = new Thread(this);
					timerThread.start();
					start=true;
					fen=0;
					ji=0;
					造块();
					造下块();
					System.out.println(start);					
				}
				break;	
			case KeyEvent.VK_ESCAPE:
                start = false;
				System.exit(1);
				break;
			case KeyEvent.VK_LEFT:
				//键盘左箭头处理(在下面)-----------------------------------------------------
			if(能左移吗())
			{
				左移();
			}

				//键盘左箭头处理(结束)--------------------------------------------------------		
				break;
			case KeyEvent.VK_RIGHT:
				//键盘右箭头处理(在下面)-----------------------------------------------------
			if(能右移吗())
			{
				右移();
			}

				//键盘右箭头处理(结束)--------------------------------------------------------		
				break;
			case KeyEvent.VK_DOWN:
				//键盘下箭头处理(在下面)-----------------------------------------------------
			while(能落吗())
			{
				按下加速();
			}

				//键盘下箭头处理(结束)--------------------------------------------------------		
				break;
			case KeyEvent.VK_UP:
				//键盘上箭头处理(在下面)-----------------------------------------------------
				System.out.println( 能旋转吗());
				if(能旋转吗())
				{
					旋转();
				}

				//键盘上箭头处理(结束)--------------------------------------------------------		
				break;				

        }

        frame.repaint();
    }

    public void run()
    {
        while(true)
        {
            try
            { 
				//定时时间间隔  timerThread.sleep(毫秒);
				timerThread.sleep(300-50*ji);
            }
            catch (InterruptedException e)
            {  
				e.printStackTrace();
            }
            
            if(start==false)
                return;
			//定时处理(在下面)-----------------------------------------------------
			if(能落吗())
			{
				落();			
			}
			else
			{
				落实();
				int xh=销行();
				得分(xh);
				升级();

				造块();
				造下块();
			}

			//定时处理(结束)--------------------------------------------------------							
            frame.repaint();
        }
    }
    

    public class Screen extends JComponent
	{   
		public void paint(Graphics g)
		{
			 Graphics2D g2d= (Graphics2D)g;
			//画图处理(在下面)-----------------------------------------------------
			显示背景( g2d, this);
			显示图( g2d, this);
			显示块( g2d);
			显示落实( g2d);
			显示分( g2d);
			显示级( g2d);
			显示下块( g2d);
			显示字(g2d);
			if(能死吗())
			{
				游戏结束(g2d,this);
			}
			//画图处理(结束)--------------------------------------------------------				
		}
	}

    public static void main(String[] args)
    {
         new 俄罗斯方块();
    }

	void 显示背景(Graphics g2d,Screen s)
	{
		Image bj=(new ImageIcon("kk.PNG")).getImage();
		g2d.drawImage(bj,0,0,s);
	}
	void 显示图(Graphics g2d,Screen s)
	{
		Image bj=(new ImageIcon("cc.PNG")).getImage();
		g2d.drawImage(bj,11,110,s);
	}

	void 造块()
	{
		zhuanh=0;
		zhuanl=6;	  
		zhong=xiaKuai;
		switch (zhong)
		{
		case 0:
			luos[0][4]=0;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=1;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=0;	luos[1][6]=1;	luos[1][7]=0;	luos[1][8]=0;	
			break;
		case 1:
			luos[0][4]=0;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=0;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=1;	luos[1][6]=1;	luos[1][7]=0;	luos[1][8]=0;	
			break;
		case 2:
			luos[0][4]=0;	luos[0][5]=0;	luos[0][6]=1;	luos[0][7]=1;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=1;	luos[1][6]=1;	luos[1][7]=0;	luos[1][8]=0;	
			break;
		case 3:
			luos[0][4]=0;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=0;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=0;	luos[1][6]=1;	luos[1][7]=1;	luos[1][8]=0;	
			break;
		case 4:
			luos[0][4]=0;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=1;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=1;	luos[1][6]=0;	luos[1][7]=0;	luos[1][8]=0;	
			break;
		case 5:
			luos[0][4]=0;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=1;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=0;	luos[1][6]=0;	luos[1][7]=1;	luos[1][8]=0;	
			break;
		case 6:
			luos[0][4]=1;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=1;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=0;	luos[1][6]=0;	luos[1][7]=0;	luos[1][8]=0;	
			break;
		case 7:
			luos[0][4]=0;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=1;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=0;	luos[1][6]=0;	luos[1][7]=0;	luos[1][8]=0;	
			break;
		case 8:
			luos[0][4]=0;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=1;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=1;	luos[1][6]=0;	luos[1][7]=1;	luos[1][8]=0;	
			break;
		case 9:
			luos[0][4]=0;	luos[0][5]=0;	luos[0][6]=1;	luos[0][7]=0;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=0;	luos[1][6]=1;	luos[1][7]=0;	luos[1][8]=0;	
			break;
		case 10:
			luos[0][4]=0;	luos[0][5]=0;	luos[0][6]=1;	luos[0][7]=0;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=0;	luos[1][6]=0;	luos[1][7]=0;	luos[1][8]=0;	
			break;
		case 11:
			luos[0][4]=0;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=1;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=0;	luos[1][6]=1;	luos[1][7]=0;	luos[1][8]=0;	
			break;
		case 12:
			luos[0][4]=0;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=0;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=1;	luos[1][6]=1;	luos[1][7]=0;	luos[1][8]=0;	
			break;
		case 13:
			luos[0][4]=0;	luos[0][5]=0;	luos[0][6]=1;	luos[0][7]=1;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=1;	luos[1][6]=1;	luos[1][7]=0;	luos[1][8]=0;	
			break;
		case 14:
			luos[0][4]=0;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=0;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=0;	luos[1][6]=1;	luos[1][7]=1;	luos[1][8]=0;	
			break;
		case 15:
			luos[0][4]=0;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=1;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=1;	luos[1][6]=0;	luos[1][7]=0;	luos[1][8]=0;	
			break;
		case 16:
			luos[0][4]=0;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=1;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=0;	luos[1][6]=0;	luos[1][7]=1;	luos[1][8]=0;	
			break;
		case 17:
			luos[0][4]=1;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=1;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=0;	luos[1][6]=0;	luos[1][7]=0;	luos[1][8]=0;	
			break;
		case 18:
			luos[0][4]=0;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=1;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=0;	luos[1][6]=0;	luos[1][7]=0;	luos[1][8]=0;	
			break;
		case 19:
			luos[0][4]=0;	luos[0][5]=1;	luos[0][6]=1;	luos[0][7]=1;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=1;	luos[1][6]=0;	luos[1][7]=1;	luos[1][8]=0;	
			break;
		case 20:
			luos[0][4]=0;	luos[0][5]=0;	luos[0][6]=1;	luos[0][7]=0;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=0;	luos[1][6]=1;	luos[1][7]=0;	luos[1][8]=0;	
			break;
		case 21:
			luos[0][4]=0;	luos[0][5]=0;	luos[0][6]=1;	luos[0][7]=0;	luos[0][8]=0;	
			luos[1][4]=0;	luos[1][5]=0;	luos[1][6]=0;	luos[1][7]=0;	luos[1][8]=0;	
			break;

		}		
		xiaKuai=(int)((7+ji)*Math.random());
	}
	void 造下块()
	{
		switch (xiaKuai)
		{
		case 0:
			xias[0][0]=0;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=1;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=0;	xias[1][2]=1;	xias[1][3]=0;	xias[1][4]=0;	
			break;
		case 1:
			xias[0][0]=0;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=0;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=1;	xias[1][2]=1;	xias[1][3]=0;	xias[1][4]=0;		
			break;
		case 2:
			xias[0][0]=0;	xias[0][1]=0;	xias[0][2]=1;	xias[0][3]=1;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=1;	xias[1][2]=1;	xias[1][3]=0;	xias[1][4]=0;	
			break;
		case 3:
			xias[0][0]=0;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=0;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=0;	xias[1][2]=1;	xias[1][3]=1;	xias[1][4]=0;	
			break;
		case 4:
			xias[0][0]=0;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=1;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=1;	xias[1][2]=0;	xias[1][3]=0;	xias[1][4]=0;	
			break;
		case 5:
			xias[0][0]=0;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=1;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=0;	xias[1][2]=0;	xias[1][3]=1;	xias[1][4]=0;
			break;
		case 6:
			xias[0][0]=1;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=1;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=0;	xias[1][2]=0;	xias[1][3]=0;	xias[1][4]=0;
			break;
		case 7:
			xias[0][0]=0;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=1;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=0;	xias[1][2]=0;	xias[1][3]=0;	xias[1][4]=0;	
			break;
		case 8:
			xias[0][0]=0;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=1;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=1;	xias[1][2]=0;	xias[1][3]=1;	xias[1][4]=0;	
			break;
		case 9:
			xias[0][0]=0;	xias[0][1]=0;	xias[0][2]=1;	xias[0][3]=0;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=0;	xias[1][2]=1;	xias[1][3]=0;	xias[1][4]=0;
			break;
		case 10:
			xias[0][0]=0;	xias[0][1]=0;	xias[0][2]=1;	xias[0][3]=0;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=0;	xias[1][2]=0;	xias[1][3]=0;	xias[1][4]=0;
			break;
		case 11:
			xias[0][0]=0;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=1;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=0;	xias[1][2]=1;	xias[1][3]=0;	xias[1][4]=0;	
			break;
		case 12:
			xias[0][0]=0;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=0;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=1;	xias[1][2]=1;	xias[1][3]=0;	xias[1][4]=0;		
			break;
		case 13:
			xias[0][0]=0;	xias[0][1]=0;	xias[0][2]=1;	xias[0][3]=1;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=1;	xias[1][2]=1;	xias[1][3]=0;	xias[1][4]=0;	
			break;
		case 14:
			xias[0][0]=0;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=0;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=0;	xias[1][2]=1;	xias[1][3]=1;	xias[1][4]=0;	
			break;
		case 15:
			xias[0][0]=0;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=1;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=1;	xias[1][2]=0;	xias[1][3]=0;	xias[1][4]=0;	
			break;
		case 16:
			xias[0][0]=0;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=1;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=0;	xias[1][2]=0;	xias[1][3]=1;	xias[1][4]=0;
			break;
		case 17:
			xias[0][0]=1;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=1;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=0;	xias[1][2]=0;	xias[1][3]=0;	xias[1][4]=0;
			break;
		case 18:
			xias[0][0]=0;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=1;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=0;	xias[1][2]=0;	xias[1][3]=0;	xias[1][4]=0;	
			break;
		case 19:
			xias[0][0]=0;	xias[0][1]=1;	xias[0][2]=1;	xias[0][3]=1;	xias[0][4]=0;	
			xias[1][0]=0;	xias[1][1]=1;	xias[1][2]=0;	xias[1][3]=1;	xias[1][4]=0;	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -