?? shape.java
字號:
package com.google.andriod.tetris;
public class Shape{
private static final int SHAPE_I = 0;
private static final int SHAPE_S = 1;
private static final int SHAPE_NS= 2;
private static final int SHAPE_L = 3;
private static final int SHAPE_NL= 4;
private static final int SHAPE_T = 5;
private static final int SHAPE_O = 6;
private int type;
public class Vertex{
public int x;
public int y;
}
public Vertex[] vertex;
private Vertex center_vertex;
public Shape(Shape srcShape){
center_vertex = new Vertex();
center_vertex.x = srcShape.center_vertex.x;
center_vertex.y = srcShape.center_vertex.y;
type = srcShape.type;
vertex = new Vertex[4];
for(int i=0; i<4; i++){
vertex[i]=new Vertex();
vertex[i].x=srcShape.vertex[i].x;
vertex[i].y=srcShape.vertex[i].y;
}
}
public Shape(int X, int Y, int Type){
center_vertex = new Vertex();
center_vertex.x = X;
center_vertex.y = Y+1;
vertex = new Vertex[4];
switch(Type){
case SHAPE_I:
type = SHAPE_I;
for(int i=0; i<4; i++){
vertex[i]=new Vertex();
vertex[i].x=X;
vertex[i].y=Y+i;
}
break;
case SHAPE_S:
type = SHAPE_S;
for(int i=0; i<4; i++){
vertex[i]=new Vertex();
vertex[i].x=X+((i>1)?1:0);
vertex[i].y=Y+(i-((i>1)?1:0));
}
break;
case SHAPE_NS:
type = SHAPE_NS;
for(int i=0; i<4; i++){
vertex[i]=new Vertex();
vertex[i].x=X-((i>1)?1:0);
vertex[i].y=Y+(i-((i>1)?1:0));
}
break;
case SHAPE_L:
type = SHAPE_L;
for(int i=0; i<4; i++){
vertex[i]=new Vertex();
vertex[i].x=X+((i>2)?1:0);
vertex[i].y=Y+(i-((i>2)?1:0));
}
break;
case SHAPE_NL:
type = SHAPE_NL;
for(int i=0; i<4; i++){
vertex[i]=new Vertex();
vertex[i].x=X-((i>2)?1:0);
vertex[i].y=Y+(i-((i>2)?1:0));
}
break;
case SHAPE_T:
type = SHAPE_T;
for(int i=0; i<4; i++){
vertex[i]=new Vertex();
}
vertex[0].x=X;
vertex[0].y=Y;
vertex[1].x=X;
vertex[1].y=Y+1;
vertex[2].x=X+1;
vertex[2].y=Y+1;
vertex[3].x=X;
vertex[3].y=Y+2;
break;
case SHAPE_O:
type = SHAPE_O;
for(int i=0; i<4; i++){
vertex[i]=new Vertex();
}
vertex[0].x=X;
vertex[0].y=Y;
vertex[1].x=X+1;
vertex[1].y=Y;
vertex[2].x=X;
vertex[2].y=Y+1;
vertex[3].x=X+1;
vertex[3].y=Y+1;
break;
}
}
public void MoveDown(){
center_vertex.y += 1;
for(int i=0; i<4; i++){
vertex[i].y += 1;
}
}
public void MoveLeft(){
center_vertex.x -= 1;
for(int i=0; i<4; i++){
vertex[i].x -= 1;
}
}
public void MoveRight(){
center_vertex.x += 1;
for(int i=0; i<4; i++){
vertex[i].x += 1;
}
}
public void Rotate(){
int oldx, oldy;
switch(type){
case SHAPE_I:
for(int i=0; i<4; i++){
oldx = vertex[i].x;
oldy = vertex[i].y;
vertex[i].x = center_vertex.x+oldy-center_vertex.y;
vertex[i].y = center_vertex.y+oldx-center_vertex.x;
}
break;
case SHAPE_O:
break;
default:
for(int i=0; i<4; i++){
oldx = vertex[i].x;
oldy = vertex[i].y;
vertex[i].x = center_vertex.x+center_vertex.y-oldy;
vertex[i].y = center_vertex.y+oldx-center_vertex.x;
}
break;
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -