如何使用myeclipse显示控制台控制台做俄罗斯方块

网站已改版,请使用新地址访问:
Tetris java编写的一个俄罗斯方块小游戏,功能齐全,里面包含整个myeclipse工程,直接导入就 Game Program
271万源代码下载-
&文件名称: Tetris& & [
& & & & &&]
&&所属分类:
&&开发工具: Java
&&文件大小: 148 KB
&&上传时间:
&&下载次数: 7
&&提 供 者:
&详细说明:java编写的一个俄罗斯方块小游戏,功能齐全,里面包含整个myeclipse工程,直接导入就可以运行,算法很重要,是画图一点一点弄出来的-java prepared a Tetris game, complete functions, which contains the entire myeclipse project, you can run directly into the algorithm is very important, is to get a little bit out of the drawing
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&Tetris&&......\.classpath&&......\.project&&......\src&&......\...\com&&......\...\...\lucy&&......\...\...\....\tetris&&......\...\...\....\......\Cell.java&&......\...\...\....\......\I.png&&......\...\...\....\......\J.png&&......\...\...\....\......\L.png&&......\...\...\....\......\O.png&&......\...\...\....\......\S.png&&......\...\...\....\......\T.png&&......\...\...\....\......\Teris.java&&......\...\...\....\......\TestCase.java&&......\...\...\....\......\tetris.png&&......\...\...\....\......\Tetromino.java&&......\...\...\....\......\Z.png&&......\bin&&......\...\com&&......\...\...\lucy&&......\...\...\....\tetris&&......\...\...\....\......\Cell.class&&......\...\...\....\......\I.class&&......\...\...\....\......\I.png&&......\...\...\....\......\J.class&&......\...\...\....\......\J.png&&......\...\...\....\......\L.class&&......\...\...\....\......\L.png&&......\...\...\....\......\O.class&&......\...\...\....\......\O.png&&......\...\...\....\......\S.class&&......\...\...\....\......\S.png&&......\...\...\....\......\T.class&&......\...\...\....\......\T.png&&......\...\...\....\......\Teris$1.class&&......\...\...\....\......\Teris$2.class&&......\...\...\....\......\Teris$3.class&&......\...\...\....\......\Teris$4.class&&......\...\...\....\......\Teris$5.class&&......\...\...\....\......\Teris.class&&......\...\...\....\......\TestCase.class&&......\...\...\....\......\tetris.png&&......\...\...\....\......\Tetromino$Offset.class&&......\...\...\....\......\Tetromino.class&&......\...\...\....\......\Z.class&&......\...\...\....\......\Z.png
&[]:很好,推荐下载
&近期下载过的用户:
&输入关键字,在本站271万海量源码库中尽情搜索:上回说到下移的问题,这篇就说一下刷新的问题
我们控制台输出一般都是一行一行的输出,所以,在输出屏幕的时候,我们一个画面闪到另一个画面的效果
我刚开始弄的是用进行清屏,但还是会有闪烁的效果,接下来我会在上一个博文的代码,现在贴上代码
// c.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include &string.h&
#include&malloc.h&
#include&stdio.h&
#include&stdlib.h&
#include&math.h&
#define intX 10
#define intY 20
void show(char Interface[intY][intX])
for (i = 0; i & intY; i++)
printf("%c", 3);
for (j = 0; j & intX; j++)
if (Interface[i][j] == 0)
printf("■");
printf("%c", 3);
printf("\n");
for (i = 0; i & 2 * intX + 2; i++)
printf("%c", 2);
printf("\n");
int _tmain(int argc, _TCHAR* argv[])
//界面数组
char Interface[intY][intX] =
{ 0, 0, 0, 2, 2, 2 },
{ 0, 0, 0, 0, 2 },
{ 0 }, { 0 }, { 0 }, { 0 }, { 0 },{ 0 }, { 0, 0, 0, 0 }, { 0 }
}; /*当前状态*/
int i = 0;
int j = 0;
while (true)
for (i = intY - 1; i &= 0; i--)
/* 继续下落 */
for (j = 0; j & intX; j++)
if (Interface[i][j] == 2)
Interface[i + 1][j] = Interface[i][j];
Interface[i][j] = 0; /*方块下移*/
show(Interface);
getchar();
/*getchar();*/
接下来我们写一个函数,命名为gotoxy(int x ,int y),下面是里面的实现
void gotoxy(int x, int y)
c.X = && &c.Y =
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
上面那个函数要用到引用一个windows.h的文件,这个函数的作用就是直接跳到指定的位置坐标进行输出,这样做就是一点一点的把原先的输出屏幕上的东西覆盖住,这样减少闪烁效果很
明显,下面是完全代码
// c.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include &string.h&
#include&malloc.h&
#include&stdio.h&
#include&stdlib.h&
#include&math.h&
#include "windows.h"
#include "time.h"
#define intX 10
#define intY 20
void gotoxy(int x, int y)
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
void show(char Interface[intY][intX])
for (i = 0; i & intY; i++)
printf("%c", 3);
for (j = 0; j & intX; j++)
if (Interface[i][j] == 0)
printf("■");
printf("%c", 3);
printf("\n");
for (i = 0; i & 2 * intX + 2; i++)
printf("%c", 2);
printf("\n");
int _tmain(int argc, _TCHAR* argv[])
//界面数组
char Interface[intY][intX] =
{ 0, 0, 0, 2, 2, 2 },
{ 0, 0, 0, 0, 2 },
{ 0 }, { 0 }, { 0 }, { 0 }, { 0 },{ 0 }, { 0, 0, 0, 0 }, { 0 }
}; /*当前状态*/
int i = 0;
int j = 0;
while (true)
for (i = intY - 1; i &= 0; i--)
/* 继续下落 */
for (j = 0; j & intX; j++)
if (Interface[i][j] == 2)
Interface[i + 1][j] = Interface[i][j];
Interface[i][j] = 0; /*方块下移*/
show(Interface);
gotoxy(0, 0);
因为我一讲到一个功能性代码的时候,就会把整个代码发上来,占了一大幅字,这不是我想要凑字数,是我说了这些东西,有些初学者,可能不知道怎么用,也是时间问题,只能慢慢来
上面解决下移问题和刷屏的问题,可以看到一个方块往下掉后就消失不见了,我们来弄一个手动控制下移,按一次5就下移一次。
因为很多函数都要用到界面数组信息,所以把它提取出来做成一个全局变量
要做成这个效果,就要用到一个函数了,_kbhit,或者是kbhit,两个函数的功能是一样的,只是版本不同,我这里是vs2013,所以是第一个,这个函数在#include "conio.h",引用这个头文件。kbhit() 功能及返回值: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0。看我代码里是怎么用的,不懂多看几遍。下面贴出整个代码:
// c.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include &string.h&
#include&malloc.h&
#include&stdio.h&
#include&stdlib.h&
#include&math.h&
#include "windows.h"
#include "time.h"
#include "conio.h"
#define intX 10
#define intY 20
//记录方块左上角的行和列的位置坐标
int Row = 0, Column = 3;
//界面数组
char Interface[intY][intX] =
{ 0, 0, 0, 2, 2, 2 },
{ 0, 0, 0, 0, 2 },
{ 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0, 0, 0, 0 }, { 0 }
}; /*当前状态*/
void Down()
for (i = intY - 1; i &= 0; i--)
/* 继续下落 */
for (j = 0; j & intX; j++)
if (Interface[i][j] == 2)
Interface[i + 1][j] = Interface[i][j];
Interface[i][j] = 0; /*方块下移*/
//指定位置输出
void Gotoxy(int x, int y)
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
void Show()
for (i = 0; i & intY; i++)
printf("%c", 3);
for (j = 0; j & intX; j++)
if (Interface[i][j] == 0)
printf("■");
printf("%c", 3);
printf("\n");
for (i = 0; i & 2 * intX + 2; i++)
printf("%c", 2);
printf("\n");
int _tmain(int argc, _TCHAR* argv[])
int i = 0;
int j = 0;
char control = '2';
while (true)
if (!_kbhit())
control = '2';
control = _getch();
if (control == '5')
Gotoxy(0, 0);
这里我们已经做出了手动控制移动效果,下一次,就是到达底部碰撞停止的功能了。
阅读(...) 评论()import java.io.BufferedR
import java.io.InputStreamR
import java.util.ArrayL
import java.util.HashM
import java.util.L
import java.util.M
import java.util.R
import java.util.S
//俄罗斯方块 20*10
public class Tetris implements Runnable {
static String[][] Tetris = new String[20][10];
String p1 = &●&;
String p2 = &o&;
static List&String& list = new ArrayList&String&();
static Map&Integer,String& map = new HashMap&Integer,String&();
int score = 0;
static Thread t1 ;
static Thread t2 ;
public static void main(String[] args) {
list.add(&0,5;1,5;2,5;3,5&);
list.add(&0,5;1,4;1,5;1,6&);
list.add(&0,5;0,6;1,5;1,6&);
list.add(&0,5;1,5;1,6;2,6&);
list.add(&0,6;1,6;1,5;2,5&);
Tetris t = new Tetris();
Tetris tn = new Tetris();
Tetrisb tb = tn.new Tetrisb();
t1 = new Thread(t);
t2 = new Thread(tb);
t1.start();
t2.start();
public void run() {
while (true) {
BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
String str = stdin.readLine();
if(&w&.equals(str)){
change(Tetris);
if(&a&.equals(str)){
left(Tetris);
if(&d&.equals(str)){
right(Tetris);
} catch (Exception e) {
e.printStackTrace();
private void right(String[][] tetris) {
int canDo = 0;
for (int i = 0;i& tetris. i++) {
for (int j = tetris[i].length-1; j &-1; j--) {
if(&●&.equals(tetris[i][j])&&j&tetris[i].length-1){
if(!&o&.equals(tetris[i][j+1])){
if(canDo==4){
for (int i = 0;i& tetris. i++) {
for (int j = tetris[i].length-1; j &-1; j--) {
if(j&tetris[i].length-1&&&●&.equals(tetris[i][j])){
tetris[i][j]=
tetris[i][j+1]=&●&;
private void left(String[][] tetris) {
int canDo = 0;
for (int i = 0;i& tetris. i++) {
for (int j =
0; j &tetris[i]. j++) {
if(&●&.equals(tetris[i][j])&&j&0){
if(!&o&.equals(tetris[i][j-1])){
if(canDo==4){
for (int i = 0;i& tetris. i++) {
for (int j =
0; j &tetris[i]. j++) {
if(&●&.equals(tetris[i][j])){
tetris[i][j]=
tetris[i][j-1]=&●&;
private void change(String[][] tetris) {
Set typeSet = map.keySet();
int type = 0;
for (Object object : typeSet) {
type = Integer.parseInt(String.valueOf(object));
System.out.println(&type=&+type);
if(type==0){//竖
for (int i = 0;i& tetris. i++) {
for (int j =
0; j &tetris[i]. j++) {
if(&●&.equals(tetris[i][j])){
if(j&tetris[i].length-1&&&●&.equals(tetris[i][j+1])){//横
if(i&tetris.length-3&&!&o&.equals(tetris[i+1][j])&&!&o&.equals(tetris[i+2][j])&&!&o&.equals(tetris[i+3][j])){
tetris[i][j+1]=
tetris[i][j+2]=
tetris[i][j+3]=
tetris[i+1][j]= &●&;
tetris[i+2][j]= &●&;
tetris[i+3][j]= &●&;
}else{//竖
if(j&tetris[i].length-3&&!&o&.equals(tetris[i][j+1])&&!&o&.equals(tetris[i][j+2])&&!&o&.equals(tetris[i][j+3])){
tetris[i+1][j]=
tetris[i+2][j]=
tetris[i+3][j]=
tetris[i][j+1]= &●&;
tetris[i][j+2]= &●&;
tetris[i][j+3]= &●&;
if(type==1){//十字
for (int i = 0;i& tetris. i++) {
for (int j =
0; j &tetris[i]. j++) {
if(&●&.equals(tetris[i][j])){
if(i&tetris.length-1&&j&tetris[i].length-1&&&●&.equals(tetris[i+1][j])&&&●&.equals(tetris[i+1][j-1])&&&●&.equals(tetris[i+1][j+1])){//头上
if(i&tetris.length-2&&!&o&.equals(tetris[i+2][j])){
tetris[i+2][j]= &●&;
tetris[i+1][j-1]=
else if(i&tetris.length-2&&j&tetris[i].length-1&&&●&.equals(tetris[i+1][j])&&&●&.equals(tetris[i+2][j])&&&●&.equals(tetris[i+1][j+1])){//头右
if(i&tetris.length-2&&!&o&.equals(tetris[i+1][j-1])){
tetris[i+1][j-1]= &●&;
tetris[i][j]=
else if(i&tetris.length-1&&j&tetris[i].length-2&&&●&.equals(tetris[i+1][j+1])&&&●&.equals(tetris[i][j+2])&&&●&.equals(tetris[i][j+1])){//头下
if(i&tetris.length-2&&!&o&.equals(tetris[i-1][j+1])){
tetris[i][j+2]=
tetris[i-1][j+1]= &●&;
}else{//头左
if(i&tetris.length-2&&!&o&.equals(tetris[i+2][j])){
tetris[i+2][j]=
tetris[i+1][j+1]= &●&;
if(type==2){//方块
if(type==3){//反z
if(type==4){//z
class Tetrisb implements Runnable {
public void run() {
while (true) {
Thread.sleep(500);
if(!exsist(Tetris,&●&)){
addTetris(Tetris,list);
movedown(Tetris);
cut(Tetris);
draw(Tetris);
} catch (Exception e) {
e.printStackTrace();
private void cut(String[][] tetris) {
int cut = 0;
for (int i = 0;i& tetris. i++) {
for (int j =
0; j &tetris[i]. j++) {
if(&o&.equals(tetris[i][j])){
if(cut==10){
for (int k =
0; k &tetris[i]. k++) {
tetris[i][k] =
cut2(tetris,i);
private void cut2(String[][] tetris, int ii) {
for (int i =i&-1; i--) {
for (int j =
0; j &tetris[i]. j++) {
tetris[i+1][j]=tetris[i][j];
tetris[i][j]=
private void draw(String[][] tetris) {
for (int i = 0;i& tetris. i++) {
for (int j =
0; j &tetris[i]. j++) {
if(tetris[i][j]==null){
System.out.print(&_&);
System.out.print(tetris[i][j]);
System.out.print(&|&);
System.out.println();
System.out.println(&------------you score : &+score+&-----------------------------&);
private void movedown(String[][] tetris) {
int turn =0;
for (int i =
tetris.length-1; i & -1; i--) {
for (int j =
tetris[i].length-1; j &-1; j--) {
if(i==19&&&●&.equals(tetris[i][j])){
beWhite(tetris);
if(&●&.equals(tetris[i][j])&&!&o&.equals(tetris[i+1][j])){
}if(&●&.equals(tetris[i][j])&&&o&.equals(tetris[i+1][j])){
beWhite(tetris);
if(turn==4){
for (int i =
tetris.length-1; i & -1; i--) {
for (int j =
tetris[i].length-1; j &-1; j--) {
if(&●&.equals(tetris[i][j])){
tetris[i][j]=
tetris[i+1][j]=&●&;
private void beWhite(String[][] tetris) {
for (int i =
tetris.length-1; i & -1; i--) {
for (int j =
tetris[i].length-1; j &-1; j--) {
if(&●&.equals(tetris[i][j])){
tetris[i][j] = &o&;
private void addTetris(String[][] tetris, List&String& list) {
Random random = new Random();
int index = random.nextInt(3);
String str = list.get(index);
map.clear();
map.put(index,str);
String[] ary1 = str.split(&;&);
for (String string : ary1) {
String[] ary2 = string.split(&,&);
int x = Integer.parseInt(ary2[0]);
Integer.parseInt(ary2[1]);
if(tetris[x][y]!=null){
System.out.println(&you Lost&);
tetris[x][y]= &●&;
private boolean exsist(String[][] tetris, String string) {
for (String[] strings : tetris) {
for (String string2 : strings) {
if(string.equals(string2)){
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5224次
排名:千里之外
原创:10篇
(1)(2)(1)(1)(6)(1)(5)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 java控制台俄罗斯方块 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信