• 2048游戏核心逻辑代码


    main(){
      List a = [
        0,2,0,2,
        0,0,4,4,
        2,0,4,0,
        2,4,0,2
      ];
    
      List temp = right(a);  //change to others later,
      List result = [[],[],[],[]];
      for(int i=0; i<16; i++){
        result[i%4].add(temp[i]);
      }
    
      for(int i=0; i<result.length; i++){
        print(result[i]);
      }
    }
    
    right(List x){
      x = x.reversed.toList();
      x = left(x);
      x = x.reversed.toList();
      List temp = [[],[],[],[]];
      for(int i=0; i<x.length; i++){
        temp[i%4].add(x[i]);
      }
    
      return x;
    }
    
    left(List x){
      List temp = [[],[],[],[]];
      for(int i=0; i<16; i++){
        temp[i~/4].add(x[i]);
      }
      x = [];
      for(int i=0; i<temp.length; i++){
        x.addAll(merge(temp[i]));
      }
      temp = [[],[],[],[]];
      for(int i=0; i<16; i++){
        temp[i%4].add(x[i]);
      }
      x = [];
      for(int i=0; i<temp.length; i++){
        x.addAll(temp[i]);
      }
      return x;
    }
    
    up(List x){
      List temp = [[],[],[],[]];
      for(int i=0; i<16; i++){
        temp[i%4].add(x[i]);
      }
      x = [];
      for(int i=0; i<temp.length; i++){
        x.addAll(merge(temp[i]));
      }
      return x;
    }
    
    down(List x){
      x = x.reversed.toList();
      x = up(x);
      return x.reversed.toList();
    }
    
    
    
    merge(List arr){
      var i, nextI, len, m;
      len = arr.length;
      for(i=0; i<len; i++){
        nextI = -1;
        for(m=i+1; m<len; m++){
          if(arr[m]!=0){
            nextI = m;
            break;
          }
        }
    
        if(nextI!=-1){
          if(arr[i]==0){
            arr[i] = arr[nextI];
            arr[nextI] = 0;
            i -= 1;
          }else if(arr[i]==arr[nextI]){
            arr[i] = arr[i] * 2;
            arr[nextI] = 0;
          }
        }
      }
      return arr;
    }
    

      

  • 相关阅读:
    数据库语句
    Java类和数据结构中常用的方法
    java知识点
    JVM相关知识
    Java实现三种常用的查找算法(顺序查查找,折半查找,二叉排序树查找)
    SharedPreference作用及数据操作模式
    Java实现7种常见的排序算法
    钱多多软件制作03
    钱多多软件制作02
    钱多多软件制作01
  • 原文地址:https://www.cnblogs.com/pythonClub/p/10878164.html
Copyright © 2020-2023  润新知