package OO.day01; public class TetrisCell { int totalRow = 20; int totalcol = 10; //定义横宽 int row; int col; //下降 public void drop(int d) { row +=d; } //上升 public void up(int d) { row -=d; } //左移 public void moveleft(int d) { col-=d; } //右移 public void moveright(int d) { col += d; } //输出格子的位置信息 public String getCellInfo() { return row + "," + col ; } }
package OO.day01; import java.util.Scanner; /** * 实现功能: * 用户输入0表示结束,退出 * 用户输入1表示上落一格,并重新打印cell * 用户输入2表示下落一格,并重新打印cell * 用户输入3表示左移一格,并重新打印cell * 用户输入4表示右移一格,并重新打印cell * */ public class TetrisTest { public static void main(String[] args) { System.out.println("********欢迎玩CellGame********"); System.out.println("游戏规则如下:"); System.out.println("用户输入1表示上落一格,并重新打印cell;"); System.out.println("用户输入2表示下落一格,并重新打印cell;"); System.out.println("用户输入3表示左移一格,并重新打印cell;"); System.out.println("用户输入4表示右移一格,并重新打印cell;"); System.out.println("用户输入0表示结束,退出。"); System.out.println(); System.out.println("*********开始游戏:********"); TetrisCell cell = new TetrisCell(); cell.row = 0; cell.col = 0; printCell(cell); System.out.println("当前坐标:" + "(" + cell.row + "," + cell.col + ")"); Scanner s = new Scanner(System.in); int num = 0; while(true) { //输入0退出游戏 System.out.println("请输入"); num = s.nextInt(); if(num == 0) { GameCell(num,cell); break; } //实现移动 GameCell(num,cell); } s.close(); } /**绘制表格并显示当前坐标 * 传递的参数为: 抽象数据类型 TetrisCell cell * **/ public static void printCell(TetrisCell cell) { System.out.println("********绘制Cell********"); //打印场地 for(int row=0; row< cell.totalRow;row++) { System.out.print(row + "\t"); for(int col=0; col< cell.totalcol;col++) { if(cell.row == row && cell.col ==col) { System.out.print("*"); }else { System.out.print("-"); } } System.out.println(); } } /**根据数字移位 * 传递的参数为: int类型 和 抽象数据类型 TetrisCell cell * **/ public static void GameCell(int num, TetrisCell cell) { switch(num) { //退出 case 0:{ System.out.println("欢迎下次再玩,已退出!"); break; } //上升一格 case 1:{ cell.up(1); //判断是否超出边界,若超出边界则坐标不变 if(cell.row<0 || cell.col <0 ||cell.row > (cell.totalRow-1) || cell.col > (cell.totalcol-1) ) { System.out.println("超出显示边界,无效操作!"); cell.drop(1); } printCell(cell); System.out.println("当前坐标:" + "(" + cell.row + "," + cell.col + ")"); break; } //下降一格 case 2:{ cell.drop(1); //判断是否超出边界,若超出边界则坐标不变 if(cell.row<0 || cell.col <0 ||cell.row > (cell.totalRow-1) || cell.col > (cell.totalcol-1)) { System.out.println("超出显示边界,无效操作!"); cell.up(1); } printCell(cell); System.out.println("当前坐标:" + "(" + cell.row + "," + cell.col + ")"); break; } //左移一格 case 3:{ cell.moveleft(1); //判断是否超出边界,若超出边界则坐标不变 if(cell.row<0 || cell.col <0 ||cell.row > (cell.totalRow-1) || cell.col > (cell.totalcol-1)) { System.out.println("超出显示边界,无效操作!"); cell.moveright(1); } printCell(cell); System.out.println("当前坐标:" + "(" + cell.row + "," + cell.col + ")"); break; } //右移一格 case 4:{ cell.moveright(1); //判断是否超出边界,若超出边界则坐标不变 if(cell.row<0 || cell.col <0 ||cell.row > (cell.totalRow-1) || cell.col > (cell.totalcol-1)) { System.out.println("超出显示边界,无效操作!"); cell.moveleft(1); } printCell(cell); System.out.println("当前坐标:" + "(" + cell.row + "," + cell.col + ")"); break; } default: {System.out.println("Error! 请重新输入!"); break; } } } }