zoukankan      html  css  js  c++  java
  • 俄罗斯方块部分功能(Java)

    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 + "	");
            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;
             }
             
        }
        
        
        
    }
    
    
    
    }
  • 相关阅读:
    CharacterEncodingFilter详解及源码解析
    SPI 串行Flash闪存W25Q128FV 的使用(STM32F407)_硬件篇
    STM32 TFT LCD
    什么叫状态机:按键消抖实例
    STM32 ADC单通道采集 (STM32F103C8T6 ADC1的0通道 )
    STM32 PWM输出 (STM32F103C8T6 TIM2_CH2 )
    STM32 多通道ADC连续采集之数据到内存 DMA传输
    STM32 DAM之串口通讯
    STM32定时器之PWM 4路输出 TIM3、TIM14
    STM32定时器 TIM14之PWM 可调脉宽输出 呼吸灯
  • 原文地址:https://www.cnblogs.com/kwinwei/p/10372352.html
Copyright © 2011-2022 走看看