Android案例算法——2048游戏

Pygame简易版2048小游戏:超详细解说,看完还不会可以剁手了(附完整源码) 导语 哈喽!大家好,我是栗子,感谢大家的支持! 新的一天,新气象,程序猿们的日常开始敲敲敲,改改改——今天给大家来一款简单的小游戏! 2048小游戏——准确的来说确实是一个简单版本的! 呐呐呐 ,主要是担心很多小伙伴儿直接上界面版本的看不懂,所以做了这款简单的2048,先看这 篇简单版本的吧! 正文 为了搞懂这个游戏的规则,小编去直接下载了一款2048的小游戏,上手玩了一波! 然后.........完全停不下来!23333~ 玩法:用手指或键盘上下左右滑动,将两个相同的数字.. 阅读详情

2048的确是风靡了一段时间,这种游戏对于初学android的人来说是很好的练手项目,还有俄罗斯方块什么的都是可以拿来练手的

下面我来说一下2048这款游戏的一种算法

2048是怎么个规则,大家都知道的吧 最初是两个随机位置出现的随机数字(2或4)

比如2 2 0 4,手指往左一滑,就会变成4 4 0 0   这里的0就是代表无方块  2和2生成的4是不会和后面的4合并的

比如2 2 4 4,手指往左一滑,就会变成4 8 0 0   这里的0就是代表无方块  2和2生成的4是不会和后面的4合并的,但是后面的4和4还是会合并的

我们将整个方块情况设立成一个矩阵 空格用0表示

如4乘4的  

 2  0 0 0

 2  0 0 0

 0  0 0 0

 0  0 0 0

向左滑动  我们重新计算矩阵的每一行值,然后转换为相应的方块情况

附上算法代码

 /**
     * 滑动事件:左
     */
    private void swipeLeft() {
        for (int row = 0; row <= mGameLines - 1; row++) {
            for (int column = 0; column <= mGameLines - 1; column++) {
                mCurrentNum = mGameMatrix[row][column].getNum();
                if(mCurrentNum != 0) {
                    if(mKeyNum == -1) {
                        mKeyNum = mCurrentNum;
                    } else {
                        if(mCurrentNum == mKeyNum) {
                            mCalList.add(mCurrentNum * 2);
                            Config.score += mKeyNum * 2;
                            // 将mKeyNum重置为-1
                            mKeyNum = -1;
                        } else {
                            mCalList.add(mKeyNum);
                            mKeyNum = mCurrentNum;
                        }
                    }
                } else {
                    continue;
                }
            }
            if(mKeyNum != -1) {
                mCalList.add(mKeyNum);
            }
            // 改变矩阵
            for (int m = 0; m < mCalList.size(); m++) {
                mGameMatrix[row][m].setNum(mCalList.get(m));
            }
            for (int m = mCalList.size(); m < mGameLines; m++) {
                mGameMatrix[row][m].setNum(0);
            }
            // 重置行(列)参数,以进行下一行(列)的分析
            mKeyNum = -1;
            mCalList.clear();
        }
    }
注意向右滑动与向左滑动是有所不同的

/**
     * 滑动事件:右
     */
    private void swipeRight() {
        for (int row = mGameLines - 1; row >= 0; row--) {
            for (int column = mGameLines - 1; column >= 0; column--) {
                mCurrentNum = mGameMatrix[row][column].getNum();
                if(mCurrentNum != 0) {
                    if(mKeyNum == -1) {
                        mKeyNum = mCurrentNum;
                    } else {
                        if(mCurrentNum == mKeyNum) {
                            mCalList.add(mCurrentNum * 2);
                            Config.score += mKeyNum * 2;
                            // 将mKeyNum重置为-1
                            mKeyNum = -1;
                        } else {
                            mCalList.add(mKeyNum);
                            mKeyNum = mCurrentNum;
                        }
                    }
                } else {
                    continue;
                }
            }
            if(mKeyNum != -1) {
                mCalList.add(mKeyNum);
            }
            // 改变矩阵
            for (int m = 0; m < mGameLines - mCalList.size(); m++) {
                mGameMatrix[row][m].setNum(0);
            }
            int index = mCalList.size() - 1;
            for (int m = mGameLines - mCalList.size(); m < mGameLines; m++) {
                mGameMatrix[row][m].setNum(mCalList.get(index));
                index--;
            }
            // 重置行(列)参数,以进行下一行(列)的分析
            mKeyNum = -1;
            mCalList.clear();
        }
    }
要从最右边开始循环,大家应该发现mKeyNum这个变量了吧,他默认是-1,这个变量是是否合并的比较基准,当我们向右滑动时我们要从右往左计算比较基准


Android小项目--2048小游戏 Android小项目–2048小游戏 文章目录Android小项目--2048小游戏1.摘要2.实现的功能3.完成的界面展示4.功能具体实现的过程1. 游戏面板GameView的设计(采用GridLayout布局)2. Cell类的设计:Cell用来表示游戏中的小格子3. 将cell添加到GameView中:4. 游戏模式的改变:5. 记录当前分数及历史最高分数6. 判断游戏是否结束5. 总结 1.摘要 现如今,电子游戏已慢慢渗透进人们生活中,并在扮演着越来越重的角色。2048小游戏属于益智类小游戏,它做到 阅读详情

相关推荐

Android期末项目2048小游戏

Android期末项目2048小游戏。 简介 2048属于益智类小游戏,它做到了娱乐性、趣味性、教育性相统一。益智类的游戏即是需要去开动大脑去思考从而获得游戏的胜利。简单的益智类游戏可以使玩家在娱乐中不断的开发大脑。这样一来就实现了在娱乐中学习。每次可以选择上下左右其中一个方向去滑动,每滑动一次,所有的数字方块都会往滑动的方向靠拢,系统也会在空白的地方随机出现一个数字方块,相同数字的方块在靠拢、相撞时会相加。不断的叠加最终拼凑出2048这个数字就算成功。 设计思想 完成2048基本功能,加入动画效果,加入声

a_Myra的博客 1万+

小游戏2048最佳算法怎么实现?思路全解析!

1.简介 很多人都玩过2048,我就比较老套,因为我一向看不上这类单机游戏。但是就在某一天泡脚的无聊时光,拿了媳妇儿的手机,左看看右点点,莫名打开了2048。嗯... 这真是一款打发无聊时光的 "good game"。通过滑动来使得每行或每列相邻并且相同的数字相加而得到一个最大的数字,最后的数字越大,得分越高!于是,我在想,是否能像魔方一样,有一定的套路来帮助我们决定每一步该往哪个方向滑动最佳,以便获得最好的成绩呢? 2.如何玩2048 2048是在4×4方格中玩的游戏。方格的每个位置都

liululee的博客 2万+

Android开发之游戏2048代码(一)

这次是一个简单的2048游戏,设计比较粗糙,还可以往上面添加音乐、表情之类功能的代码, 一、 先来看看游戏的最终效果: 游戏图标的设计: 二、代码的主要设计: 三、关键代码部分 Card部分: 类Card继承了FrameLayout,目的是作为游戏中的卡片。卡片数字和样式的实现: public void setNum(int num) { this.num = num;...

wuluo的博客 1万+

2048游戏算法优化

2048 游戏是一款非常经典的游戏,在计算机领域中,它被广泛地应用。游戏界面是一个 (4 \times 4) 的方格,每个方格可以存储一个数字或为空,数字的取值为 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048。

2301_78163518的博客 3212

android 2048小游戏实现代码

一、游戏界面效果显示 二、布局Activity.xml代码 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView and...

jyq998929的博客 2417

Python实现2048小游戏

2048是一个单人益智游戏,目标是移动和合并数字,以达到2048。Python实现简单的2048游戏,可显示分数、查看排名,增删改排名信息。

KEEP CODING 2525

用 Python 实现经典的 2048 游戏:一步步带你打造属于你的小游戏!

通过本篇博客,我们从头实现了经典的 2048 游戏。不仅让你掌握了 Tkinter 界面开发,还深入理解了游戏逻辑的实现过程。如果你喜欢这篇博客,请分享给更多的 Python 爱好者吧!

xyaixy的博客 2746

2048游戏在Android上的完全实现指南

以下是一些主要文件和它们的功能:: 主要的活动类,控制应用的主界面。: 主界面的布局文件,用于定义界面元素。: 包含所有字符串资源,方便本地化和维护。: 描述应用的权限、活动、服务等。: 定义项目构建时的依赖和配置信息。例如,当我们希望修改项目的最小支持API版本时,可以在文件中调整属性。android {...为了提升用户体验,我们可以对GridView中的每个单元格进行自定义的视觉设计,并且添加动画效果。

weixin_31569663的博客 1147

AutoJs学习-实现2048游戏机

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)

空名先生 4426

2048(网页版)

网页版本2048 包含2048游戏的基本功能 界面经过优化

从零搭建IoT数据中台:STM32+WebSocket实现边缘设备与Web端实时双向通信

本文详细介绍了如何从零搭建基于STM32和WebSocket协议的IoT数据中台,实现边缘设备与Web端的实时双向通信。通过硬件选型、协议设计、服务器搭建及安全优化,提供了一套低延迟、高并发的企业级解决方案,适用于智能农业和工业监控等场景。

tea88的博客 750

android 2048游戏实现

android 的2048小游戏完整实现:GridLayout布局(android 4.0及以上)。 曾经做过一个2048的算法题,学了几天android,认为能够实现个安卓版的。也就动手写了个。 包括的东西: GridLayout布局 在activity中动态加入view组件 推断用户在屏幕滑动的的方向 2048算法(參考之前用C++写的,写的还算通俗易懂吧,htt...

weixin_30716141的博客 96

Visual Studio 2015 插件开发 从入门到放弃(一)

必需知识:C#和Visual Studio (1)安装 Visual Studio 2015 的时候选择 Visual Studio 扩展性工具(Visual Studio Extensibility Tools)。对于已经安装好 Visual Studio 2015 的小伙伴,可以找VS2015的安装包,或者在程序与功能中找VS2015双击,在VS2015界面中选择 修改,再选择

AncientPeople的博客 2万+

Android群英传知识点回顾——第十三章:Android实例提高

Android群英传知识点回顾——第十三章:Android实例提高 这一章是两个游戏的设计,比较关键的是整个游戏的设计思想和游戏实现的算法,我曾经也做过2048的游戏,觉得内容还是挺不错的,如果光凭文字表达,有些地方很难说清楚,所以我推荐大家可以看以下的视频学习,毕竟跟老师学习学到的东西多 传送门: 2048: Android项目开发实战-2048游戏 2048游戏开发源

点击置顶文章查看博客目录(全站式导航) 2089

R语言使用caret包的confusionMatrix函数计算混淆矩阵、使用编写的自定义函数可视化混淆矩阵(confusion matrix)

R语言使用caret包的confusionMatrix函数计算混淆矩阵、使用编写的自定义函数可视化混淆矩阵(confusion matrix)

data+scenario+science+insight 3926

北斗导航 | 2023 PTTI会议论文 2023 ITM会议论文 2022 ION GNSS+ 会议论文下载:ION 美国导航学会

2023 国际技术会议(ITM) 2023 精密时间和时间间隔系统和应用会议(PTTI) 2022 美国导航学会国际会议(ION GNSS +)

尘世冰封的专栏 4614

安卓2048小游戏

安卓2048小游戏 最近在学安卓UI方面,就是看到自定义View那块,突然想写个2048玩下,就先看网上极客学院的视频然后知道大概的思路就开始自己写了,然后再根据网上各种人的博客,自己慢慢理解发现还是蛮好写的,,,,but网上博客和视频的代码都大多是一样的,我遇到了问题,,,发现自己写的自定义View游戏界面根本加载不出来,,,log了好久发现是一个获取屏幕宽度的方法运行顺序问题,,,,发现网上...

sakurakider的博客 6618

YOLOv11 结合 BiFormer 注意力:打造多场景高精度检测模型实战教程

注册BiFormer模块(若代码未自动注册)# 加载自定义配置的YOLOv11模型。

know_F0727的博客 253

Android 带你玩转实现游戏2048 其实2048只是个普通的控件

转载请标明出处:http://blog.youkuaiyun.com/lmj623565791/article/details/40020137,本文出自:【张鸿洋的博客】1、概述博主本想踏入游戏开放行业,无奈水太深,不会游泳;于是乎,只能继续开发应用,但是原生Android也能开发游戏么,2048、像素鸟、别踩什么来着;今天给大家带来一篇2048的开发篇,别怕不分上下文,或者1、2、3、4,一篇包你能玩ha

Hongyang 7万+

手把手教你用ESP32-C3打造智能聊天机器人-立创实战派

本文将详细介绍如何利用立创ESP32-C3开发板,烧录小智AI程序,快速实现一个功能强大的聊天机器人。

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 5537

规控面试常见问题

规划控制算法常见问题。

每天进步一点点。 984

基于安卓的2048益智游戏的设计与实现

2.1 开发环境的介绍2.1.1 JDK的介绍Java Development Kit(JDK) 是Java语言的软件开发工具包。JDK是Java的核心部分,主要包括Java基础级库、Java运行环境和Java工具。主要是用于Java程序设计的免费开发工具[5][6]。2.1.2 Android Studio的介绍。

wqq_992250277的博客 1976

Debian Buster 软件源失效问题

摘要:基于Debian Buster的ARM64设备因系统版本结束支持(EOL)导致apt update报错404。解决方案包括:1)改用Debian官方存档源(需禁用安全检查);2)升级至受支持的Debian 11/12版本(推荐);3)临时使用第三方镜像源(不推荐)。操作步骤涉及修改sources.list、处理NTP同步问题及清理残留配置。建议优先采用版本升级方案以获得持续安全更新,避免使用过时系统带来的安全隐患。文中提供了完整命令示例和操作记录供参考。

