最近通过python实现2048小游戏的开发,在开发过程中遇到了一些问题,发现了自己的不足之处,特此进行简单的反思。

一.状态机:

  状态机是表示有限个状态以及这些状态之间转移和动作等行为的数学模型,状态机的最常见表示即:当前状态(b)+事件(y)的组合之处下一个状态(c),2048下游戏的主逻辑就可以分为五状态以及六种动作组成的状态机,利用状态机的思想,可以更快的完善游戏的逻辑构成,构思游戏流程。2048状态机如下:

二.矩阵与转置

  在开发2048小游戏的时候,整个棋盘是一个4*4的矩阵,在开始进行游戏上下左右操作的编码的时候,我是通过一个父方法,然后继承了四个子方法分别对应上下左右四种操作,后来在网上查看别人的代码的时候,发现通过矩阵的转置与逆转,可以直接从左移得到其余三个方向的移动操作,大大的减少代码量。

def invert(field): #矩阵逆转return [row[::-1] for row in field]def transpose(field):  #矩阵转置return [list(row) for row in zip(*field)]def move(self, direction):def move_row_left(row):#一行向左合并
 moves = {}moves['Left']  = lambda field: [move_row_left(row) for row in field]moves['Right'] = lambda field: invert(moves['Left'](invert(field)))moves['Up']    = lambda field: transpose(moves['Left'](transpose(field)))moves['Down']  = lambda field: transpose(moves['Right'](transpose(field)))if direction in moves:if self.move_is_possible(direction):self.field = moves[direction](self.field)self.spawn()return Trueelse:return False

转载于:https://www.cnblogs.com/chenjie2018/p/8570583.html

关于2048小游戏的开发感想相关推荐

  1. 一文梳理2048小游戏从开发到上云全流程

    摘要:本文主要以Cocos2d Web项目2048小游戏的开发上云为例,介绍DevOps开发实践的全流程 前言 本文主要以Cocos2d Web项目2048小游戏的开发上云为例,介绍DevOps开发实 ...

  2. 全志V853开发板移植基于 LVGL 的 2048 小游戏

    LVGL 开发实战 移植基于 LVGL 的 2048 小游戏 这一节将以一个已经编写好的 lvgl 小游戏 2048 描述如何将已经编写完成的 lvgl 程序移植到开发板上. 这里使用的 2048 小 ...

  3. 我的名片能运行Linux和Python,还能玩2048小游戏,成本只要20元

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 猜猜它是什么?印着姓名.职位和邮箱,看起来是个名片.可是右下角有芯片,看起来又像是个PCB电路板. 其实它是一台超迷你的ARM计算机,不仅 ...

  4. C语言编写2048小游戏

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/104992424 2 ...

  5. c语言2048代码linux,C语言2048小游戏课设(附源码).doc

    PAGE PAGE 1 C语言2048小游戏课设 项目说明 本系统基于C语言开发,适用于刚入门的C语言新手项目课设,开发软件采用VC++6.0开发,VS,DEV C++等均可运行.(书生) 项目运行截 ...

  6. 从全球最大同性交友网站抄了一份不一样的2048小游戏

    大家好,我是"前端点线面",一位新生代农民工,欢迎关注我获取最新前端知识和<前端百题斩>pdf版(包括JS基础篇.浏览器篇.网络篇共计50个章节,5万多字),此外有喜欢 ...

  7. Java课设 2048小游戏

    题目:2048小游戏 目录 1. 引言 2. 主要模块设计 1)游戏面板 2)移动 3)失败 4)新游戏 5)退出 3. 系统实现 1)游戏面板 2)移动 3)失败 4)新游戏 5)退出 4. 结论 ...

  8. 安装Docker,在本机上跑一个‘2048’小游戏(脉冲云在线体验)

    安装Docker,在本机上跑一个'2048'小游戏 脉冲云–让软件开发效率提升十倍.在线免费体验   下面的步骤是在本机上运行的,也可以免费在脉冲云官网上部署一个在线的'2048'小游戏体验一下. 1 ...

  9. 使用Pygame制作2048小游戏

    好久没有写文章了,暑假一直没有怎么学习计算机方面的相关知识,不过倒是坚持背了一个多月的单词红宝书,看了汤神的基础课.真的没想到自己居然也能有毅力背了150多页的单词,还写完了一本正反面的字帖这些事以前 ...

最新文章

  1. matlab振动频谱分析是不是要,VB和Matlab混编实现振动信号的频谱分析
  2. 转载:缓存 Cache
  3. 获取表单对象,得三种方法getElementById(), getElementsByName(), and getElementsByTagName() 和用法...
  4. 信息奥赛一本通(1099:第n小的质数)
  5. Docker修改容器系统时间命令组
  6. mysql——逗号分割字段情况
  7. linux 声音设置,Linux aumix设置音效装置命令详解
  8. 深圳金证股份面试的经历
  9. Pikachu靶场全关详细教学(一)
  10. 快速查看MySQL数据库的版本号
  11. 斯蒂夫·乔布斯 与苹果公司
  12. Linux - 新建用户教程(新增一个具有root权限的新用户)
  13. qq屏幕识图如何一次复制所有文字
  14. java千克和磅之间的转换,进行打印
  15. oracle 删除原有的数据,oracle数据库删除数据的两种方式
  16. 动手搭手脚架(一):后台管理系统(springcload)的思维导图
  17. 鸢尾花数据集基本用法
  18. 用python从零开始写一个注册机(新手也能操作)-前言
  19. 使用Arduino制作自动硬币分拣机
  20. 建立自己的网络电话服务器

热门文章

  1. [Tensorflow]L2正则化和collection【tf.GraphKeys】
  2. thinkadmin
  3. PageNow企业级数据可视化开发平台
  4. 亚马逊多账号防关联技巧
  5. BoardCast广播组件
  6. python教孩子学编程,教孩子学编程(Python语言版)
  7. memcached使用总结篇一
  8. 至少12亿元收支差,分析运营商7大数据产品应用
  9. matlab彩色转灰度图代码,彩色图转灰度图 matlab 实现代码
  10. Gossiping --解题报告