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

📄 brick.java

📁 我自己的俄罗斯方块
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			   break;
		}
   }

	    if(currentposition[3].getX()==19) IsEnd=true;
		return IsEnd;


	}



	public int getScore()	{
		return score;
	}

	public void getNewTop()
	{
		for(int i=0;i<=9;i++)
		for(int j=19;j>=0;j--)
		{
			if(BrickPanel[j][i].getBackground()==Color.black)
			{
			    TopRow[i]=j;

		   }
	   }
   }

	public void CheckScore()
	{
        getNewTop();

		for(int i=19;i>=0;i--)
		for(int j=0;j<=9;j++)
		{
			if(BrickPanel[i][j].getBackground()==Color.white)
			   {

				   break;

			   }
			if(j==9)
			{


				   score++;
				   for(int ClearLine=0;ClearLine<=9;ClearLine++)
				   {
					   for(int k=i;k>=TopRow[ClearLine];k--)
					   {
						   BrickPanel[k][ClearLine].setBackground(BrickPanel[k-1][ClearLine].getBackground());
					   }
				   }
				   i++;
				   getNewTop();

			}
		}
		setTitle("your score is "+score);
	}




	public boolean IsGameOver()	{
		boolean IsOver=false;
		//y is lines,x is rows

		for(int i=0;i<=9;i++)
		for(int j=19;j>=0;j--)
		{
			if(BrickPanel[j][i].getBackground()==Color.black)
			{
			    TopRow[i]=j;

		   }
		   else
		      TopRow[i]=19;

		   for(int BrickLines=0;BrickLines<=9;BrickLines++)
		   if(TopRow[i]==0) IsOver=true;
	   }
		return IsOver;
	}

	private class BrickTimerListener implements ActionListener	{
		public void actionPerformed(ActionEvent event)
		{

			//BrickPanel[12][9].setBackground(Color.blue);
			if(IsBrickEnd(currentposition))
			{

			    CheckScore();
			    if(IsGameOver())
			    {
					int score=getScore();
					System.out.println("game is over,and your score is "+score);
					String input=JOptionPane.showInputDialog("try again? just type ok");
					if(input.equals("ok")) NewGame();
					else
					System.exit(0);
				}
				else
				   NewBrick();
		  }


			else
			{

				BrickClear(currentposition);
			    for(int i=0;i<4;i++) currentposition[i].setX(currentposition[i].getX()+1);
			    BrickDraw(currentposition);


		   }

		}
	}

	private class BrickKeyListener implements KeyListener
	{
		public void keyPressed(KeyEvent event)
		{
			int keyCode=event.getKeyCode();
			if (keyCode==KeyEvent.VK_RIGHT)
			{

				if(!IsRightSide(currentposition))
				{
					BrickClear(currentposition);
				    for(int i=0;i<4;i++) currentposition[i].setY(currentposition[i].getY()+1);
				    BrickDraw(currentposition);
				}
			}
			if(keyCode==KeyEvent.VK_LEFT)
			{
				if(!IsLeftSide(currentposition))
				{
					BrickClear(currentposition);
				    for(int i=0;i<4;i++) currentposition[i].setY(currentposition[i].getY()-1);
				    BrickDraw(currentposition);
				}
			}
			if(keyCode==KeyEvent.VK_DOWN)
			{

				if(!IsBrickEnd(currentposition))

				{
					BrickClear(currentposition);
				    for(int i=0;i<4;i++) currentposition[i].setX(currentposition[i].getX()+1);
				    BrickDraw(currentposition);
				}
			}
			if(keyCode==KeyEvent.VK_UP)
			{


				BrickClear(currentposition);




				switch(shapekind)
				{
					case 0:
					   if(currentposition[2].getX()!=19)
					   {
						   currentposition[1].set(currentposition[2]);
					       currentposition[2].set(currentposition[3]);
					       currentposition[3].setXY((currentposition[1].getX()+1),currentposition[1].getY());
					       shapekind=1;
					   }
					   break;
					case 1:
					   if(currentposition[1].getY()!=0)
					   {
						   currentposition[0].setXY(currentposition[1].getX(),(currentposition[1].getY()-1));
					       shapekind=2;
					   }
					   break;
					case 2:
					   if(currentposition[1].getX()!=0)
					   {
						   currentposition[2].set(currentposition[1]);
					       currentposition[1].set(currentposition[0]);
					       currentposition[0].setXY((currentposition[2].getX()-1),currentposition[2].getY());
					       shapekind=3;
					   }
					   break;
					case 3:
					   if(currentposition[2].getY()!=9)
					   {
						   currentposition[3].setXY(currentposition[2].getX(),(currentposition[2].getY()+1));
					       shapekind=0;
					   }
					   break;
					case 4:
					   if(currentposition[0].getX()!=0)
					   {
						   currentposition[0].setXY((currentposition[0].getX()-1),currentposition[0].getY());
					       currentposition[1].setXY((currentposition[0].getX()+1),currentposition[0].getY());
					       currentposition[2].setXY(currentposition[1].getX(),(currentposition[1].getY()+1));
					       currentposition[3].setXY((currentposition[2].getX()+1),currentposition[2].getY());
					       shapekind=5;
					   }
					   break;
					case 5:
					   if(currentposition[2].getY()!=9)
					   {
						   currentposition[0].setXY((currentposition[2].getX()-1),currentposition[2].getY());
					       currentposition[1].setXY(currentposition[0].getX(),(currentposition[0].getY()+1));
					       currentposition[3].setXY((currentposition[0].getX()+1),currentposition[0].getY());
					       currentposition[2].setXY(currentposition[3].getX(),(currentposition[3].getY()-1));
					       shapekind=4;
					   }
					   break;
					case 6:
					   if(currentposition[1].getX()!=0)
					   {
						   currentposition[0].setXY((currentposition[1].getX()-1),currentposition[1].getY());
					       currentposition[2].setXY((currentposition[0].getX()+1),currentposition[0].getY());
					       currentposition[1].setXY(currentposition[2].getX(),(currentposition[2].getY()-1));
					       currentposition[3].setXY((currentposition[1].getX()+1),currentposition[1].getY());
					       shapekind=7;
					   }
					   break;
					case 7:
					   if(currentposition[2].getY()!=9)
					   {
						   currentposition[0].setXY((currentposition[1].getX()-1),currentposition[1].getY());
					       currentposition[1].setXY(currentposition[0].getX(),(currentposition[0].getY()+1));
					       currentposition[2].setXY((currentposition[1].getX()+1),currentposition[1].getY());
					       currentposition[3].setXY(currentposition[2].getX(),(currentposition[2].getY()+1));
					       shapekind=6;
					   }
					   break;
					case 8:
					   if(currentposition[1].getY()!=0&&currentposition[1].getY()<8)
					   {
						   currentposition[0].setXY(currentposition[1].getX(),(currentposition[1].getY()-1));
					       currentposition[2].setXY(currentposition[1].getX(),(currentposition[1].getY()+1));
					       currentposition[3].setXY(currentposition[1].getX(),(currentposition[1].getY()+2));
					       shapekind=9;
					   }
					   break;
					case 9:
					   if(currentposition[1].getX()!=0&&currentposition[1].getX()<18)
					   {
						   currentposition[0].setXY((currentposition[1].getX()-1),currentposition[1].getY());
					       currentposition[2].setXY((currentposition[1].getX()+1),currentposition[1].getY());
					       currentposition[3].setXY((currentposition[2].getX()+1),currentposition[2].getY());
					       shapekind=8;
					   }
					   break;



			}





				BrickDraw(currentposition);
			}
		}
		public void keyTyped(KeyEvent event){}
		public void keyReleased(KeyEvent event){}
	}


	private int[] TopRow;    private BrickPosition[][] choose;

	private int score;
	private int shapekind;
	private BrickPosition[] currentposition;
    private Timer timer ;
	private static final int WIDTH=200;
	private static final int HEIGHT=400;
	private JPanel[][] BrickPanel;

}



⌨️ 快捷键说明

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