📄 tetrics.java~77~
字号:
case 1:
// X orange;
//XXX
m_nPieceValue=200;
m_prePiece[0]=new Square(middle,top-2,5);
m_prePiece[1]=new Square(middle,top-1,5);
m_prePiece[2]=new Square(middle-1,top-2,5);
m_prePiece[3]=new Square(middle+1,top-2,5);
break;
case 2:
//XX green;
m_nPieceValue=180;
m_prePiece[0]=new Square(middle,top-2,2);
m_prePiece[1]=new Square(middle-1,top-1,2);
m_prePiece[2]=new Square(middle,top-1,2);
m_prePiece[3]=new Square(middle+1,top-2,2);
break;
case 3:
//XX blue;
m_nPieceValue=180;
m_prePiece[0]=new Square(middle,top-2,7);
m_prePiece[1]=new Square(middle+1,top-1,7);
m_prePiece[2]=new Square(middle,top-1,7);
m_prePiece[3]=new Square(middle-1,top-2,7);
break;
case 4:
//XX light blue;
m_nPieceValue=100;
m_prePiece[0]=new Square(middle-1,top-1,3);
m_prePiece[1]=new Square(middle,top-1,3);
m_prePiece[2]=new Square(middle-1,top-2,3);
m_prePiece[3]=new Square(middle,top-2,3);
break;
case 5:
//XXX purle;
m_nPieceValue=120;
m_prePiece[0]=new Square(middle,top-1,6);
m_prePiece[1]=new Square(middle-1,top-1,6);
m_prePiece[2]=new Square(middle+1,top-1,6);
m_prePiece[3]=new Square(middle+1,top-2,6);
break;
case 6:
//XXX yellow;
m_nPieceValue=120;
m_prePiece[0]=new Square(middle,top-1,4);
m_prePiece[1]=new Square(middle+1,top-1,4);
m_prePiece[2]=new Square(middle-1,top-1,4);
m_prePiece[3]=new Square(middle-1,top-2,4);
break;
}
}
/**
* 将预览的方块转变成正在动的方块
*/
private void transferPreToCur()
{
Square old[]=new Square[4];
old[0]=old[1]=old[2]=old[3]=new Square(-1,-1,0);
for(int i=0;i<4;i++)
{
m_curPiece[i]=m_prePiece[i];
}
m_bGameInPlay=moveSquares(old,m_curPiece);
if(!m_bGameInPlay)m_tFrame.sendStr("GameOver:"+m_nTheScore);
// else if(!m_bGameInPlay && m_tFrame!=null) m_tFrame.insertScoreReport(m_nTheScore);
}
//去掉可以消去的行
private void removelines()
{
/*outerlabel:
for(int j=0;j<m_nRows;j++)
{
for(int i=0;i<m_nCols;i++)
if(m_nField[i][j]==0)
continue outerlabel;
for(int k=j;k<m_nRows-1;k++)
for(int i=0;i<m_nCols;i++)
m_nField[i][k]=m_nField[i][k+1];
j-=1;
m_tFrame.sendStr("RemoveLine");
}*/
int count_move=0;
outerlabel:
for (int j = 0; j < m_nRows; j++) {
for (int i = 0; i < m_nCols; i++) {
if (m_nField[i][j] == 0) {
continue outerlabel;
}
}
for (int k = j; k < m_nRows - 1; k++) {
for (int i = 0; i < m_nCols; i++) {
m_nField[i][k] = m_nField[i][k + 1];
}
}
j -= 1;
if(count_move==0)
new Sound("moveline.wav");
count_move++;
if(count_move>4) break;
}
if(count_move>0){
m_tFrame.sendStr("RemoveLine:"+String.valueOf(count_move));
}
}
public void setKey(char s[]){
for(int i=0;i<s.length;i++)
key[i]=s[i];
}
public boolean keyDown(Event evt,int nKey)
{
if(!m_bGameInPlay) return true;
if(m_bPaused) return true;
/*
switch(nKey){
case key[0]:
//case 'A':
//case Event.LEFT:
moveCurPiece(-1,0,false);
m_bNeedNewPiece=false;
repaint();
break;
case key[1]:
//case 'D':
//case Event.RIGHT:
moveCurPiece(1,0,false);
m_bNeedNewPiece=false;
repaint();
break;
case key[2]:
case 'W':
//case Event.UP:
moveCurPiece(0,0,true);
repaint();
break;
case key[3]:
//case 'S':
//case Event.DOWN:
while(moveCurPiece(0,-1,false));
repaint();
break;
}*/
if (nKey==key[0]){
moveCurPiece(-1,0,false);
m_bNeedNewPiece=false;
repaint();
}
else if(nKey==key[1]){
moveCurPiece(1, 0, false);
m_bNeedNewPiece = false;
repaint();
}
else if(nKey==key[2]){
moveCurPiece(0, 0, true);
repaint();
}
else if(nKey==key[3]){
new Sound("down.WAV"); //when press the key of down
while (moveCurPiece(0, -1, false));
repaint();
}
return true;
}
/*public boolean keyDown(KeyEvent e)
{
if(!m_bGameInPlay) return true;
if(m_bPaused) return true;
switch(e.getKeyCode()){
case KeyEvent.VK_A:
System.out.print("A");
moveCurPiece(-1,0,false);
m_bNeedNewPiece=false;
repaint();
break;
case KeyEvent.VK_D:
moveCurPiece(1,0,false);
m_bNeedNewPiece=false;
repaint();
break;
case KeyEvent.VK_W:
moveCurPiece(0,0,true);
repaint();
break;
case KeyEvent.VK_S:
while(moveCurPiece(0,-1,false));
repaint();
break;
}
return true;
}*/
public synchronized void stop()
{
if(m_theThread!=null)
m_theThread.stop();
m_theThread=null;
}
public synchronized void pause()
{
if(m_theThread!=null)
{
try
{
m_theThread.suspend();
m_bPaused=true;
}
catch(Exception e){e.printStackTrace();}
}
}
public void setPlayLevel(int nLevel)
{
m_nPlayLevel=nLevel;
// System.out.println("m_nPlayLevel="+m_nPlayLevel);
Graphics g=getGraphics();
g.setFont(new Font("宋体",0,18));
int gx=m_nSqLength;
int gy=m_nSqLength*m_nRows/4+30;
g.clearRect(gx,gy-25,XOFFSET-gx,25);
g.drawString("Level:"+m_nPlayLevel,gx,gy);
// System.out.println("paint m_nPlayLevel="+m_nPlayLevel);
}
public int getPlayLevel()
{
return m_nPlayLevel;
}
public synchronized void addRandomLine(int n)
{
// Sound s=new Sound("add.WAV");
// s.start();
if (n < 2)return;
int add=n-1;
/*
int nRandom[] = new int[m_nCols];
boolean bAllZero=true;
boolean bNoZero=true;
for(int i=0;i<m_nCols;i++)
{
nRandom[i]=(int)(7*Math.random());
if(nRandom[i]!=0) bAllZero=false;
else bNoZero=false;
}
if(bAllZero)
{
nRandom[(int)(m_nCols*Math.random())]=(int)(Math.random()*6+1);
}
else if(bNoZero)
{
nRandom[(int)(m_nCols*Math.random())]=0;
}
*/
int i;
for(int nCol=0;nCol<m_nCols;nCol++)
for(int nRow=m_nRows+3;nRow>add-1;nRow--)
{
m_nField[nCol][nRow]=m_nField[nCol][nRow-add];
}
for(int k=0;k<add;k++){
//pruduce random line
int nRandom[] = new int[m_nCols];
boolean bAllZero=true;
boolean bNoZero=true;
for(i=0;i<m_nCols;i++)
{
nRandom[i]=(int)(7*Math.random());
if(nRandom[i]!=0) bAllZero=false;
else bNoZero=false;
}
if(bAllZero)
{
nRandom[(int)(m_nCols*Math.random())]=(int)(Math.random()*6+1);
}
else if(bNoZero)
{
nRandom[(int)(m_nCols*Math.random())]=0;
}
//add random line
for (int nCol = 0; nCol < m_nCols; nCol++)
m_nField[nCol][k] = nRandom[nCol];
}
for(i=0;i<4;i++)
{
m_curPiece[i].m_nRow++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -