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

📄 mamakgame.java

📁 第一次突破千行代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
diffY=tmpDiffY; 
inUse=tmpInUse; 
} 

public void drawGrid(Graphics g) 
{ 
if(inUse==1) 
{ 
g.setColor(Color.black); 
g.fillRect(XYPosition.x+diffX,XYPosition.y+diffY,iWidth-2*diffX,iHeight-2*diffY); 
} 
} 

public void drawDiamonds(Graphics g) 
{ 
g.setColor(Color.red); 
g.fillRect(XYPosition.x+diffX,XYPosition.y+diffY,iWidth-2*diffX,iHeight-2*diffY); 
} 

public int getInUse() 

{ 
return inUse; 
} 

public void setInUse(int tmpMode) 

{ 
inUse=tmpMode; 
} 

private int iHeight; 

private int iWidth; 

private Point XYPosition; 

private int diffX; 

private int diffY; 

private int inUse; 
} 

class board 
{ 
public board(int tmpX,int tmpY,int tmpHeightGrid,int tmpWidthGrid,int tmpHeight,int tmpWidth,int tmpBufferHeightGrid,int tmpBufferHeight) 

{ 

origin=new Point(tmpX,tmpY+tmpHeight); 

iHeightGrid=tmpHeightGrid; 
iWidthGrid=tmpWidthGrid; 
iHeight=tmpHeight; 
iWidth=tmpWidth; 
iBufferHeightGrid=tmpBufferHeightGrid; 
iBufferHeight=tmpBufferHeight; 
aryGrids=new grid[iHeightGrid+iBufferHeightGrid][iWidthGrid]; 

calGridToPosition(); 
objDiamonds=new diamonds(iHeightGrid,iWidthGrid/2-1); 
objSystemStatus=new systemStatus(10,10+300+20); 
} 

public void restart() 

{ 
for(int i=0;i<iHeightGrid+iBufferHeightGrid;i++) 
for(int j=0;j<iWidthGrid;j++) 
aryGrids[i][j].setInUse(0); 

} 

public int gameOverChk() 

{ 
int rtnGameOver=0; 
for(int i=0;i<iWidthGrid;i++) 
if(aryGrids[iHeightGrid][i].getInUse()==1) 
{ 
rtnGameOver=1; 
break; 
} 
return rtnGameOver; 
} 

public int conflictChk() 

{ 
int isConflict=0; 

int[][] rtnRowColNos; 
rtnRowColNos=objDiamonds.diamondsPosition(); 

for(int i=0;i<rtnRowColNos.length;i++) 
if(((rtnRowColNos[i][0]!=-1)&&(rtnRowColNos[i][1]!=-1))&&aryGrids[rtnRowColNos[i][0]][rtnRowColNos[i][1]].getInUse()==1) 
{ 
isConflict=1; 
break; 
} 
return isConflict; 
} 



public void adjust() 

{ 
int[] rtnReferPoint; 
int tmpWidthGrid; 
tmpWidthGrid=objDiamonds.getWidthGrid(); 
rtnReferPoint=objDiamonds.getReferPoint(); 
if((rtnReferPoint[1]+tmpWidthGrid)>iWidthGrid) 
objDiamonds.setReferPoint(rtnReferPoint[0],iWidthGrid-tmpWidthGrid); 
} 

public int removeRows() 

{ 
int[] rtnRowNos; 

int[] fullRowNos; 

int fullCount=0; 

rtnRowNos=objDiamonds.getRowNos(); 








fullRowNos=new int[rtnRowNos.length]; 
for(int i=0;i<fullRowNos.length;i++) 
fullRowNos[i]=0; 

for(int i=0;i<rtnRowNos.length;i++) 
{ 
int rowNo; 
int isFull; 
rowNo=rtnRowNos[i]; 
isFull=1; 
for(int j=0;j<iWidthGrid;j++) 
{ 
if(aryGrids[rowNo][j].getInUse()==0) 
{ 
isFull=0; 
break; 
} 
} 
if(isFull==1) 
{ 
fullRowNos[fullCount]=rowNo; 
fullCount++; 
} 
} 

for(int i=0;i<fullCount;i++) 
{ 
int rowNo; 
rowNo=fullRowNos[i]; 
for(int j=rowNo;j<iHeightGrid;j++) 
{ 
for(int k=0;k<iWidthGrid;k++) 
{ 
int tmpMode; 
tmpMode=aryGrids[j+1][k].getInUse(); 
aryGrids[j][k].setInUse(tmpMode); 
} 
} 
} 
return fullCount; 
} 

public void calGridToPosition() 
{ 
for(int i=0;i<(iHeightGrid+iBufferHeightGrid);i++) 
{ 
for(int j=0;j<iWidthGrid;j++) 
{ 
aryGrids[i][j]=new grid((iHeight+iBufferHeight)/(iHeightGrid+iBufferHeightGrid),iWidth/iWidthGrid,origin.x+j*(iWidth/iWidthGrid),origin.y-i*((iHeight+iBufferHeight)/(iHeightGrid+iBufferHeightGrid)),2,2,0); 
} 
} 
} 

public void drawGrids(Graphics g) 
{ 
for(int i=0;i<iHeightGrid;i++) 
for(int j=0;j<iWidthGrid ;j++) 
aryGrids[i][j].drawGrid(g); 

int[][] rtnRowColNos; 
rtnRowColNos=objDiamonds.diamondsPosition(); 






for(int i=0;i<rtnRowColNos.length;i++) 
if((rtnRowColNos[i][0]!=-1)&&(rtnRowColNos[i][1]!=-1)) 
if(rtnRowColNos[i][0]<iHeightGrid) 
aryGrids[rtnRowColNos[i][0]][rtnRowColNos[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+iBufferHeight)/(iHeightGrid+iBufferHeightGrid)),origin.x+iWidth,origin.y-i*((iHeight+iBufferHeight)/(iHeightGrid+iBufferHeightGrid))); 
} 


