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

这篇博客介绍了如何使用Python构建2048游戏,包括设置游戏状态机、处理用户输入、矩阵转置与逆转操作、游戏逻辑以及判断输赢。通过状态机管理游戏流程,利用矩阵操作简化代码,实现游戏的四个移动方向。此外,还提供了创建棋盘、初始化、合并等关键步骤,并给出了源码下载和学习资源。
摘要由CSDN通过智能技术生成

当然这一篇需要你有一定的python基础?如果你没有python基础不要着急,你可以先去找一些python的基础教程去了解了解学习学习这门短小精悍的语言。

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

创建游戏文件 2048.py

首先导入需要的包:

主逻辑

用户行为

所有的有效输入都可以转换为”上,下,左,右,游戏重置,退出”这六种行为,用 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 游戏很容易就能分解成几种状态的转换。

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 终结状态结束程序。

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

用户输入处理

阻塞+循环,直到获得用户有效输入才返回对应行为:

矩阵转置与矩阵逆转

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

矩阵转置:

def transpose(field):

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

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

def invert(field):

return [row[::-1] for row in field]

创建棋盘

初始化棋盘的参数,可以指定棋盘的高和宽以及游戏胜利条件,默认是最经典的 4×4~2048。

棋盘操作

随机生成一个 2 或者 4

重置棋盘

一行向左合并

棋盘走一步

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

判断输赢

判断能否移动

绘制游戏界面

完成主逻辑

完成以上工作后,我们就可以补完主逻辑了!

运行

填上最后一行代码:

curses.wrapper(main)

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

如何下载以上源码以及获取更多编程资源?只需要简单两步:

1、关注订阅号:smcode2016

2、回复关键词2048即可获得

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值