首页 > Python > python2048学生项目小游戏源码免费下载

python2048学生项目小游戏源码免费下载

上一篇 下一篇
"""
    2048 核心算法
"""
 
# 练习1:定义函数,将零元素移动到末尾
# [2,0,2,0] --> [2,2,0,0]
# [0,2,2,0]  --> [2,2,0,0]
# [0,4,2,4]  --> [4,2,4,0]
 
""" 方案1
def zero_to_end(list_target):
    # 1.将传入的列表中非零元素,拷贝到新列表中.
    # [2, 0, 2, 0] --> [2,2] --> [2,2,0,0]
    # [0, 4, 2, 4]  -->[4, 2, 4] -->[4, 2, 4 ,0]
    # 2. 根据为零元素的数量,在新列表中添加零元素
    # [2, 0, 2, 0] --> [2,2]
    new_list = [item for item in list_target if item != 0]
    # [2, 2] --> [2,2,0,0]
    new_list += [0] * list_target.count(0)
    # 3. 将新列表中元素赋值给传入的列表
    list_target[:] = new_list
"""
 
 
# 方案2
def zero_to_end(list_target):
    # 从后往前判断,如果零元素,则删除,在末尾追加零元素
    # [2, 0, 2, 0] --> [2, 2]  --> [2, 2,0,0]
    for i in range(len(list_target) - 1, -1, -1):
        if list_target[i] == 0:
            del list_target[i]
            list_target.append(0)
 
 
# list01 = [2, 0, 2, 0]
# zero_to_end(list01)
# print(list01)
 
# 练习2:定义合并函数
# [2,2,0,0] --> [4,0,0,0]
# [2,0,2,0] --> [4,0,0,0]
# [2,0,0,2] --> [4,0,0,0]
# [2,2,2,0] --> [4,2,0,0]
 
def merge(list_target):
    # [2,0,2,0] --> [2,2,0,0]       [2,2,2,0]
    zero_to_end(list_target)
    # [2,2,0,0] --> [4,0,0,0]       [4,0,2,0]
    for i in range(len(list_target) - 1):
        # 相邻且相同
        if list_target[i] == list_target[i + 1]:
            list_target[i] += list_target[i + 1]
            list_target[i + 1] = 0
    zero_to_end(list_target)  # [4,0,2,0] --> [4,2,0,0]
 
 
# list01 = [2,2,2,0]
# merge(list01)
# print(list01)
 
# 练习3:将二维列表,以表格的格式显示在控制台中  
list01 = [
    [2, 0, 4, 2],
    [2, 2, 0, 0],
    [2, 0, 4, 4],
    [4, 0, 0, 2],
]
 
 
def print_map(map):
    for r in range(len(map)):
        for c in range(len(map[r])):
            print(map[r][c], end=" ")
        print()
 
 
# print_map(list01)
 
# 练习4:定义向左移动函数.11:50
"""
    [2,0,0,2]           [4,0,0,0] 
    [2,2,0,0]           [4,0,0,0]
    [2,0,4,4]           [2,8,0,0]
    [4,0,0,2]           [4,2,0,0]
"""
 
 
def move_left(map):
    # 获取第行
    for r in range(len(map)):
        # 从左往右获取行
        # 交给merge进行合并
        merge(map[r])
 
 
def move_right(map):
    # 获取第行
    for r in range(len(map)):
        # 从右往左获取行
        # 交给merge进行合并
        list_merge = map[r][::-1]
        merge(list_merge)
        map[r][::-1] = list_merge
 
 
# 作业1:定义向上移动函数
# 从上往下获取列
# 交给合并方法
# 还给原列
"""
[0][0]
[1][0]
[2][0]
[3][0]
"""
 
 
def move_up(map):
    for c in range(4):
        list_merge = []
        #  从上往下获取列  形成一维列表
        for r in range(4):  # 0   1  2    3
            list_merge.append(map[r][c])
        # 交给合并方法
        merge(list_merge)
        # 将合并后的结果list_merge,还原给原二维列表
        for r in range(4):  # 0   1  2    3
            map[r][c] = list_merge[r]
 
 
# 作业2:定义向下移动函数  10:45
# 从下往上获取列
# 交给合并方法
# 还给原列
def move_down(map):
    for c in range(4):
        list_merge = []
        #  从上往下获取列  形成一维列表(从左到右)
        for r in range(3, -1, -1):  # 3   2    1   0
            list_merge.append(map[r][c])
        # 交给合并方法
        merge(list_merge)
        # 将合并后的结果list_merge(从左到右),还原给原二维列表
        for r in range(3, -1, -1): # 3 2 1 0
            map[r][c] = list_merge[3 - r]# 0 1 2 3
 
 
# move_left(list01)
# move_right(list01)
# move_up(list01)
move_down(list01)
print_map(list01)
 
 
 
 
 
 
 
 
 
 

模板简介:该模板名称为【python2048学生项目小游戏源码免费下载】,大小是,文档格式为.,推荐使用打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。

  • 下载密码 lanrenmb
  • 下载次数 10,784次
  • 使用软件
  • 文件格式
  • 文件大小
  • 上传时间 08-12
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
html5 微信素材 单页式简历模板 微信图片 企业网站 自适应 微信模板 微信文章 响应式 微信公众平台
您可能会喜欢的其他模板