学习mpvue : 使用mpvue实现2048小程序

2048 小程序移植版

使用mpvue编写的2048小程序, 仅供交流学习.

图片展示

核心代码

初始化

[00][01][02][03]
[10][11][12][13]
[20][21][22][23]
[30][31][32][33]

(例)左移

假设
索引为 => [00][01][02][03]
对应值 =>  2   2   0   4

1.建立一个栈
2.从左入栈,如果入栈元素为0, 不做任何处理
    否则每入一个栈之前和栈顶元素做对比
        如果和栈顶元素不同,入栈 {number: x, flag: false}
        如果和栈顶元素相同,并且flag==false把当前需要入栈的元素抛弃,把栈顶的元素抛出来,并乘以2,加上flag = true,防止多次累加
3.循环完成一轮之后进行解构赋值
    栈底第一个的值赋值给[00]
    栈底第二个的值赋值给[01]
    栈底第三个的值赋值给[02]
    栈底第四个的值赋值给[03]    
步骤展示
1. [00] => 2 需要入栈 {number:2, falg: false}

|{number:2, falg: false}|
|_______________________|

2. [01] => 2  需要入栈 {number:2, falg: false} , 和栈顶对比, 可以合并

|{number:2, falg: false}|
|_______________________|
            ∨
|{number:4, falg: true }|
|_______________________|

4. [02] => 0 直接抛弃

|{number:4, falg: true }|
|_______________________|

5. [03] => 4 需要入栈 {number:2, falg: false}, 和栈顶对比, 虽然数值一样,但是flag=true, 无法合并, 入栈

|{number:4, falg: flase}|
|{number:4, falg: true }|
|_______________________|

--完成入栈, 进行赋值解构--
[0][0] = 4
[0][1] = 4
[0][2] = 0
[0][3] = 0

代码实现

for (let i = 0; i < 4; i++) {
    var stack = new Stack()  // 利用数组实现的栈结构
    for (let j = 0; j < 4; j++) {
        if (this.pie[i][j].number != 0) {
            const top = stack.getTop()
            if (!top.lock && top.number == this.pie[i][j].number) {
                const current = stack.pop()
                current.number *= 2
                current.lock = true
                stack.push(current)
            } else {
                stack.push({ number: this.pie[i][j].number, lock: false })
            }
        }
    }
    for (let j = 0; j < 4; j++) {
        this.pie[i][j].number = stack.data[j] ? stack.data[j].number : 0
    }
}

github : https://github.com/MasterJoyH...

原文地址:https://www.cnblogs.com/jlfw/p/12700181.html

时间: 2024-08-03 01:28:38

学习mpvue : 使用mpvue实现2048小程序的相关文章

学习Android之第八个小程序文件保存(Notification、AndroidTestCase)

效果图:       .java文件有MainActivity.java.FileService.java.FileServiceTest.java, .xml文件有activity_main.xml. 本次注重AndroidTestCase类的使用,在开发中非常实用.用于测试某一功能. 使用AndroidTestCase类,有如下的要求: 1.在AndroidManifest.xml文件中,<manifest></manifest>中添加如下: <instrumentati

单片机 学习笔记(二)——简单小程序

今天收获了单片机的几个简单小程序:     延时程序: void Delay(unsigned int xx) //输入 xx :ms { while(xx--) { Delay1ms(); } } void Delay1ms() //@11.0592MHz 1ms { unsigned char i, j; _nop_(); _nop_(); _nop_(); i = 11; j = 190; do { while (--j); } while (--i); } 流水灯程序: #include

cpp学习笔记 1一个简单的小程序以及一些的知识点

今天买的cpp到了从今天開始又一次学习cpp如今发现学校发的书真的不怎莫样. <em>#include<stdio.h>//预处理命令 int main()/*第一个被调用的函数.能够比作是一个房子的门()代表main是一个函数. int 指明了返回值的类型*/ { int num;/*声明语句.声明了两件事一有一个名为num的变量二int 说明生命的变量 是一个整形. int是一个keyword num 是一个标示符 */ num = 1;//给变量赋值 printf("

【总结】学习Socket编写的聊天室小程序

1.前言 在学习Socket之前,先来学习点网络相关的知识吧,自己学习过程中的一些总结,Socket是一门很高深的学问,本文只是Socket一些最基础的东西,大神请自觉绕路. 传输协议 TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的.可靠的.基于字节流的运输层(Transport layer)通信协议. 特点: 面向连接的协议,数据传输必须要建立连接,所以在TCP中需要连接时间. 传输数据大小限制,一旦连接建立,双方可以按统一的

学习Android之第六个小程序新浪微博(二)(ListView和TabActivity)

效果图例如以下: 选项卡的使用: 1.继承TabActivity 2.声明TabHost变量,通过方法getTabHost()获取并赋值. (TabHost  tabHost =getTabHost() ;) 3.在xml文件里,创建TabHost组件和TabWidget组件.而且TabHost组件的id属性必须是: android:id="@android:id/tabhost" , TabWidgett组件的id属性必须是:android:id="@android:id/

2048小程序

package game; import java.util.Random; public class game{ int pane[][]=new int[4][4]; //棋盘 void showpane() //显示棋盘 { for(int a=0;a<=40;a++){ System.out.println(); } System.out.printf("%50s\n"," |-----------------------|"); for(int i=

从语言学习实例第二天(简单小程序)

计算三角形面积 没有考虑构不成三角形 考虑完全 另外自我解惑 %f是用于格式化输入输出函数,对应类型为float的格式字符.加数字的情况仅适用于输出函数,比如printf. 其形式为 printf("%a.bf", var); 其中a,b为常数. 含义为: 1 a, 代表输出占|a|(a的绝对值)个字节的宽度,当实际宽度超过a时,按实际宽度输出,否则输出a个字节,不足部分补空格.  如果a为正数,输出的有效数字在右侧,左侧补空格. 如果a为负数,输出的有效数字在左侧,右侧补空格. 2 

MPVUE - 使用vue.js开发微信小程序

MPVUE - 使用vue.js开发微信小程序 什么是mpvue? mpvue 是美团点评前端团队开源的一款使用 Vue.js 开发微信小程序的前端框架.框架提供了完整的 Vue.js 开发体验,开发者编写 Vue.js 代码,mpvue 将其解析转换为小程序并确保其正确运行. 简单上手mpvue 官方提供了一套quickstart模板. vue init mpvue/mpvue-quickstart my-project 安装好依赖之后,执行npm run dev,将会将小程序文件打包进dis

微信小程序来了,整理微信小程序学习教程网站

第一,首先菜鸟教程  网址:http://www.runoob.com/ ps: 菜鸟教程(www.runoob.com)提供了最全的编程技术基础教程, 介绍了HTML.CSS.Javascript.Python,Java,Ruby,C,PHP , MySQL等各种编程语言的基础知识.菜鸟教程(www.runoob.com)提供了最全的编程技术基础教程, 介绍了HTML.CSS.Javascript.Python,Java,Ruby,C,PHP , MySQL等各种编程语言的基础知识. 同时本站