📄 ptetrics.java~142~
字号:
for(int i=0;i<to.length;i++)
m_nField[to[i].m_nColumn][to[i].m_nRow]=to[i].m_nColor;
return true;
}
private void newPrePiece()
{
int middle=m_nCols/2;
int top=m_nRows;
switch((int)(Math.random()*7))
{
case 0:
//XXXX red;
m_nPieceValue=100;
m_prePiece[0]=new Square(middle-1,top-1,1);
m_prePiece[1]=new Square(middle-2,top-1,1);
m_prePiece[2]=new Square(middle,top-1,1);
m_prePiece[3]=new Square(middle+1,top-1,1);
break;
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 cnewPrePiece()
{
int middle=m_nCols/2;
int top=m_nRows;
c_type=(int)(Math.random()*7);
switch(c_type)
{
case 0:
//XXXX red;
c_nPieceValue=100;
c_prePiece[0]=new Square(middle-1,top-1,1);
c_prePiece[1]=new Square(middle-2,top-1,1);
c_prePiece[2]=new Square(middle,top-1,1);
c_prePiece[3]=new Square(middle+1,top-1,1);
break;
case 1:
// X orange;
//XXX
c_nPieceValue=200;
c_prePiece[0]=new Square(middle,top-2,5);
c_prePiece[1]=new Square(middle,top-1,5);
c_prePiece[2]=new Square(middle-1,top-2,5);
c_prePiece[3]=new Square(middle+1,top-2,5);
break;
case 2:
//XX green;
c_nPieceValue=180;
c_prePiece[0]=new Square(middle,top-2,2);
c_prePiece[1]=new Square(middle-1,top-1,2);
c_prePiece[2]=new Square(middle,top-1,2);
c_prePiece[3]=new Square(middle+1,top-2,2);
break;
case 3:
//XX blue;
c_nPieceValue=180;
c_prePiece[0]=new Square(middle,top-2,7);
c_prePiece[1]=new Square(middle+1,top-1,7);
c_prePiece[2]=new Square(middle,top-1,7);
c_prePiece[3]=new Square(middle-1,top-2,7);
break;
case 4:
//XX light blue;
c_nPieceValue=100;
c_prePiece[0]=new Square(middle-1,top-1,3);
c_prePiece[1]=new Square(middle,top-1,3);
c_prePiece[2]=new Square(middle-1,top-2,3);
c_prePiece[3]=new Square(middle,top-2,3);
break;
case 5:
//XXX purle;
c_nPieceValue=120;
c_prePiece[0]=new Square(middle,top-1,6);
c_prePiece[1]=new Square(middle-1,top-1,6);
c_prePiece[2]=new Square(middle+1,top-1,6);
c_prePiece[3]=new Square(middle+1,top-2,6);
break;
case 6:
//XXX yellow;
c_nPieceValue=120;
c_prePiece[0]=new Square(middle,top-1,4);
c_prePiece[1]=new Square(middle+1,top-1,4);
c_prePiece[2]=new Square(middle-1,top-1,4);
c_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);
}
private void ctransferPreToCur()
{
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++)
{
c_curPiece[i]=c_prePiece[i];
}
c_bGameInPlay=cmoveSquares(old,c_curPiece);
}
//去掉可以消去的行
private void removelines()
{
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){
caddRandomLine(count_move);
}
}
private synchronized void cremovelines()
{
int count_move=0;
outerlabel:
for (int j = 0; j < m_nRows; j++) {
for (int i = 0; i < m_nCols; i++) {
if (m_nRivalField[i][j] == 0) {
continue outerlabel;
}
}
for (int k = j; k < m_nRows - 1; k++) {
for (int i = 0; i < m_nCols; i++) {
m_nRivalField[i][k] = m_nRivalField[i][k + 1];
}
}
j -= 1;
if(count_move==0)
new Sound("moveline.wav");
count_move++;
if(count_move>4) break;
}
if(count_move>0){
addRandomLine(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&&!c_bGameInPlay) return true;
if(m_bPaused) return true;
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 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;
/* 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);*/
}
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 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(i=0;i<4;i++)
{
m_curPiece[i].m_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];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -