欢迎来到懒人模板!我们专注移动互联网,所有模板永久免费下载!
  • 首 页
  • 当前位置:主页 > 微测试 > Python >

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

    2019-08-12 09:27 来源/作者:懒人模板 分类:Python  « »
    """
        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)
     
     
     
     
     
     
     
     
     
     

    点击扫描效果预览 免费下载 免登陆网盘下载
    S
    * 懒人模板承诺:本站所有资源免费下载,无病毒,无弹窗,无干扰链接! 提点建议