您的位置:首页 > 其它

J2SE小项目—控制台俄罗斯方块

2017-03-02 19:39 176 查看
实现的功能:功能有bug,无心深究,半成品

1.方块*的下落

2.随着游戏进行,下落速度的增快

3.其实下落的位置随机

4.判断是否有整行可消除

5.输出得分

6.效果如下图



public class TetrisDemo {

public static void main(String[] args) {
Cells cls = new Cells();
cls.allDrop(cls.cells);
}

}


public class Cells {

char[][] cells = new char[15][25];
int begin = randomBegin();
int score=0;

//构造函数
public Cells() {
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 25; j++) {
cells[i][j]=' ';
}
}
}

//随机出现
public int randomBegin() {
return (int) (Math.random()*25);
}

//星号下落,遇到底部或者星星则停止
public void drop(char[][] cs,int begin,int sleepTime) {

cs[0][begin] = '*';
for (int i = 0; i<14 && cs[i+1][begin]!='*'; i++) {
cs[i+1][begin]='*';
cs[i][begin] = ' ';
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
System.out.println("有异常");
}
cs = clearFloor(cs);
paintStar(cs);
}
}

//不断下落
public void allDrop(char[][] cs) {
for (int i = 10; cs[0][begin]!='*';i = (i==1)?(i+1):(i-1)) {
drop(cs, begin, 5*i);
begin=randomBegin();
}
}

//消除可清除的层
public char[][] clearFloor(char[][] cs) {
char[][] clearCs = new char[15][25];
boolean ifClear = false;
for (int i = 0; i < clearCs.length; i++) {
if (cs[14][i]=='*') {
ifClear = true;
continue;
}else {
clearCs = cs;
break;
}
}
if (ifClear) {
score+=2;

for (int i = 0; i < 14; i++) {
for (int j = 0; j < 25; j++) {
clearCs[i+1][j]=cs[i][j];
}
}
for (int i = 0; i < 25; i++) {
clearCs[0][i]=' ';
}
}
return clearCs;
}

//打印
public void paintStar(char[][] cs) {
//美化一下界面
System.out.println();
System.out.println();
System.out.println();
System.out.println();

System.out.println("目前分数为:"+score);

for (int i = 0; i < 15; i++) {
for (int j = 0; j < 25; j++) {
System.out.print(cs[i][j]);
}
System.out.println();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: