初学者——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<w;i++)
		{
			bk[h-1][i]=1;
			kb[i][h-1]=1;
		}
	}

	public void Turn()//重写父类旋转方法
	{
		if(type==0)
			type=1;
		else
			type=0;
	}

}


//正方形方块类
class Square extends Block
{
	final private int w=2,h=2;
	
	Square()
	{
		super();
		bk=new int[h][w];
		kb=new int[w][h];
		for(int i=0;i<w;i++)
			for(int j=0;j<h;j++)
				{
					bk[i][j]=1;
					kb[j][i]=1;
				}
	}

}
//Z字方块1类
class Z1 extends Block
{
	final private int w=3,h=2;
	
	Z1()
	{
		super();
		bk=new int[h][w];
		kb=new int[w][h];
		bk[0][0]=bk[0][1]=bk[1][1]=bk[1][2]=1;
		kb[2][0]=kb[1][0]=kb[1][1]=kb[0][1]=1;
	}

	public void Turn()
	{
		if(type==0)
			type=1;
		else
			type=0;
	}
	
}

//Z字方块2类
class Z2 extends Block
{
	final private int w=3,h=2;
	
	Z2()
	{
		super();
		bk=new int[h][w];
		kb=new int[w][h];
		bk[0][2]=bk[0][1]=bk[1][1]=bk[1][0]=1;
		kb[0][0]=kb[1][0]=kb[1][1]=kb[2][1]=1;
	}

	public void Turn()
	{
		if(type==0)
			type=1;
		else
			type=0;
	}
	
}


//三角方块类
class triangle extends Block
{
	final private int w=3,h=2;
	
	triangle()
	{
		super();
		bk=new int[h][w];
		kb=new int[w][h];
		triangle(type);
	}
	
	//随机创建四种三角形状的一种
	private void triangle(int type) 
	{
		Random r=new Random();
		if(type==0)
		{
			if(r.nextInt(2)==0)
				bk[0][1]=bk[1][0]=bk[1][1]=bk[1][2]=1;
			else
				bk[1][1]=bk[0][0]=bk[0][1]=bk[0][2]=1;
		}
		else
		{
			if(r.nextInt(2)==0)
				kb[1][0]=kb[0][1]=kb[1][1]=kb[2][1]=1;
			else
				kb[1][1]=kb[0][0]=kb[1][0]=kb[2][0]=1;
		}
		
	
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值