📄 mamakgame.java
字号:
package Mamak.games.eluosi;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;
////////////////////////////////////////////////////////////////////////////////
class systemStatus
{
public systemStatus(int tmpX,int tmpY)
{
origin=new Point(tmpX,tmpY);
iSystemStatus=0;
}
public void drawSystemStatus(Graphics g)
{
g.setColor(Color.black);
String strSystemStatus;
switch(iSystemStatus)
{
case 0:
strSystemStatus="初始化完成...\"S\"键开始.";
break;
case 1:
strSystemStatus="游戏进行中...\"D\"键暂停,\"S\"键重新开始.";
break;
case 2:
strSystemStatus="游戏暂停中...\"D\"键恢复,\"S\"键重新开始.";
break;
case 3:
strSystemStatus="GAMEOVER...\"S\"键重新开始.";
break;
default:
strSystemStatus="系统发生严重异常...请立即退出!!!";
break;
}
g.drawString(strSystemStatus,origin.x,origin.y);
}
public int getSystemStatus()
{
return iSystemStatus;
}
public void setSystemStatus(int iTmp)
{
iSystemStatus=iTmp;
}
private Point origin;
private final int ROWINTERVAL=15;
private int iSystemStatus;
}
////////////////////////////////////////////////////////////////////////////////
class copyright
{
public copyright(int tmpX,int tmpY)
{
origin=new Point(tmpX,tmpY);
}
public void drawCopyright(Graphics g)
{
String strCopyright;
strCopyright="暂停";
g.drawString(strCopyright,origin.x,origin.y);
strCopyright="D";
g.drawString(strCopyright,origin.x,origin.y+ROWINTERVAL);
strCopyright="翻转:";
g.drawString(strCopyright,origin.x,origin.y+2*ROWINTERVAL);
strCopyright="空 格 键";
g.drawString(strCopyright,origin.x,origin.y+3*ROWINTERVAL);
strCopyright="版本号:";
g.drawString(strCopyright,origin.x,origin.y+4*ROWINTERVAL);
strCopyright=" 1.0r";
g.drawString(strCopyright,origin.x,origin.y+5*ROWINTERVAL);
strCopyright="qq";
g.drawString(strCopyright,origin.x,origin.y+6*ROWINTERVAL);
strCopyright="42557253";
g.drawString(strCopyright,origin.x,origin.y+7*ROWINTERVAL);
}
private final int ROWINTERVAL=15;
private Point origin;
}
class score
{
public score(int tmpX,int tmpY)
{
origin=new Point(tmpX,tmpY);
iScore=0;
}
public void restart()
{
iScore=0;
}
public void drawScore(Graphics g)
{
g.setColor(Color.black);
String strScore;
strScore="得分:";
g.drawString(strScore,origin.x,origin.y);
strScore=" "+iScore;
g.drawString(strScore,origin.x,origin.y+ROWINTERVAL);
}
public void addScore(int tmpLineNum)
{
switch(tmpLineNum)
{
case 1:
iScore+=100;
break;
case 2:
iScore+=300;
break;
case 3:
iScore+=600;
break;
case 4:
iScore+=1000;
break;
}
}
private final int ROWINTERVAL=15;
private Point origin;
private int iScore;
}
class preview
{
public preview(int tmpX,int tmpY,int tmpHeightGrid,int tmpWidthGrid,int tmpHeight,int tmpWidth)
{
origin=new Point(tmpX,tmpY+tmpHeight);
iHeightGrid=tmpHeightGrid;
iWidthGrid=tmpWidthGrid;
iHeight=tmpHeight;
iWidth=tmpWidth;
aryGrids=new grid[iHeightGrid][iWidthGrid];
calGridToPosition();
}
public void calGridToPosition()
{
for(int i=0;i<iHeightGrid;i++)
{
for(int j=0;j<iWidthGrid;j++)
{
aryGrids[i][j]=new grid(iHeight/iHeightGrid,iWidth/iWidthGrid,origin.x+j*(iWidth/iWidthGrid),origin.y-i*(iHeight/iHeightGrid),1,1,0);
}
}
}
public void drawGrids(Graphics g,int[][] tmpRowColNos)
{
for(int i=0;i<tmpRowColNos.length;i++)
if((tmpRowColNos[i][0]!=-1)&&(tmpRowColNos[i][1]!=-1))
aryGrids[tmpRowColNos[i][0]][tmpRowColNos[i][1]].drawDiamonds(g);
}
public void drawGridFrame(Graphics g)
{
g.setColor(Color.lightGray);
for(int i=1;i<iWidthGrid;i++)
{
g.drawLine(origin.x+i*(iWidth/iWidthGrid),origin.y,origin.x+i*(iWidth/iWidthGrid),origin.y-iHeight);
}
for(int i=1;i<iHeightGrid;i++)
{
g.drawLine(origin.x,origin.y-i*(iHeight/iHeightGrid),origin.x+iWidth,origin.y-i*(iHeight/iHeightGrid));
}
g.setColor(Color.black);
g.drawRect(origin.x,origin.y-iHeight,iWidth,iHeight);
}
private Point origin;
private int iHeightGrid;
private int iWidthGrid;
private int iHeight;
private int iWidth;
private grid[][] aryGrids;
}
class diamonds
{
public diamonds(int tmpRowNo,int tmpColNo)
{
initDiamondsTable();
referPoint[0]=tmpRowNo;
referPoint[1]=tmpColNo;
orgReferPoint[0]=tmpRowNo;
orgReferPoint[1]=tmpColNo;
createNew();
iPreStatusNo=iStatusNo;
}
public void restart()
{
referPoint[0]=orgReferPoint[0];
referPoint[1]=orgReferPoint[1];
}
public void unCircumrotate()
{
referPoint[0]=preReferPoint[0];
referPoint[1]=preReferPoint[1];
iStatusNo=iPreStatusNo;
setAryDiamonds();
}
public void circumrotate()
{
preReferPoint[0]=referPoint[0];
preReferPoint[1]=referPoint[1];
iPreStatusNo=iStatusNo;
iStatusNo=diamondsTable[iSortNo][iStatusNo];
setAryDiamonds();
}
public void createNew()
{
iSortNo=(int)(Math.random()*100)%SORTNUM;
iStatusNo=(int)(Math.random()*100)%diamondsTable[iSortNo].length;
setAryDiamonds();
}
public int[] getRowNos()
{
int[] rtnRowNos=new int[iHeightGrid];
for(int i=0;i<iHeightGrid;i++)
{
rtnRowNos[i]=referPoint[0]+(iHeightGrid-i-1);
}
return rtnRowNos;
}
public int[][] diamondsPosition()
{
int[][] rtnRowColNos=new int[iHeightGrid*iWidthGrid][2];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(aryDiamonds[i][j]==1)
{
rtnRowColNos[i*iWidthGrid+j][0]=referPoint[0]+i;
rtnRowColNos[i*iWidthGrid+j][1]=referPoint[1]+j;
}
else
{
rtnRowColNos[i*iWidthGrid+j][0]=-1;
rtnRowColNos[i*iWidthGrid+j][1]=-1;
}
return(rtnRowColNos);
}
public int[][] leftTouchGrids()
{
int[][] rtnRowColNos=new int[iHeightGrid][2];
for(int i=0;i<iHeightGrid;i++)
{
for(int j=0;j<iWidthGrid;j++)
{
if(aryDiamonds[i][j]==1)
{
rtnRowColNos[i][0]=referPoint[0]+i;
rtnRowColNos[i][1]=referPoint[1]+j;
break;
}
}
}
return rtnRowColNos;
}
public int[][] rightTouchGrids()
{
int[][] rtnRowColNos=new int[iHeightGrid][2];
for(int i=0;i<iHeightGrid;i++)
{
for(int j=iWidthGrid-1;j>=0;j--)
{
if(aryDiamonds[i][j]==1)
{
rtnRowColNos[i][0]=referPoint[0]+i;
rtnRowColNos[i][1]=referPoint[1]+j;
break;
}
}
}
return rtnRowColNos;
}
public int[][] downTouchGrids()
{
int[][] rtnRowColNos=new int[iWidthGrid][2];
for(int i=0;i<iWidthGrid;i++)
{
for(int j=0;j<iHeightGrid;j++)
{
if(aryDiamonds[j][i]==1)
{
rtnRowColNos[i][0]=referPoint[0]+j;
rtnRowColNos[i][1]=referPoint[1]+i;
break;
}
}
}
return rtnRowColNos;
}
public void initDiamondsTable()
{
diamondsTable=new int[SORTNUM][];
diamondsTable[0]=new int[2];
diamondsTable[1]=new int[4];
diamondsTable[2]=new int[4];
diamondsTable[3]=new int[2];
diamondsTable[4]=new int[2];
diamondsTable[5]=new int[1];
diamondsTable[6]=new int[4];
for(int i=0;i<diamondsTable.length;i++)
for(int j=0;j<diamondsTable[i].length;j++)
if(j==diamondsTable[i].length-1)
diamondsTable[i][j]=0;
else
diamondsTable[i][j]=j+1;
}
public void setAryDiamonds()
{
switch(iSortNo)
{
case 0:
switch(iStatusNo)
{
case 0:
iHeightGrid=4;
iWidthGrid=1;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
aryDiamonds[i][j]=1;
break;
case 1:
iHeightGrid=1;
iWidthGrid=4;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
aryDiamonds[i][j]=1;
break;
}
break;
case 1:
switch(iStatusNo)
{
case 0:
iHeightGrid=3;
iWidthGrid=2;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==1)&&(j==1))||((i==2)&&(j==1)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
case 1:
iHeightGrid=2;
iWidthGrid=3;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==0)&&(j==1))||((i==0)&&(j==2)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
case 2:
iHeightGrid=3;
iWidthGrid=2;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==0)&&(j==0))||((i==1)&&(j==0)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
case 3:
iHeightGrid=2;
iWidthGrid=3;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==1)&&(j==0))||((i==1)&&(j==1)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
}
break;
case 2:
switch(iStatusNo)
{
case 0:
iHeightGrid=3;
iWidthGrid=2;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==1)&&(j==0))||((i==2)&&(j==0)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
case 1:
iHeightGrid=2;
iWidthGrid=3;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==1)&&(j==1))||((i==1)&&(j==2)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
case 2:
iHeightGrid=3;
iWidthGrid=2;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==0)&&(j==1))||((i==1)&&(j==1)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
case 3:
iHeightGrid=2;
iWidthGrid=3;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==0)&&(j==0))||((i==0)&&(j==1)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
}
break;
case 3:
switch(iStatusNo)
{
case 0:
iHeightGrid=3;
iWidthGrid=2;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==0)&&(j==0))||((i==2)&&(j==1)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
case 1:
iHeightGrid=2;
iWidthGrid=3;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==0)&&(j==2))||((i==1)&&(j==0)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
}
break;
case 4:
switch(iStatusNo)
{
case 0:
iHeightGrid=3;
iWidthGrid=2;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==0)&&(j==1))||((i==2)&&(j==0)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
case 1:
iHeightGrid=2;
iWidthGrid=3;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==0)&&(j==0))||((i==1)&&(j==2)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
}
break;
case 5:
iHeightGrid=2;
iWidthGrid=2;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
aryDiamonds[i][j]=1;
break;
case 6:
switch(iStatusNo)
{
case 0:
iHeightGrid=2;
iWidthGrid=3;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==1)&&(j==0))||((i==1)&&(j==2)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
case 1:
iHeightGrid=3;
iWidthGrid=2;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==0)&&(j==1))||((i==2)&&(j==1)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
case 2:
iHeightGrid=2;
iWidthGrid=3;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==0)&&(j==0))||((i==0)&&(j==2)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
case 3:
iHeightGrid=3;
iWidthGrid=2;
aryDiamonds=new int[iHeightGrid][iWidthGrid];
for(int i=0;i<iHeightGrid;i++)
for(int j=0;j<iWidthGrid;j++)
if(((i==0)&&(j==0))||((i==2)&&(j==0)))
aryDiamonds[i][j]=0;
else
aryDiamonds[i][j]=1;
break;
}
break;
}
}
public int getWidthGrid()
{
return iWidthGrid;
}
public int getStatusNo()
{
return iStatusNo;
}
public void setStatusNo(int tmpStatusNo)
{
iStatusNo=tmpStatusNo;
}
public int getSortNo()
{
return iSortNo;
}
public void setSortNo(int tmpSortNo)
{
iSortNo=tmpSortNo;
}
public int[] getReferPoint()
{
return(referPoint);
}
public void setReferPoint(int tmpRowNo,int tmpColNo)
{
referPoint[0]=tmpRowNo;
referPoint[1]=tmpColNo;
}
private final int SORTNUM=7;
private int[] orgReferPoint=new int[2];
private int[] preReferPoint=new int[2];
private int[] referPoint=new int[2];
private int iHeightGrid;
private int iWidthGrid;
private int[][] aryDiamonds;
private int iSortNo;
private int iStatusNo;
private int[][] diamondsTable;
private int iPreStatusNo;
}
class grid
{
public grid(int tmpHeight,int tmpWidth,int tmpX,int tmpY,int tmpDiffX,int tmpDiffY,int tmpInUse)
{
iHeight=tmpHeight;
iWidth=tmpWidth;
XYPosition=new Point(tmpX,tmpY-tmpHeight);
diffX=tmpDiffX;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -