python2048游戏的总结与展望_Python 实现 2048 游戏(二)

本文详述了Python实现2048游戏的逻辑,包括game函数、移动模块、分数生成及棋盘打印等关键部分,介绍了基本的游戏流程、矩阵运算以及向各个方向移动的算法。通过理解这些内容,读者可以更好地掌握2048游戏的实现细节。
摘要由CSDN通过智能技术生成

上一篇文章中,我们梳理了实现简易版 2048 游戏的基本知识,这篇文章将介绍如何实现各个模块。换句话说,上一次我们确定了旅行的目的地,这一次就让我们自由畅行在山间田野。

游戏主程序,即 game 函数按部就班地向下执行,该判断就判断,然后执行相应函数。

首先读取用户输入,第一个判断:是否移动数字,显然要移动数字要满足以下条件:用户输入小写的 w s a d 对应上下左右

该移动方向上允许移动

具体来说,移动方向最前面有空间或者有连续相同的数字。可以移动则执行 move 函数,并在棋盘上生成随机数字,否则原样输出。

其次判断:棋盘是否被填满。被填满时执行 fail 函数。

最后判断:是否胜利。如果获胜,打印获胜提示。

def game(board, stdscr, rscore):

global score

global change

# curses.noecho()

# 屏幕不显示用户输入的字符

curses.noecho()

while 1:

# stdscr.getch()

# 读取用户输入的字符

order = stdscr.getch()

# move()对用户移动的响应

current_board, change = move(order, board)

# change 为 1 随机产生 2 或 4

if change:

current_board = choice(board)

# 打印棋盘

print_board(stdscr, current_board, rscore)

# 当棋盘被填满,判断是否游戏结束

if (current_board != 0).all():

fail(current_board)

# win 为 1 打印获胜提示

if win:

stdscr.addstr('You win')

以上便是游戏主程序的基本逻辑,接下来我们看具体的函数模块。

首先是移动模块:

basic 函数用来执行移动与碰撞的操作。move_{up,down,right,left} 函数用来实现各个方向上的 basic 函数操作。move 函数用来响应用户指令,实现各个方向上的移动。

棋盘由 4$\times$4 矩阵组成,0 代表该位置上没有数字。basic 函数就是基于矩阵的运算,且以右移为基础移动。

4 $\times $ 4 矩阵: $$ \left[ \begin{matrix} &2&2&0&4&\ &2&4&2&0&\ &4&8&0&2&\ &8&4&0&4&\ \end{matrix} \right] $$

向右滑动:

每一周期分为 4 轮,每一轮操作一行(共 4 行),从最左面的元素开始执行。设置 flag 用于提示这一轮是否发生了改变,如果发生了改变,这一轮就再进行一次循环,直到 flag 保持为 0 不变。对于循环的每一个元素,如果该元素不为 0 ,若下个元素为 0,就交换当前值与下个元素的值。若下个元素与当前元素相同,则当前元素置 0 ,且下一个元素增加一倍,分数还要增加 100 分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值