从零开始开发Android版2048 (五) 撤销的实现

本文介绍如何在Android版2048游戏中实现撤销功能。通过记录每次滑动后的界面状态(空白格、数字格和分数)到栈中,点击撤销时弹出栈顶状态并重新绘制界面。虽然这种方法直观易懂,但可能导致内存占用增加和效率问题。源码已提供,欢迎大家交流优化方案。
摘要由CSDN通过智能技术生成

本篇的内容是,在前一篇的基础上加入了撤销的功能。撤销其实就是将当前的用户界面恢复到这次滑动值前的样子。我实现撤销的主要原理是,将每次滑动后界面上的格子和对应的数字记录下来,当然还有分数,把这些数据写入一个栈中,然后点击撤销操作的时候,将栈顶pop掉,读取下一个栈中的对象,并根据对象中存储的数据重新绘制界面。


下面是我用于存储每次界面情况的类,在这个类中保存了界面中主要的三个数据,空白格、数字格和当前的分数。

package com.example.t2048;

import java.util.ArrayList;
import java.util.List;

public class History {
	
	//对应主activity中的空格列表
	private List<Integer> spaceList;
	//对应主activity中的数字列表
	private NumberList numberList;
	//对应主activity中的当前分数
	private int score = 0;
	
	/**
	 * 构造方法
	 * @param sl  空格列表
	 * @param nl  数字列表
	 * @param s   当前分数
	 */
	History(List<Integer> sl, NumberList nl, int s) {
		spaceList = new ArrayList<Integer>(sl);
		numberList 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值