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

📄 baseshape.java

📁 此游戏仅是用来使Java初学者掌握Java基础语法和面向对象的编程思想。
💻 JAVA
字号:

/**
 *声明:1、本程序是作为金鹰教育网学习Java基本语法的例子。可以自由使用,但必须保留此声明!
 *      2、具体的介绍、说明文档,请见金鹰教育网:www.eagledu.org
 *	    3、有问题的,请到金鹰教育网:www.eagledu.org中的Java标准版本课程中提出,我们会及时给予答复!
 *      4、有其它想法的,也可直接交流:eagleduorg@126.com
 */


import java.awt.*;

//是所有图形的基类
abstract class BaseShape
{
	private int rotateFlag=0;//保存旋转到第几下
	
	protected Pane pane[]=new Pane[4];//每个图形由四个方格所组成
	
	protected int xpos=100,ypos=0;//基点的位置,默认时其位置为第一行的中间
	
	//指定一个参考点,形成一个特定的图形
	public void setShape(int x,int y)
	{
		xpos=x;
		ypos=y;
		switch(rotateFlag)
		{
			case 0:
				defaultRotate();
				break;
			case 1:
				firstRotate();
				break;
			case 2:
				secondRotate();
				break;
			case 3:
				thirdRotate();
				break;
		}
	}
	
	//画图形
	public void paint(Graphics g)
	{

		for(int i=0;i<4;i++)
		{
			pane[i].paint(g);
		}
		
	}
	
	//顺转的计数
	public void rotate()
	{
		rotateFlag++;
		if(rotateFlag==4)
		{
			rotateFlag=0;
		}
	}
	
	//逆转动的计数
	public void contraRotate()
	{
		rotateFlag--;
		if(rotateFlag==-1)
		{
			rotateFlag=3;
		}
	}
	
	//默认时各方格形成图形的算法
	protected abstract void defaultRotate();

	//第一次旋转后各方格形成图形的算法
	protected abstract void firstRotate();

	//第二次旋转后各方格形成图形的算法
	protected abstract void secondRotate();

	//第三次旋转后各方格形成图形的算法
	protected abstract void thirdRotate();

	//得到方格左边的位置
	public int getLeft()
	{
		int xLoc[]={pane[0].getX(),pane[1].getX(),pane[2].getX(),pane[3].getX()};
		int min=xLoc[0];
		for(int i=1;i<4;i++)
		{
			if(xLoc[i]<min)
			{
				min=xLoc[i];
			}	
		}
		return min;
	}
	//得到方格右边的位置
	public int getRight()
	{
		int xLoc[]={pane[0].getX(),pane[1].getX(),pane[2].getX(),pane[3].getX()};
		int max=xLoc[0];
		for(int i=1;i<4;i++)
		{
			if(xLoc[i]>max)
			{
				max=xLoc[i];
			}	
		}
		return max+20;
	}
	//得到方格最底边的位置
	public int getBottom()
	{
		int yLoc[]={pane[0].getY(),pane[1].getY(),pane[2].getY(),pane[3].getY()};
		int max=yLoc[0];
		for(int i=1;i<4;i++)
		{
			if(yLoc[i]>max)
			{
				max=yLoc[i];
			}	
		}
		return max+20;
	}
	
	//返回对应方格的下标
	public int[] getPaneSuffix(int index)
	{
		return pane[index].getCellSuffix();
	}
	
	//返回对应的方格
	public Pane getPane(int index)
	{
		return pane[index];
	}
	
	//返回图形的位置
	public int[] getShapeLocation()
	{
		int loc[]={xpos,ypos};
		return loc;
	}
}

⌨️ 快捷键说明

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