java实现控制台版移方块游戏

帮朋友写了一份控制台版的小游戏,游戏内容大概就是九宫格中放了8块拼图,分别标上1-8,还有一块空格用0表示,现在你需要移动方块到空格上,最终使九宫格中的格子呈现0-8的样式即为过关。

虽然我写的比较弱智。。但是java很久没碰,连IO怎么写都忘了。就当练手啦。

package javaapplication1;
import java.io.*;
/**
 * @author kasora
 */
public class JavaApplication1 {
    public static void main(String[] args) throws IOException {
        // TODO code application logic here
        int[] blocks = new int[9];
        for(int i=0;i<9;i++)
        {
            blocks[i] = -1;
        }
        
        //生成  
        for(int i=0;i<9;i++)
        {   
            int x;
            do
            {
               x =(int)(Math.random()*9);               
            }while(blocks[x]!=-1);
            blocks[x] = i;                  
        }
        
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        while(true)
        {
            for(int i=0;i<9;i++)
            {
                System.out.print(blocks[i]);
                if(i%3==2)
                    System.out.println();
            }
            int ti;
            for(ti=0;ti<9;ti++)
            {
                if(blocks[ti]!=ti)
                    break;
            }
            if(ti==9)
                break;
            char tc;
            do {
                tc = (char) br.read();
            } while(tc != 'w'&&tc != 'a'&&tc != 's'&&tc != 'd');
            
            for(ti=0;ti<9;ti++)
            {
                if(blocks[ti]==0)
                break;
            }
            
            switch(tc)
            {
                case 'w':
                {
                    if(ti>=6&&ti<=8)
                        break;
                    blocks[ti] = blocks[ti+3];
                    blocks[ti+3] = 0;
                }
                break;
                case 's':
                {
                    if(ti>=0&&ti<=2)
                        break;
                    blocks[ti] = blocks[ti-3];
                    blocks[ti-3] = 0;
                }
                break;
                case 'd':
                {
                    if(ti==0||ti==3||ti==6)
                        break;
                    blocks[ti] = blocks[ti-1];
                    blocks[ti-1] = 0;
                }
                break;
                case 'a':
                {
                    if(ti==2||ti==5||ti==8)
                        break;
                    blocks[ti] = blocks[ti+1];
                    blocks[ti+1] = 0;
                }
                break;
            }      
        }
    }
}

 

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据