go语言实现2048小游戏(完整代码)

文章目录

  • 2048逻辑分析
  • 完整代码

2048逻辑分析

  • 2048小游戏的基本操作是上下左右,每个操作的逻辑都不太一样!
  • 这个时候,通过数组旋转的方式。将所有操作转换为向上的操作
    在这里插入图片描述
  • git地址
    https://gitee.com/hodgekou/golang.git
package mainimport ("fmt"
)type arr [4][4]intfunc (t *arr) Print() {for _, line := range t {for _, number := range line {fmt.Printf("%2d ", number)}fmt.Println()}fmt.Println()
}func (t *arr) Left90() {temp := new(arr)for i, line := range t {for j, number := range line {temp[len(line)-j-1][i] = number}}*t = *temp
}func (t *arr) Right90() {temp := new(arr)for i, line := range t {for j, number := range line {// fmt.Println(i,j,j,len(line)-1-i)temp[j][len(line)-i-1] = number}}*t = *temp
}func (t *arr) Up() {for m := 0; m < 3; m++ {for j := 0; j < 4; j++ {for i := 0; i < 3; i++ {if t[i][j] == 0 {t[i][j] = t[i+1][j]t[i+1][j] = 0} else if t[i][j] == t[i+1][j] {t[i][j] = t[i][j] + t[i+1][j]t[i+1][j] = 0}}}}
}func main() {// t := arr{{0,2,2,4},{0},{},{0,2,0,4}}t := arr{{2, 2, 2, 2}, {2, 2, 4, 2}, {}, {0, 2, 0, 4}}t.Print()//右fmt.Println("右")t.Left90()t.Up()t.Right90()t.Print()//左fmt.Println("左")t.Right90()t.Up()t.Left90()t.Print()//下fmt.Println("下")t.Right90()t.Right90()t.Up()t.Left90()t.Left90()t.Print()//上fmt.Println("上")t.Up()t.Print()
}

完整代码

https://gitee.com/hodgekou/golang.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态二维码免费制作

python3制作二维码 很多网站都可以自定义制作很漂亮的二维码&#xff0c;提供了各种素材&#xff0c;但是输出文件又各种限制&#xff0c;非要买她的会员不可。好吧&#xff01;那我们就自己做一个。&#xff08;大牛的开源项目&#xff09; 最终效果 开源项目网站 git clon…

vs 2017 静态库 动态库 的初步使用

静态库的初步使用 新建 静态库 项目 Lib1 会产生 sln文件与vcproj文件&#xff0c;vcproj是工程文件&#xff0c;sln是解决方案文件 一个解决方案可以有多个工程 在头文件(Lib1.h)写函数声明&#xff0c;在cpp文件定义函数实现 这时候右键点击项目 ->生成, 会产生 Lib1.lib…

C语言贪吃蛇

扩展功能实现 加速减速计分链表实现彩色界面暂停 开源代码 贪吃蛇 动图展示&#xff0c;&#xff08;加载比较慢&#xff09;

知网毕业论文爬取

知网论文 查找文献的时候每次只显示10页二次检索功能又还没有&#xff08;不知道是不是我没找到&#xff09;。干脆用爬虫把所有和自己论文关键字相关的文献题目都爬取下来&#xff0c;然后自己做一个小的检索表。 开源项目 https://github.com/hodgekou/CNKICrawler.git 配…

git 初步使用01

git工作流程 git的安装 1&#xff09;安装git 2&#xff09;安装乌龟 3&#xff09;汉化乌龟创建本地仓库 在一个空目录&#xff0c;打开git bash here&#xff0c; 输入命令 git init 删除并保留本地副本 选中目标文件&#xff0c;右键乌龟&#xff0c;删除并保留本地副本 这…

Go语言爬虫项目将结果写入MySql数据库

来源于Google资深工程师深度讲解Go语言 package mainimport ("fmt""io/ioutil""net/http" )const url "http://www.zhenai.com/zhenghun"func main() {//发送get请求resp, err : http.Get(url)if err ! nil {panic(err)}//关闭通道d…

从《四驱兄弟》到“联想中国”

《四驱兄弟》 小学的时候看过一个日本的动画片叫四驱兄弟&#xff0c;里面就是一群小朋友代表国家各种比赛&#xff0c;其中让我象比较深刻的是他把美国队描述的非常邪恶&#xff0c;各种破坏别人的车子&#xff0c;通过卑鄙手段取得胜利。然后最后好像是正义战胜邪恶的剧情还…

位图原理、代码实现及应用实例

位图的原理&#xff1a; 在位图中采用比特位表示对应的元素存在或者不存在 0&#xff1a;不存在 1&#xff1a;存在例如一个int整数有32个比特位可以表示0-31个整数。 再举一个例子 存入的数字为8988 首先&#xff1a; 8988/32 280 其次&#xff1a; 8988%32 28 再来一个例…

布隆过滤器的原理、应用场景和源码分析实现

原理 布隆过滤器数据结构 布隆过滤器是一个 bit 向量或者说 bit 数组&#xff0c;长这样&#xff1a; 如果我们要映射一个值到布隆过滤器中&#xff0c;我们需要使用多个不同的哈希函数生成多个哈希值&#xff0c;并对每个生成的哈希值指向的 bit 位置 1。 例如针对值 “baid…

Redis运维和开发学习笔记(1) Redis简介

文章目录Redis的特性速度快持久化多种数据结构主从复制高可用和分布式典型的应用场景Redis启动和可执行文件Redis可执行文件说明启动方式验证redisredis常用配置redis数据结构和内部编码Redis是单线程&#xff0c;不会同时执行两条命令哈希慢查询pipelineRedis的特性 速度快 …

Redis运维和开发学习笔记(5) 主从复制和sentinel哨兵模式

Redis运维和开发学习笔记(5) 主从复制和sentinel哨兵模式 主从复制 将主节点的数据改变同步给从节点 作用 备份数据读写分离 存在的问题&#xff1a; 手动干预切主等操作主节点的写能力受到单机限制主节点的存储能力受到单机限制 主从模式的故障恢复 当主节点发生故障时&am…

Redis运维和开发学习笔记(7) 内存管理和过期策略

Redis运维和开发学习笔记(7) 内存管理和过期策略 文章目录Redis运维和开发学习笔记(7) 内存管理和过期策略内存回收策略惰性删除定时任务删除maxmemory过期策略allkeys-lru主从搭建测试搭建完毕主从测试结果volatile-lru测试结果volatile-ttl测试结果allkeys-lru内存回收策略 …

Effective C++学习第十二天

条款47&#xff1a;请使用traits classes表现类型信息STL有五类迭代器分类&#xff0c;input迭代器&#xff08;只读&#xff0c;一次&#xff0c;向前&#xff09;、output迭代器&#xff08;可写&#xff0c;一次&#xff0c;向前&#xff09;、forward迭代器&#xff08;读/…

Linux 学习

1.linux文本命令行语言环境设置命令 查看当前语言环境&#xff1a; echo &#xffe5;LANG 修改&#xff1a; LANG选择的语言环境’ 引申&#xff1a;https://blog.csdn.net/huoyunshen88/article/details/41113633 2.linux中的硬链接和软连接 linux中文件的储存方式&#xf…

redis源码剖析(四)跳表

文章目录整数集合跳跃表压缩列表总结整数集合 当一个集合只包含整数&#xff0c;且这个集合的元素不多的时候&#xff0c;Redis 就会使用整数集合 intset 。首先看 intset 的数据结构&#xff1a; typedef struct intset {// 编码方式uint32_t encoding;// 集合包含的元素数量…

在Redis客户端设置连接密码 并演示密码登录

我们先连接到Redis服务 然后 我们要输入 CONFIG SET requirepass “新密码” 例如 CONFIG SET requirepass "A15167"这样 密码就被设置成立 A15167 我们 输入 AUTH 密码 例如 AUTH A15167这里 返回OK说明成功了 然后 我们退出在登录就真的需要 redis-cli -h IP地…

redis源码剖析(五)—— 字符串,列表,哈希,集合,有序集合

文章目录对象REDIS_STRING &#xff08;字符串&#xff09;REDIS_LIST 列表REDIS_SET &#xff08;集合&#xff09;REDIS_ZSET &#xff08;有序集合&#xff09;REDIS_HASH (hash表)int refcount&#xff08;引用计数器&#xff09;unsigned lru:REDIS_LRU_BITS对象 对于 Re…

redis源码剖析(六)—— Redis 数据库、键过期的实现

文章目录数据库的实现数据库读写操作键的过期实现数据库的实现 我们先看代码 server.h/redisServer struct redisServer{...//保存 db 的数组redisDb *db;//db 的数量int dbnum;... }再看redisDb的代码&#xff1a; typedef struct redisDb {dict *dict; /*…

linux中错误总结归纳

1.使用gcc编译C文件&#xff0c;C文件在for循环语句中出现变量定义 编译器提示错误&#xff1a;“for”loop initial declarations are only allowed in C99 mode. note:use option -stdc99or-stdgnu99 to compile; 原因&#xff1a;gcc的标准是基于c89的&#xff0c;c89不能在…

makefile内容小结

makefile中每个功能主要分为三部分&#xff1a;目标&#xff0c;依赖条件和命令语句 1.支持对比更新的Makefile写法&#xff08;只会编译文件时.o文件和.c文件时间不一致的文件&#xff09; 2.使用makefile自动变量和自定义变量的makefile写法 其中&#xff1a;这三个符号为ma…