📄 game.java
字号:
import java.awt.*;import java.awt.event.*;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; }}public class game 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 = "俄罗斯方块"; 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(0,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("开始"); stop= new Button("停止"); add(begin); begin.reshape(370,115,60,20); add(stop); stop.reshape(370,150,60,20); String items[]= {"级别","第一级","第二级","第三级","第四级"};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=335; 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 + -