初学者——Java之实现简易俄罗斯方块

这是去年写的第一个小项目(虽然感觉称不上是项目),但毕竟是一次完整的编程过程,当作是编程路上的学习经历发一下好了。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

class Block//方块父类
{
	private int x,y;//方块的坐标;
	protected int type;//方块的形态,横着是0,竖着是1
	protected int[][] bk;//横状方块
	protected int[][] kb;//竖状方块
	
	
	protected Block()//创建坐标,类型
	{
		Random random=new Random();
		x=random.nextInt(7);//随机方块出现的位置
		y=0;
		type=random.nextInt(2);//随机方块类型(横,竖)
	}
	
	
	//获取方块坐标
	public int getX()
	{
		return x;
	}
	
	public int getY()
	{
		return y;
	}

	//获取方块类型
	public int getType()
	{
		return type;
	}
	
	//获取数组宽度和高度
	public int getwidth()
	{
		return getBlock(type)[0].length;
	}
	
	public int getheigth()
	{
		return getBlock(type).length;
	}
	
	//根据类型返回状态方块
	public int[][] getBlock(int type)
	{
		if(type==0)
			return bk;
		else
			return kb;
	}
	
	public void Down()//下降方法
	{
		y++;
	}
	
	public void Left()//左移方法
	{
		x--;
	}
	
	public void Right()//右移方法
	{
		x++;
	}
	
	public void Turn()//旋转方法
	{
		
	}
	

	
}
//长条方块类
class Strip extends Block
{
	private final int w=4,h=1;
	
	Strip()
	{
		super();
		bk=new int[h][w];
		kb=new int[w][h];
		for(int i=0;i=MAX_blockheight;i--)
		{
			n=0;//计算这行方块数
			
			for(int j=0;j=MAX_blockheight;i--)
			for(int j=0;j=height)//检测是否最低点
				return true;
		
		//检测下方是否有方块
		for(int i=block[0].getY()+block[0].getheigth()-1;i>=0;i--)
			for(int j=block[0].getX()+block[0].getwidth()-1;j>=0;j--)
				if(board[i][j]==1&&board[i+1][j]==2)
					return true;
		return false;
	}

	private void makeDown() //下降方法
	{
		
		erasureblock();//擦除原方块
		block[0].Down();//改变y值使下降
		createblock();//产生新方块
		repaint();
	}

	//在新坐标上产生一个方块
	private void createblock() 
	{
		for(int bi=block[0].getY(),i=0;i=block[0].getY();bi--)	
				for(int bj=block[0].getX()+block[0].getheigth()-1;bj>=block[0].getX();bj--)
					if(board[bi][bj]==2)
						return true;

		return false;
	}

	public void makeRight() //右移方法
	{
		erasureblock();//擦除原方块
		block[0].Right();//调用方块的右移方法
		createblock();//产生新方块
		repaint();
	}

	public boolean collideR() //右移碰撞检测
	{
		if(block[0].getX()+block[0].getwidth()>=widht)
			return true;

		for(int bj=block[0].getX()+block[0].getwidth()-1;bj>=block[0].getX();bj--)
			for(int bi=block[0].getY();bi

你可能感兴趣的:(java)