这段代码实现了一个简单的 2048 游戏,包括随机生成新数字、向上、下、左、右移动、判断游戏是否结束和显示当前状态等功能。其中,棋盘以二维列表形式存储,数字 2 表示未合并的方块,数字大于 2 表示已经合并的方块。游戏结束的条件是棋盘上没有空位且无法再合并相同数字的方块。主循环不断向棋盘中添加新数字,并根据用户输入的方向移动方块,直到游戏结束。

import random  # 初始化棋盘
board = [[0] * 4 for i in range(4)]  # 随机生成新数字
def add_new_number():
    i = random.choice(range(4))
    j = random.choice(range(4))
    while board[i][j] != 0:
        i = random.choice(range(4))
        j = random.choice(range(4))
    board[i][j] = 2  # 向上移动
def move_up():
    for j in range(4):
        for i in range(1, 4):
            if board[i][j] != 0:
                k = i
                while k > 0 and board[k-1][j] == 0:
                    k -= 1
                if k != i:
                    board[k][j] = board[i][j]
                    board[i][j] = 0
                if k > 0 and board[k-1][j] == board[k][j]:
                    board[k-1][j] *= 2
                    board[k][j] = 0  # 向下移动
def move_down():
    for j in range(4):
        for i in range(2, -1, -1):
            if board[i][j] != 0:
                k = i
                while k < 3 and board[k+1][j] == 0:
                    k += 1
                if k != i:
                    board[k][j] = board[i][j]
                    board[i][j] = 0
                if k < 3 and board[k+1][j] == board[k][j]:
                    board[k+1][j] *= 2
                    board[k][j] = 0  # 向左移动
def move_left():
    for i in range(4):
        for j in range(1, 4):
            if board[i][j] != 0:
                k = j
                while k > 0 and board[i][k-1] == 0:
                    k -= 1
                if k != j:
                    board[i][k] = board[i][j]
                    board[i][j] = 0
                if k > 0 and board[i][k-1] == board[i][k]:
                    board[i][k-1] *= 2
                    board[i][k] = 0  # 向右移动
def move_right():
    for i in range(4):
        for j in range(2, -1, -1):
            if board[i][j] != 0:
                k = j
                while k < 3 and board[i][k+1] == 0:
                    k += 1
                if k != j:
                    board[i][k] = board[i][j]
                    board[i][j] = 0
                if k < 3 and board[i][k+1] == board[i][k]:
                    board[i][k+1] *= 2
                    board[i][k] = 0  # 判断游戏是否结束
def is_game_over():
    for i in range(4):
        for j in range(4):
            if board[i][j] == 0:
                return False
            if i > 0 and board[i][j] == board[i-1][j]:
                return False
            if i < 3 and board[i][j] == board[i+1][j]:
                return False
            if j > 0 and board[i][j] == board[i][j-1]:
                return False
            if j < 3 and board[i][j] == board[i][j+1]:
                return False
    return True  # 显示当前状态
def show_board():
    for i in range(4):
        for j in range(4):
            print(board[i][j], end='	')
        print()  # 主循环
while not is_game_over():
    add_new_number()
    show_board()
    direction = input('请输入移动方向(w/a/s/d):')
    if direction == 'w':
        move_up()
    elif direction == 's':
        move_down()
    elif direction == 'a':
        move_left()
    elif direction == 'd':
        move_right()
    else:
        print('输入有误,请重新输入!')

这段代码实现了一个简单的 2048 游戏,包括随机生成新数字、向上、下、左、右移动、判断游戏是否结束和显示当前状态等功能。

游戏规则:

  • 游戏在一个 4x4 的棋盘上进行,每个格子上可以放置一个数字。
  • 游戏开始时,棋盘上随机出现两个数字 2。
  • 玩家可以通过上下左右四个方向移动数字,使相同的数字合并成一个更大的数字。
  • 每移动一次,棋盘上会随机出现一个新的数字 2。
  • 当棋盘上没有空位且无法再合并相同数字的方块时,游戏结束。

代码逻辑:

  • add_new_number() 函数用于在棋盘上随机生成一个新的数字 2。
  • move_up()、move_down()、move_left() 和 move_right() 函数分别用于实现数字的向上、下、左、右移动。
  • is_game_over() 函数用于判断游戏是否结束。
  • show_board() 函数用于显示当前棋盘的状态。

实现细节:

  • 棋盘使用二维列表来存储,每个元素表示一个格子的数字。
  • 每个移动函数都使用循环遍历棋盘,并根据移动方向进行相应的操作。
  • 当两个相同的数字合并时,其值会加倍。
  • 游戏结束的条件是棋盘上没有空位且无法再合并相同数字的方块。

代码示例:

>>> import random
>>> board = [[0] * 4 for i in range(4)]
>>> add_new_number()
>>> show_board()
0	0	0	2
0	0	0	0
0	0	0	0
0	0	0	0
>>> direction = input('请输入移动方向(w/a/s/d):')
>>> direction
'w'
>>> move_up()
>>> show_board()
2	0	0	0
0	0	0	0
0	0	0	0
0	0	0	0
>>> add_new_number()
>>> show_board()
2	0	0	0
0	0	0	0
0	0	0	0
0	2	0	0

总结:

这段代码实现了一个简单的 2048 游戏,代码简洁易懂,适合初学者学习和理解。通过学习这段代码,可以了解到 Python 语言的基本语法、列表操作、函数定义和调用等知识。

2048 游戏 Python 实现:代码详解与游戏规则

原文地址: https://www.cveoy.top/t/topic/m5FK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录