作业

2048小程序修改

博客班级 https://edu.cnblogs.com/campus/zjcsxy/SE2020
作业要求 https://edu.cnblogs.com/campus/zjcsxy/SE2020/homework/11334
作业目标 1. 编写一个小程序,可以全新编写,也可以学习别人的小程序进行修改2.熟悉git代码管理流程,将源代码上传到到github3.在博客园班级中写一篇相应的博文
作业源代码 https://github.com/jasercat/WeChatprogram
学号 31801139
姓名 李松洋

项目描述

    这个小程序是由github上的“wechat-weapp-2048-master”修改而成的,在原有的基础上做了一
点点的修改。
开发工具 :微信开发者工具

项目演示


修改内容

原有界面修改

gameStart: function() {  // 游戏开始
    var main = new Main(5);
    this.maxstep=0;
    this.setData({
      main: main,
      bestScore: wx.getStorageSync('highScore')
    });
    this.data.main.__proto__ = main.__proto__;
    this.setData({
      hidden: true,
      over: false,
      score: 0,
      step:0,
      num: this.data.main.board.grid
    });  
  },

Board.prototype = {// 形成一个空矩阵
  init() {  
    var grid = [];
    for(var i = 0; i < this.size; i++) {
      grid[i] = [];
      for(var j = 0; j < this.size; j++) {
        grid[i].push("");
      }
    }
    return grid;
  },
矩阵由16改为25,增加步数记录

增加回退功能

 reback:function(){
    this.setData({
      back:"后退",
    })
    var data = this.data.main.getback();
    this.backView(data);
  },

 getback(){  //后退
   var result = [[],[],[],[],[]];
   if(this.judge==0)
   this.board.grid2=this.board.grid;
    for(var i = 0; i < this.size; i++)
    for(var j = 0; j < this.size; j++){
      result[i][j] = this.board.grid2[i][j];
      if(result[i][j]==0)
      result[i][j]="";
    }
    return result;
  },
记录上一次的方格内容

一键玩耍

 automove(){
    var dec = 0;
    this.count=0;
    for(var i = 0; i < 4; i++){
      this.count=0;
      var list = this.combine(this.formList(i));
      if(this.count>dec)
        dec=i;
    }
    return dec;
  },

  autostep:function(){
    var dec = this.data.main.automove();
    var data = this.data.main.move(dec);
    this.updateView(data);
  },

优先选可以合并方块最多的方向合并

WXML的代码如下:

<!--pages/2048/2048.wxml-->
<view class='container'> 
  <!-- loading -->
  <loading hidden="{{hidden}}">
    加载中...
  </loading>

  <view class='head'>
    <view class='lside'>
      <text class='title'bindtap='reback'>{{back}}</text>
      <text class='auto' bindtap='autostep'>{{help}}</text>
      <text class='play' bindtap='gameStart'>{{start}}</text>
    </view>
    <view class='mside'>
      <text>step <text class='step'>{{step}}</text></text>
    </view>
    <view class='rside'>
      <text>score <text class='score'>{{score}}</text></text>
    </view>
  </view>

  <view class="game"> 
    <!-- 矩阵 -->
    <view bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd">
      <view class='row' wx:for="{{num}}" wx:for-item="row" wx:key="row.key" >
        <view class='cell' wx:for="{{row}}" wx:for-item="cell" wx:key="cell.key">
          <view class='cell-con cell-con-{{cell}}'>
            {{cell}}
          </view>
        </view>
      </view> 
    </view>

    <!-- game over -->
    <view class='game-over' hidden='{{!over}}'>
      <text class='nowScore'>历史最高分:{{bestScore}}</text>
      <text class='nowScore'>本次成绩:{{score}}</text>
      <text class='pro'>{{endMsg}}</text> 
    </view> 
  </view>
</view>
posted @ 2020-10-22 09:22  jasercat  阅读(87)  评论(1)    收藏  举报