java转置矩阵的代码 java转置矩阵的代码有哪些( 二 )


public void platlyMove(byte[][] scene,int offset){
//试探左移,检测碰撞
if(this.checkCollision(scene,this.matrix,this.x+offset,this.y,0,0)!=1)
this.x +=offset;
}
//获取场地方块值检测碰撞
public int checkCollision(byte[][] scene,byte[][] matrix,int nextx,int nexty,int offsetX,int offsetY){
int flag = 0;
int x;
int y;
for(int i=0;i4;i++){
if(flag == 0){
for(int j=0;j4;j++){
if(matrix[i][j]==1){
x = offsetX+nextx/BLOCK_W+j;
y = offsetY+nexty/BLOCK_H+i;
if(scene[y][x] != 0){
////System.out.println("scene[y][x]=("+y+","+x+")");
flag = 1;
}
}
}
}//if
}
return flag;
}
/**绘制方块*/
public void drawBrick(byte[][] brick,int style,Graphics g,int offsetx,int offsety){
////System.out.println("offset = "+offsetx);
for(int i=0;i4;i++){
for(int j=0;j4;j++){
if(brick[i][j]==1){
if(style == 0)//0表示大方块
g.drawImage(imgBigBrick[this.color],offsetx+this.x+j*this.BLOCK_W,offsety+this.y+i*this.BLOCK_H, 0x4|0x10);
else//1表示小方块
g.drawImage(imgMiniBrick[this.color],offsetx+this.x+j*this.BLOCK_W,offsety+this.y+i*this.BLOCK_H, 0x4|0x10);
//g.setColor(this.color);
//g.fillRect(offsetx+this.x+j*this.BLOCK_W, offsety+this.y+i*this.BLOCK_H, this.BLOCK_W, this.BLOCK_H);
g.setColor(0xffffff);
g.drawRect(offsetx+this.x+j*this.BLOCK_W,offsety+ this.y+i*this.BLOCK_H, this.BLOCK_W, this.BLOCK_H);
}
}
}
}
/**拷贝矩阵*/
public void getMatrix(byte[][] curMatrix,byte[][] oriMatrix,int blockNum){
for(int i=0;iblockNum;i++){
for(int j=0;jblockNum;j++){
curMatrix[i][j] = oriMatrix[i][j];
}
}
}
public void doTurn(byte[][] matrix){
//先将矩阵转置,再将最后一行移至第一行,
byte[][] tempMatrix = new byte[4][4];
for(int i=0;i4;i++){
for(int j=0;j4;j++){
tempMatrix[i][j] = matrix[3-j][i];
}
}
for(int k=0;k3;k++){
for(int n=0;n4;n++){
matrix[k+1][n] = tempMatrix[k][n];
}
}
for(int n=0;n4;n++){
matrix[0][n] = tempMatrix[3][n];
}
this.tempMatrix = matrix;
}
}
-----------------矩阵----------------------------
byte[][] matrixz = new byte[][]{{0,0,0,0},
{1,1,0,0},
{0,1,1,0},
{0,0,0,0}};
byte[][] matrixs = new byte[][]{{0,0,0,0},
{1,0,0,0},
{1,1,0,0},
{0,1,0,0}};
byte[][] matrixl = new byte[][]{{0,0,0,0},
{0,1,0,0},
{0,1,0,0},
{0,1,1,0}};
byte[][] matrixj = new byte[][]{{0,0,0,0},
{0,1,0,0},
{0,1,0,0},
{1,1,0,0}};
byte[][] matrixt = new byte[][]{
{0,0,0,0},
{0,1,0,0},
{1,1,1,0},
{0,0,0,0}};
byte[][] matrixo = new byte[][]{{0,0,0,0},
{0,1,1,0},
{0,1,1,0},
{0,0,0,0}};
byte[][] matrixi = new byte[][]{{0,0,0,0},
{0,0,0,0},
{1,1,1,1},
{0,0,0,0}};
java编写一个方阵类 , 其中封装有对方阵进行操作的方法,包括:// 如果只是矩阵的话,
// Square.java
public class Square {
int order;
int[][] matrix;
Square(int theOrder) {
order = theOrder;
matrix = new int[order][order];
}
public void setMatrix(int[][] m) {
if(m.length != order)
return;
for(int i=0; iorder; i++) {
if(m[i].length != order)
return;
}
matrix = m;
}
public int getOrder() {
return order;
}
public int[][] getMatrix() {
return matrix;
}
public void add(Square squ) {
if(order != squ.getOrder())
return;
int[][] m = squ.getMatrix();
for(int i=0; iorder; i++)
for(int j=0; jorder; j++) {
matrix[i][j] += m[i][j];

推荐阅读