神刀安全网

200 行代码实现简易版 2048 游戏 (python)

继续昨天的零基础开发游戏之后: 零基础如何开发游戏 – 学习编程 – 知乎专栏 ,今天立马补上一篇实战指南,如何用200行代码实现2048,对你没有听错200行代码?心动了吗?心动不如行动。

当然这一篇需要你有一定的python基础?如果你没有python基础不要着急,你可以先去找一些python的基础教程去了解了解学习学习这门短小精悍的语言,你说你没有教程,没关系。这里有: 编程教程资源整理汇总 – 学习编程 – 知乎专栏

好了,说了那么说没用的话,现在正式开始

创建游戏文件 2048.py

首先导入需要的包: 200 行代码实现简易版 2048 游戏 (python)

主逻辑

用户行为

所有的有效输入都可以转换为”上,下,左,右,游戏重置,退出”这六种行为,用 actions 表示

actions = ['Up', 'Left', 'Down', 'Right', 'Restart', 'Exit'] 

有效输入键是最常见的 W(上),A(左),S(下),D(右),R(重置),Q(退出),这里要考虑到大写键开启的情况,获得有效键值列表:

letter_codes = [ord(ch) for ch in 'WASDRQwasdrq'] 

将输入与行为进行关联:

actions_dict = dict(zip(letter_codes, actions * 2)) 

状态机

处理游戏主逻辑的时候我们会用到一种十分常用的技术:状态机,或者更准确的说是有限状态机(FSM)

你会发现 2048 游戏很容易就能分解成几种状态的转换。 200 行代码实现简易版 2048 游戏 (python) state 存储当前状态, state_actions 这个词典变量作为状态转换的规则,它的 key 是状态,value 是返回下一个状态的函数:

  • Init: init()

    Game

  • Game: game()

Game

Win

GameOver

Exit

  • Win: lambda: not_game(‘Win’)

    Init

    Exit

  • Gameover: lambda: not_game(‘Gameover’)

    Init

    Exit

  • Exit: 退出循环

状态机会不断循环,直到达到 Exit 终结状态结束程序。

下面是经过提取的主逻辑的代码,会在后面进行补全:

200 行代码实现简易版 2048 游戏 (python)

用户输入处理

阻塞+循环,直到获得用户有效输入才返回对应行为: 200 行代码实现简易版 2048 游戏 (python) 矩阵转置与矩阵逆转

加入这两个操作可以大大节省我们的代码量,减少重复劳动,看到后面就知道了。

矩阵转置:

    def transpose(field):          return [list(row) for row in zip(*field)] 

矩阵逆转(不是逆矩阵):

    def invert(field):          return [row[::-1] for row in field] 

创建棋盘

初始化棋盘的参数,可以指定棋盘的高和宽以及游戏胜利条件,默认是最经典的 4×4~2048。 200 行代码实现简易版 2048 游戏 (python)

棋盘操作

随机生成一个 2 或者 4 200 行代码实现简易版 2048 游戏 (python)
重置棋盘 200 行代码实现简易版 2048 游戏 (python) 一行向左合并 200 行代码实现简易版 2048 游戏 (python)

棋盘走一步

通过对矩阵进行转置与逆转,可以直接从左移得到其余三个方向的移动操作

200 行代码实现简易版 2048 游戏 (python) 判断输赢 200 行代码实现简易版 2048 游戏 (python) 判断能否移动 200 行代码实现简易版 2048 游戏 (python) 绘制游戏界面 200 行代码实现简易版 2048 游戏 (python) 完成主逻辑

完成以上工作后,我们就可以补完主逻辑了! 200 行代码实现简易版 2048 游戏 (python)

运行

填上最后一行代码:

curses.wrapper(main) 

200 行代码实现简易版 2048 游戏 (python)

最后你们最关心的是能不能下载代码啊?到哪里下载啊?在这里,但是给你们最好的建议是自己按照图片敲一遍。

GitHub – JLUNeverMore/easy_2048-in-200-lines

如果你想学习编程,找不到教程或者有点迷茫,关注学习编程专栏:学习编程 – 知乎专栏

如果你觉得不错可以关注我:路人甲

今天的文章摘抄自: http://www. guolanzhe.com/? p=522

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 200 行代码实现简易版 2048 游戏 (python)

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址