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;
} } } }

俄罗斯方块部分功能(Java)的更多相关文章

  1. springmvc+mybatis用多选框批量删除的功能Java代码

    今天写了一个批量删除的功能,在后台传值过程中一直出错,最终还是请教了北京的一位高手帮我解决的,在此首先要好好感谢他,以后我有幸能帮助别人的话,决不推辞. 废话不说,直接进入正题,我会将在编写过程中出现 ...

  2. 实现wc部分功能 java

    GitHub地址:https://github.com/carlylewen/ruangong 相关要求 基本功能 wc.exe -c file.c     //返回文件 file.c 的字符数(实现 ...

  3. JSP高级功能-java之JSP学习第三天(非原创)

    文章大纲 一.JSP 标准标签库(JSTL)二.JSP 连接数据库三.JSP XML 数据处理四.JSP JavaBean五.JSP 自定义标签六.JSP 表达式语言七.JSP 异常处理八.JSP 调 ...

  4. 汇率换算自然语言理解功能JAVA DEMO

    >>>>>>>>>>>>>>>>>>>>>>>> 欢迎转 ...

  5. Windows计算机功能Java源码

    代码如下 import java.awt.Color; import java.awt.Container; import java.awt.GridLayout; import java.awt.e ...

  6. 个人理解---在开发中何时加入日志记录功能[java]

    是这样的:俩个月前做的一个小功能,今天经理突然问我这个'清除复投记录'功能是不是我做的,我说是,很久以前了.他说昨天一个客户找过来了,后台把人家的复投记录清除掉了,不知道何时清除的,我记得当时做的时候 ...

  7. java 各进程功能java,javac,javaw,javaws,javap

    javac 代码编译成字节码 javap字节码解析成代码 java.exe用于启动window console  控制台程序 javaw.exe用于启动 GUI程序 javaws.exe用于web程序 ...

  8. KONGA下的HAMC插件功能 --JAVA代码实现

    设置HAMC插件 postman模拟请发发送:  Java代码: HMAC-SHA-256工具类 1 import java.security.InvalidKeyException; 2 impor ...

  9. 微信支付之02------整个微信支付功能----------Java实现

    先来看下微信支付官方文档: 1.在官方文档上有很多种支付方式,由于目前我只做过JSAPI和微信扫码支付二种,其他的就不说了. >>>>>第一种微信扫码支付>> ...

随机推荐

  1. 「SDOI2014」Lis 解题报告

    「SDOI2014」Lis 题目描述 给定序列 \(A\),序列中的每一项 \(A_i\) 有删除代价 \(B_i\) 和附加属性 \(C_i\). 请删除若干项,使得 \(A\) 的最长上升子序列长 ...

  2. NOI2018d1t1 归程 (dijkstra+kruskal重构树)

    题意:给一张无向联通图,每条边有长度和高度,每次询问在高度大于p的边,从v点能到达的所有点到1号点的最短距离(强制在线) 首先dijkstra求出每个点到1号点的距离 易知:如果我按高度从高到低给边排 ...

  3. Python3 与 C# 基础语法对比(List、Tuple、Dict、Set专栏)

      Code:https://github.com/lotapp/BaseCode 多图旧版:https://www.cnblogs.com/dunitian/p/9156097.html 在线预览: ...

  4. JavaScript深入之执行上下文栈

    如果要问到 javascript 代码执行顺序的话,想必写过javascript的开发者都会有个直观的印象,那就是顺序执行,例如: var foo = function(){ console.log( ...

  5. SpringBoot文件上传

    先建工程 只勾选web和freemarker模板 最后 先看一下最终目录结构 先修改pom文件,加入common-io依赖 然后修改Application.yml文件 spring: freemark ...

  6. JS学习笔记Day5

    一.变量的作用域 1.作用域:变量的作用范围 2.全局变量:变量在整个程序都是有效的(从程序开始到程序结束变量均有效)在函数体外部定义的变量都是全局变量:在函数体内部 没有用var定义的变量也有可能是 ...

  7. Yii2的mongodb的聚合操作

    最近项目使用到mongodb的聚合操作,但是yii文档中对这方面资料较少,记录下 $where['created_time'] = ['$gt' => "$start_date_str ...

  8. mysql主从模式下在主库上的某些操作不记录日志的方法

    mysql主从模式下在主库上的某些操作不记录日志的方法 需求场景: 在主库上的需要删除某个用户,而这个用户在从库上不存在(我在接手一个业务的时候,就遇到主从架构用户授权不一致的情况,主库比较全,而从库 ...

  9. qemu与libvirt编译与安装

    qemu与libvirt编译与安装 一 .qemu编译前准备 以下链接为的本次编译环境为前提继续进行. http://www.cnblogs.com/grglym/p/7891253.html 1.安 ...

  10. 网络编程基础【day09】:简单socket实例(二)

    本节内容 1.概述 2.socket实例 3.总结 一.概述 之前我们只是介绍了soket的概念和一些逻辑图表,下面我们来看看,socket的客户端和服务端到底是怎么用的? 二.socket实例 2. ...