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

📄 russiabox.java

📁 一个用java编的俄罗斯方块游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:


import java.awt.*;
import java.applet.*;
import java.util.*;

class Style
{
public int cusor_x,cusor_y;
public int style;
public Rectangle rect[];
private int width= 15,height= 15;
public int totle= 4;
public int rect_turn=2;

public Style(int style,int cusor_x)
{
this.style= style;
this.cusor_x= cusor_x;
create(style);
}

void create(int st)
{
switch(st)
{
case 0:
rect= new Rectangle[4];
rect[0]= new Rectangle((cusor_x- width),0,width,height);
rect[1]= new Rectangle((cusor_x- width),height,width,height);
rect[2]= new Rectangle(cusor_x,0,width,height);
rect[3]= new Rectangle(cusor_x,height,width,height);
break;
case 1:
rect= new Rectangle[4];
rect[0]= new Rectangle(cusor_x,0,width,height);
rect[1]= new Rectangle((cusor_x- width),height,width,height);
rect[2]= new Rectangle(cusor_x,height,width,height);
rect[3]= new Rectangle((cusor_x+width),height,width,height);
rect_turn= 4;
        break;
case 2:
rect= new Rectangle[4];
rect[0]= new Rectangle(cusor_x,0,width,height);
rect[1]= new Rectangle(cusor_x,height,width,height);
rect[2]= new Rectangle(cusor_x,2*height,width,height);
rect[3]= new Rectangle(cusor_x,3*height,width,height);
        break;
case 3:
rect= new Rectangle[4];
rect[0]= new Rectangle(cusor_x-width,0,width,height);
rect[1]= new Rectangle(cusor_x,0,width,height);
rect[2]= new Rectangle(cusor_x,height,width,height);
rect[3]= new Rectangle(cusor_x+width,height,width,height);
break;
case 4:
rect= new Rectangle[4];
rect[0]= new Rectangle(cusor_x,0,width,height);
rect[1]= new Rectangle(cusor_x+width,0,width,height);
rect[2]= new Rectangle(cusor_x,height,width,height);
rect[3]= new Rectangle(cusor_x-width,height,width,height);
break;
        case 5:
    totle=5;
            rect= new Rectangle[5];
    rect[0]= new Rectangle(cusor_x,0,width,height);
    rect[1]= new Rectangle(cusor_x,height,width,height);
    rect[2]= new Rectangle(cusor_x,2*height,width,height);
    rect[3]= new Rectangle(cusor_x,3*height,width,height);
            rect[4]= new Rectangle(cusor_x+width,3*height,width,height);
    rect_turn=4;
            break;
        case 6:
totle= 5;
            rect= new Rectangle[5];
    rect[0]= new Rectangle(cusor_x,0,width,height);
    rect[1]= new Rectangle(cusor_x,height,width,height);
    rect[2]= new Rectangle(cusor_x,2*height,width,height);
    rect[3]= new Rectangle(cusor_x,3*height,width,height);
rect[4]= new Rectangle(cusor_x-width,3*height,width,height);
        rect_turn= 4;
            break;
}
}

public void reset(int cx,int cy)
{
    for(int i= 0;i<totle;i++)
        rect[i].translate(cx,cy);
    return; 
}

public void turn(int turn_i)
{ 
    switch(style) 
    {
case 0:
        return;
    case 1: 
        if(turn_i==0)             
            rect[3].translate(rect[2].x-rect[3].x,rect[2].y+height-rect[3].y); 
        if(turn_i== 1)             
            rect[0].translate(rect[2].x+width-rect[0].x,rect[2].y-rect[0].y);     
        if(turn_i== 2)             
            rect[1].translate(rect[2].x-rect[1].x,rect[2].y-height-rect[1].y);         
        if(turn_i==3)
        {
        
            rect[0].translate(rect[2].x-rect[0].x,rect[2].y-height-rect[0].y); 
            rect[1].translate(rect[2].x-width-rect[1].x,rect[2].y-rect[1].y);             
            rect[3].translate(rect[2].x+width-rect[3].x,rect[2].y-rect[3].y);         
        }
        return;

    case 2: 
        if(turn_i== 0)         
        {
            rect[0].translate(rect[1].x-width-rect[0].x,rect[1].y-rect[0].y);
    rect[2].translate(rect[1].x+width-rect[2].x,rect[1].y-rect[2].y);
    rect[3].translate(rect[1].x+2*width-rect[3].x,rect[1].y-rect[3].y);         
        }        
        if(turn_i== 1)         
        {
            rect[0].translate(rect[1].x-rect[0].x,rect[1].y-height-rect[0].y);
    rect[2].translate(rect[1].x-rect[2].x,rect[1].y+height-rect[2].y);
    rect[3].translate(rect[1].x-rect[3].x,rect[1].y+2*height-rect[3].y);         
        }             
        break;          
    case 3: 
        if(turn_i== 0)             
        {
            rect[0].translate(rect[2].x-width-rect[0].x,rect[2].y-rect[0].y);
rect[3].translate(rect[2].x-width-rect[3].x,height+rect[2].y-rect[3].y);         
        }        
        if(turn_i== 1)         
        {
            rect[0].translate(rect[2].x-rect[1].x,rect[1].y-rect[0].y);
rect[3].translate(rect[2].x+width-rect[3].x,rect[2].y-rect[3].y);
        
        }

        break;

    case 4:

        if(turn_i== 0)
    
        {
            rect[1].translate(rect[2].x+width-rect[1].x,rect[2].y-rect[1].y);
    rect[3].translate(rect[2].x+width-rect[3].x,height+rect[2].y-rect[3].y);
        
        }
        
        if(turn_i==1)
        
        {
            rect[1].translate(rect[0].x+width-rect[1].x,rect[0].y-rect[1].y);
    rect[3].translate(rect[2].x-width-rect[3].x,rect[2].y-rect[3].y);
        
        }

        break;                 
    case 5: 
        if(turn_i==0)
            rect[4].translate(rect[0].x-width-rect[4].x,rect[0].y-rect[4].y); 
        if(turn_i==1)         
        {
            rect[0].translate(rect[1].x-width-rect[0].x,rect[1].y-rect[0].y);
rect[2].translate(rect[1].x+width-rect[2].x,rect[1].y-rect[2].y);
            rect[3].translate(rect[1].x+2*width-rect[3].x,rect[1].y-rect[3].y);
            rect[4].translate(rect[1].x-width-rect[4].x,rect[1].y+height-rect[4].y);         
        }        
        if(turn_i==2)
            rect[4].translate(rect[3].x-rect[4].x,rect[3].y-height-rect[4].y);         
        if(turn_i==3)         
        {
            rect[0].translate(rect[1].x-rect[0].x,rect[1].y-height-rect[0].y);
rect[2].translate(rect[1].x-rect[2].x,rect[1].y+height-rect[2].y);
            rect[3].translate(rect[1].x-rect[3].x,rect[1].y+2*height-rect[3].y);
            rect[4].translate(rect[1].x+width-rect[4].x,rect[1].y+2*height-rect[4].y);         
        }        
        break; 
    case 6: 
        if(turn_i== 0)
            rect[4].translate(rect[0].x+width-rect[4].x,rect[0].y-rect[4].y);         
        if(turn_i==1)         
        {
            rect[0].translate(rect[1].x-width-rect[0].x,rect[1].y-rect[0].y);
rect[2].translate(rect[1].x+width-rect[2].x,rect[1].y-rect[2].y);
            rect[3].translate(rect[1].x+2*width-rect[3].x,rect[1].y-rect[3].y);
            rect[4].translate(rect[1].x-width-rect[4].x,rect[1].y-height-rect[4].y);         
        }        
        if(turn_i==2)         
            rect[4].translate(rect[3].x-rect[4].x,rect[3].y+height-rect[4].y);         
        if(turn_i==3)    
        {
            rect[0].translate(rect[1].x-rect[0].x,rect[1].y-height-rect[0].y);
rect[2].translate(rect[1].x-rect[2].x,rect[1].y+height-rect[2].y);
            rect[3].translate(rect[1].x-rect[3].x,rect[1].y+2*height-rect[3].y);
            rect[4].translate(rect[1].x-width-rect[4].x,rect[1].y+2*height-rect[4].y);         
        }        
        break; 
}
} 

private void paint_one(Graphics g,int x,int y)
{
Color color = Color.red;
g.setColor(color);
g.fillRect(x,y,width,height);
g.setColor(Color.lightGray);
g.drawLine(x,y,x+width-1,y);
g.drawLine(x+1,y+1,x+width-2,y+1);
g.drawLine(x,y,x,y+height-1);
g.drawLine(x+1,y+1,x+1,y+height-2);

g.setColor(color.darker());
g.drawLine(x+width-1,y,x+width-1,y+height-1);
g.drawLine(x+width-2,y+1,x+width-2,y+height-2);
g.drawLine(x+1,y+height-2,x+width-2,y+height-2);
g.drawLine(x,y+height-1,x+width-1,y+height-1);

}

public void paint(Graphics g)
{
for(int i=0;i< totle;i++)
paint_one(g,rect[i].x,rect[i].y); 
}
}