yy_xzz的博客 2179

Android项目开发—2048小游戏

自学android一段时间了,自我感觉android基础学的差不多了,现在感觉也遇上了一些瓶颈,所以找来一些小项目练练手,实践一下,才知道自己到底会什么,到底不会什么,这篇文章是挺久之前做的一个小游戏——2048的一个个人总结,同时附上源代码和项目视频。 开发环境:windows 7 集成开发环境:eclipse/Android studio ...

aift的专栏 3万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Android小游戏--2048

首先展示软件运行演示图: 一、程序功能 1、多种不同的游戏模式(主题),本程序除了传统的数字版,还加入了死神版,还加入了秦时明月版。 2、进入不同模式,播放不同的背景音乐,可暂停/开始背景音乐。合并/移动方块会有对应的音效。 3、可重新开始游戏,退出时,可自主选择是否保存成绩。 4、实时显示本局游戏成绩及当前最高分。 5、侧滑可查看本模式的成绩排行榜。 二、基本思路 借鉴网上大...

Onwaier的博客 8218

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

安卓开发2048不显示游戏界面的百分百解决方法

学习安卓UI开发的时候一定少不了做2048这款游戏来练手,从网上的极客资源学习下来或者是下载的其他的工程都会出现一个问题,在低版本的安卓手机上可以完美运行,但是换到安卓高版本的手机就显示不出界面。对于这个网上有很多的解决方法,有些重写了startgame()函数,在代码的改写方面一些大佬说的很简单,但是这对于新手而言好像不容易理解。这里我给出大家一个基于极客的源码的调整的方案。可以百分百解决界面不显示的问题。 如果解决了你的困扰,可以点个赞支持一下我。 代码改动:在GameView这个class中写一个

davidyoyoh的博客 1860

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

上一篇: Android案例算法——拼图是否有解算法
下一篇: 八大排序算法(Java语言)
Get_Better
博客等级 码龄10年 1粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值