g.setColor(Color.black); 

g.drawRect(origin.x,origin.y-iHeight,iWidth,iHeight); 
} 


public int getHeightGrid() 
{ 
return iHeightGrid; 
} 

public int getWidthGrid() 
{ 
return iWidthGrid; 
} 

public int getBufferHeightGrid() 
{ 
return iBufferHeightGrid; 
} 

public int getAryGrids(int i,int j) 

{ 
return aryGrids[i][j].getInUse(); 
} 

public void setAryGrids(int i,int j,int tmpMode) 

{ 
aryGrids[i][j].setInUse(tmpMode); 
} 
private Point origin; 

private int iHeightGrid; 

private int iWidthGrid; 
private int iHeight; 
private int iWidth; 
private int iBufferHeightGrid; 

private int iBufferHeight; 
private grid[][] aryGrids; 


public diamonds objDiamonds; 
public systemStatus objSystemStatus; 

} 


class eluosiPanel extends JPanel implements KeyListener,ActionListener 
{ 
public eluosiPanel() 
{ 
b=new board(10,10,20,10,300,150,10,150); 
objPreview=new preview(10+150+10,10,5,5,50,50); 
objPreDiamonds=new diamonds(0,0); 
addKeyListener(this); 
objScore=new score(10+150+10,10+50+20); 
objCopyright=new copyright(10+150+10,10+50+20+15+20+50); 
t = new Timer(delay,this); 

} 


public boolean isFocusTraversable() 
{ 
return(true); 
} 

public void keyPressed(KeyEvent evt) 
{ 
int keyCode=evt.getKeyCode(); 
int[] rtnRowColNo; 
rtnRowColNo=b.objDiamonds.getReferPoint(); 
if(keyCode==KeyEvent.VK_LEFT) 
{ 
if(b.objSystemStatus.getSystemStatus()!=0&&b.objSystemStatus.getSystemStatus()!=2&&b.objSystemStatus.getSystemStatus()!=3) 
{ 
if(rtnRowColNo[1]-1>=0) 
{ 
t.stop(); 
int isTouch=0; 
int[][] aryLeftTouchGrids; 
aryLeftTouchGrids=b.objDiamonds.leftTouchGrids(); 
for(int i=0;i<aryLeftTouchGrids.length;i++) 
{ 
if(b.getAryGrids(aryLeftTouchGrids[i][0],aryLeftTouchGrids[i][1]-1)==1) 
{ 
isTouch=1; 
break; 
} 
} 
if(isTouch==0) 
b.objDiamonds.setReferPoint(rtnRowColNo[0],rtnRowColNo[1]-1); 
t.start(); 
} 
} 
} 
else 
if(keyCode==KeyEvent.VK_RIGHT) 
{ 
if(b.objSystemStatus.getSystemStatus()!=0&&b.objSystemStatus.getSystemStatus()!=2&&b.objSystemStatus.getSystemStatus()!=3) 
{ 
if(rtnRowColNo[1]+1<(b.getWidthGrid()-(b.objDiamonds.getWidthGrid()-1))) 
{ 
t.stop(); 

int isTouch=0; 
int[][] aryRightTouchGrids; 
aryRightTouchGrids=b.objDiamonds.rightTouchGrids(); 
for(int i=0;i<aryRightTouchGrids.length;i++) 
{ 
if(b.getAryGrids(aryRightTouchGrids[i][0],aryRightTouchGrids[i][1]+1)==1) 
{ 
isTouch=1; 
break; 
} 
} 
if(isTouch==0) 
b.objDiamonds.setReferPoint(rtnRowColNo[0],rtnRowColNo[1]+1); 
t.start(); 
} 
} 
} 
else 

if(keyCode==KeyEvent.VK_DOWN) 
{ 
if(b.objSystemStatus.getSystemStatus()!=0&&b.objSystemStatus.getSystemStatus()!=2&&b.objSystemStatus.getSystemStatus()!=3) 
{ 


if(rtnRowColNo[0]-1<0) 
{ 
int[][] rtnPosition; 
rtnPosition=b.objDiamonds.diamondsPosition(); 

for(int i=0;i<rtnPosition.length;i++) 
if((rtnPosition[i][0]!=-1)&&(rtnPosition[i][1]!=-1)) 
b.setAryGrids(rtnPosition[i][0],rtnPosition[i][1],1); 


int tmpLineNum; 
tmpLineNum=b.removeRows(); 
objScore.addScore(tmpLineNum); 

if(b.gameOverChk()==1) 
{ 

t.stop(); 
b.objSystemStatus.setSystemStatus(3); 

} 
else 
{ 

b.objDiamonds.setSortNo(objPreDiamonds.getSortNo()); 
b.objDiamonds.setStatusNo(objPreDiamonds.getStatusNo()); 
b.objDiamonds.setAryDiamonds(); 
objPreDiamonds.createNew(); 
b.objDiamonds.setReferPoint(b.getHeightGrid(),b.getWidthGrid()/2-1); 

} 
} 
else 
{ 

int isTouch=0; 

int[][] aryDownTouchGrids; 
aryDownTouchGrids=b.objDiamonds.downTouchGrids(); 
for(int i=0;i<aryDownTouchGrids.length;i++) 
{ 
if(b.getAryGrids(aryDownTouchGrids[i][0]-1,aryDownTouchGrids[i][1])==1) 
{ 
isTouch=1; 
break; 
} 
} 

if(isTouch==1) 

{ 
int[][] rtnPosition; 
rtnPosition=b.objDiamonds.diamondsPosition(); 

for(int i=0;i<rtnPosition.length;i++) 
if((rtnPosition[i][0]!=-1)&&(rtnPosition[i][1]!=-1)) 
b.setAryGrids(rtnPosition[i][0],rtnPosition[i][1],1); 


int tmpLineNum; 
tmpLineNum=b.removeRows(); 
objScore.addScore(tmpLineNum); 

if(b.gameOverChk()==1) 
{ 
t.stop(); 
System.out.println("GAME OVER!!"); 
b.objSystemStatus.setSystemStatus(3); 

} 
else 
{ 

b.objDiamonds.setSortNo(objPreDiamonds.getSortNo()); 
b.objDiamonds.setStatusNo(objPreDiamonds.getStatusNo()); 
b.objDiamonds.setAryDiamonds(); 
objPreDiamonds.createNew(); 
b.objDiamonds.setReferPoint(b.getHeightGrid(),b.getWidthGrid()/2-1); 

} 
} 
else 
{ 
b.objDiamonds.setReferPoint(rtnRowColNo[0]-1,rtnRowColNo[1]); 

} 
} 
} 
} 
else 
 
if(keyCode==KeyEvent.VK_SPACE) 
{ 
if(b.objSystemStatus.getSystemStatus()!=0&&b.objSystemStatus.getSystemStatus()!=2&&b.objSystemStatus.getSystemStatus()!=3) 
{ 
t.stop(); 

b.objDiamonds.circumrotate(); 
b.adjust(); 
if(b.conflictChk()==1) 

b.objDiamonds.unCircumrotate(); 
t.start(); 
} 
} 
else 
if(keyCode==KeyEvent.VK_S) 

{ 
if(b.objSystemStatus.getSystemStatus()==0) 

{ 
t.start(); 

b.objSystemStatus.setSystemStatus(1); 

} 
else 
if(b.objSystemStatus.getSystemStatus()==1||b.objSystemStatus.getSystemStatus()==2||b.objSystemStatus.getSystemStatus()==3) 

{ 
t.stop(); 
b.restart(); 

objScore.restart(); 
b.objDiamonds.restart(); 
b.objSystemStatus.setSystemStatus(1); 
t.start(); 
} 
} 
else 
if(keyCode==KeyEvent.VK_D) 

{ 
if(b.objSystemStatus.getSystemStatus()!=0&&b.objSystemStatus.getSystemStatus()!=3) 
{ 
if(b.objSystemStatus.getSystemStatus()==1) 
{ 
t.stop(); 
b.objSystemStatus.setSystemStatus(2); 
} 
else 
if(b.objSystemStatus.getSystemStatus()==2) 
{ 
t.start(); 
b.objSystemStatus.setSystemStatus(1); 
} 
} 
} 
repaint(); 
} 

public void keyReleased(KeyEvent evt) 
{} 

public void keyTyped(KeyEvent evt) 
{} 


public void actionPerformed(ActionEvent evt) 
{ 
int[] rtnRowColNo; 

rtnRowColNo=b.objDiamonds.getReferPoint(); 

if(rtnRowColNo[0]-1<0) 
{ 
int[][] rtnPosition; 
rtnPosition=b.objDiamonds.diamondsPosition(); 


for(int i=0;i<rtnPosition.length;i++) 
if((rtnPosition[i][0]!=-1)&&(rtnPosition[i][1]!=-1)) 
b.setAryGrids(rtnPosition[i][0],rtnPosition[i][1],1); 


int tmpLineNum; 
tmpLineNum=b.removeRows(); 
objScore.addScore(tmpLineNum); 


if(b.gameOverChk()==1) 
System.out.println("GAME OVER!!"); 

if(b.gameOverChk()==1) 
{ 
t.stop(); 

b.objSystemStatus.setSystemStatus(3); 
} 
else 
{ 

b.objDiamonds.setSortNo(objPreDiamonds.getSortNo()); 
b.objDiamonds.setStatusNo(objPreDiamonds.getStatusNo()); 
b.objDiamonds.setAryDiamonds(); 
objPreDiamonds.createNew(); 
b.objDiamonds.setReferPoint(b.getHeightGrid(),b.getWidthGrid()/2-1); 
} 
} 
else 
{ 

int isTouch=0; 

int[][] aryDownTouchGrids; 
aryDownTouchGrids=b.objDiamonds.downTouchGrids(); 
for(int i=0;i<aryDownTouchGrids.length;i++) 
{ 
if(b.getAryGrids(aryDownTouchGrids[i][0]-1,aryDownTouchGrids[i][1])==1) 
{ 
isTouch=1; 
break; 
} 
} 

if(isTouch==1) 

{ 
int[][] rtnPosition; 
rtnPosition=b.objDiamonds.diamondsPosition(); 

for(int i=0;i<rtnPosition.length;i++) 
if((rtnPosition[i][0]!=-1)&&(rtnPosition[i][1]!=-1)) 
b.setAryGrids(rtnPosition[i][0],rtnPosition[i][1],1); 


int tmpLineNum; 
tmpLineNum=b.removeRows(); 
objScore.addScore(tmpLineNum); 

if(b.gameOverChk()==1) 
System.out.println("GAME OVER!!"); 

if(b.gameOverChk()==1) 
{ 
t.stop(); 
System.out.println("GAME OVER!!"); 
b.objSystemStatus.setSystemStatus(3); 
} 
else 
{ 

b.objDiamonds.setSortNo(objPreDiamonds.getSortNo()); 
b.objDiamonds.setStatusNo(objPreDiamonds.getStatusNo()); 
b.objDiamonds.setAryDiamonds(); 
objPreDiamonds.createNew(); 
b.objDiamonds.setReferPoint(b.getHeightGrid(),b.getWidthGrid()/2-1); 
} 
} 
else 
{ 
b.objDiamonds.setReferPoint(rtnRowColNo[0]-1,rtnRowColNo[1]); 
} 
} 
repaint(); 
} 

public void paintComponent(Graphics g) 
{ 
super.paintComponent(g); 
b.drawGridFrame(g); 
b.drawGrids(g); 
objPreview.drawGridFrame(g); 
objPreview.drawGrids(g,objPreDiamonds.diamondsPosition()); 
objScore.drawScore(g); 
objCopyright.drawCopyright(g); 
b.objSystemStatus.drawSystemStatus(g); 
} 

private Timer t; 
private int delay=200; 
private board b; 
private diamonds objPreDiamonds; 
private preview objPreview; 
private score objScore; 
private copyright objCopyright; 
} 

class Mamak extends JFrame 
{ 
public Mamak() 
{ 
setTitle("Mamak俄罗斯方块"); 
setSize(240,400); 
addWindowListener(new WindowAdapter() 
{ 
public void windowClosing(WindowEvent e) 
{ 
System.exit(0); 
} 
}); 
Container contentPane=getContentPane();
contentPane.add(new eluosiPanel()); 
} 
} 

public class MamakGame 
{
	public static void main(String[] args) 
	{
		try
		{
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
		}
		catch(Exception e){}
		JFrame MT=new Mamak();
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		MT.setSize(300,400);
		MT.setLocation((d.width - MT.getSize().width) / 2, (d.height - MT.getSize().height) / 2-20);
		MT.setVisible(true);
		MT.show();
	} 
}

⌨️ 快捷键说明

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