class save 
{
    public int pos[];
    public int index;

    public save(int index)
    {
        pos= new int[22];
        for(int i=0;i<22;i++)
            pos[i]=0;
        this.index= index;
    }

    public void clear()
    {
        for(int i=0;i<22;i++)
            pos[i]=0;
    }

}
 class Java_cool2 extends Applet implements Runnable
{
private Style cool;
    private Thread timer;
    private TextField aa= new TextField(15);
    private Image offscrean_image;
private Graphics offscrean_g;
    private final static int back_width=15*22,back_height= 15*24;
    private save save_h[];
    private int turn_i=0;
    private int score= 0;
private Button begin ,stop;
    private boolean restart= false;
    private boolean GameOver= false;
    private boolean candown= false;
private int level= 100;
Choice select_level= new Choice();

private String textStr = "Welcome";
    private char theChars[];
    private int strlen;
private int charOffsets[];
    private Color colors[];
    private Font f; 
    private FontMetrics fm; 
    private int phase = 0; 
    private int yOffset;

    public void init()
    {
setBackground(Color.lightGray);
        setLayout(null);    
        cool= new Style(3,30);
    save_h= new save[back_height/15];
    
        for(int i=0;i<back_height/15;i++)         
            save_h[i]= new save(i);     
        add(aa);          
        aa.reshape(340,70,120,25);    
        begin= new Button("Begin");     
        stop= new Button("Stop");
        add(begin);    
        begin.reshape(370,115,60,20); 
        add(stop);
            stop.reshape(370,150,60,20);
        String items[]= {"Level","Level1","Level2","Level3","Level4"};
add(select_level);
select_level.reshape(367,180,66,15);
for(int i= 0;i<items.length;i++)
select_level.addItem(items[i]);
offscrean_image= createImage(back_width,back_height); 
        offscrean_g= offscrean_image.getGraphics();
    
        f=new Font("ITALIC",Font.PLAIN+Font.BOLD,24); 
        fm=getFontMetrics(f); 
        int xPos=350;    
        yOffset = fm.getAscent()+5; 
        strlen = textStr.length();    
        theChars = new char [strlen];     
        charOffsets = new int [strlen]; 
        textStr.getChars(0,strlen,theChars,0);     
        colors = new Color[strlen];    
        float h; 
        for (int i = 0; i < strlen; i++)      
        {        
            h = ((float)i)/((float)strlen);     
            colors[i] = new Color(Color.HSBtoRGB(h,1.0f,1.0f));     
            charOffsets[i] = xPos;     
            xPos+=fm.charWidth(theChars[i]);     
        }    
        repaint();
}

public void sleep(int time)
{

⌨️ 快捷键说明

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