2048小游戏程序

 2025-09-14  阅读 86  评论 0

摘要:python
import random
def init_board:
board = [[0]4 for _ in range(4)]
add_new_number(board)
add

python

2048小游戏程序

import random

def init_board:

board = [[0]4 for _ in range(4)]

add_new_number(board)

add_new_number(board)

return board

def add_new_number(board):

empty_cells = [(i, j) for i in range(4) for j in range(4) if board[i][j] == 0]

if not empty_cells:

return False

i, j = random.choice(empty_cells)

board[i][j] = 2 if random.random < 0.9 else 4

return True

def transpose(board):

return [list(row) for row in zip(board)]

def move_row_left(row):

new_row = [num for num in row if num != 0]

score = 0

for i in range(len(new_row)-1):

if new_row[i] == new_row[i+1]:

new_row[i] = 2

score += new_row[i]

new_row[i+1] = 0

new_row = [num for num in new_row if num != 0]

new_row += [0](4

  • len(new_row))
  • return new_row, score

    def move_left(board):

    new_board = []

    total_score = 0

    moved = False

    for row in board:

    original_row = row.copy

    new_row, score = move_row_left(row)

    new_board.append(new_row)

    total_score += score

    if new_row != original_row:

    moved = True

    return new_board, moved, total_score

    def move_right(board):

    new_board = []

    total_score = 0

    moved = False

    for row in board:

    reversed_row = row[::-1]

    new_reversed, score = move_row_left(reversed_row)

    new_row = new_reversed[::-1]

    new_board.append(new_row)

    total_score += score

    if new_row != row:

    moved = True

    return new_board, moved, total_score

    def move_up(board):

    transposed = transpose(board)

    new_transposed, moved, score = move_left(transposed)

    new_board = transpose(new_transposed)

    return new_board, moved, score

    def move_down(board):

    transposed = transpose(board)

    new_transposed, moved, score = move_right(transposed)

    new_board = transpose(new_transposed)

    return new_board, moved, score

    def print_board(board):

    horizontal_line = "+" + "+" 4

    print(horizontal_line)

    for row in board:

    print("|", end="")

    for num in row:

    print(f"{num:^5}|" if num != 0 else " |", end="")

    print("

    + horizontal_line)

    def has_2048(board):

    for row in board:

    if 2048 in row:

    return True

    return False

    def is_game_over(board):

    for row in board:

    if 0 in row:

    return False

    for i in range(4):

    for j in range(3):

    if board[i][j] == board[i][j+1]:

    return False

    for j in range(4):

    for i in range(3):

    if board[i][j] == board[i+1][j]:

    return False

    return True

    def main:

    board = init_board

    total_score = 0

    print("2048 Game

  • Use WASD to move tiles")
  • while True:

    print_board(board)

    print(f"Score: {total_score}")

    direction = input("Enter direction (W/A/S/D): ").upper

    if direction not in ['W', 'A', 'S', 'D']:

    print("Invalid direction! Use W (up), A (left), S (down), D (right)")

    continue

    if direction == 'A':

    new_board, moved, score = move_left(board)

    elif direction == 'D':

    new_board, moved, score = move_right(board)

    elif direction == 'W':

    new_board, moved, score = move_up(board)

    elif direction == 'S':

    new_board, moved, score = move_down(board)

    if moved:

    total_score += score

    board = new_board

    add_new_number(board)

    if has_2048(board):

    print_board(board)

    print("Congratulations! You've reached 2048!")

    if is_game_over(board):

    print_board(board)

    print("Game Over! No more moves possible.")

    break

    else:

    print("No movement. Try another direction.")

    if __name__ == "__main__":

    main

    这个实现包含以下功能:

    1. 4x4的游戏棋盘

    2. 方向控制(WASD键)

    3. 数字合并与得分计算

    4. 每次移动后生成新数字(2或4)

    5. 游戏胜利条件(出现2048)

    6. 游戏失败判断(无空格且无法合并)

    7. 分数统计

    8. 彩色终端输出(数字格式对齐)

    游戏规则:

  • 使用WASD键控制方向
  • 相同数字碰撞时会合并成它们的和
  • 每次有效移动后会生成新的2或4
  • 当棋盘被填满且无法合并时游戏结束
  • 当出现2048时提示胜利,但仍可继续游戏
  • 可以继续扩展的功能:

    1. 添加颜色显示

    2. 保存最高分记录

    3. 增加撤销功能

    4. 优化界面显示

    5. 添加动画效果

    6. 支持触摸操作(需要GUI库)

    版权声明: 知妳网保留所有权利,部分内容为网络收集,如有侵权,请联系QQ793061840删除,添加请注明来意。

    原文链接:https://www.6g9.cn/qwsh/ddd66AD5VVFhVBw.html

    发表评论:

    管理员

    • 内容66367
    • 积分0
    • 金币0
    关于我们
    知妳网是一个专注于知识成长与生活品质的温暖社区,致力于提供情感共鸣、实用资讯与贴心服务。在这里,妳可以找到相关的知识、专业的建议,以及提升自我的优质内容。无论是职场困惑、情感心事,还是时尚美妆、健康生活,知妳网都能精准匹配妳的需求,陪伴妳的每一步成长。因为懂妳,所以更贴心——知妳网,做妳最知心的伙伴!
    联系方式
    电话:
    地址:广东省中山市
    Email:admin@qq.com

    Copyright © 2022 知妳网 Inc. 保留所有权利。 Powered by

    页面耗时0.0421秒, 内存占用1.71 MB, 访问数据库19次