【python】2048缺陷版

如何插入一段漂亮的代码片

import random
list = [
    [2,2,0,0],
    [4,2,0,2],
    [2,0,0,2],
    [4,2,2,2]
]
def print_args(args):
    for i in range(len(args)):
        for j in range(len(args[i])):
            print("%d"%args[i][j],end=" ")
        print()

#左移
def zero_left(args):
    for j in range(len(args)-1,-1,-1):
        if args[j] == 0:
            del args[j]
            args.append(0)

def add_of(args):
    for j in range(0,len(args)-1):
        if args[j] == args[j+1]:
            args[j]+=args[j+1]
            args[j+1]=0

def merge(args):
    zero_left(args)
    add_of(args)
    zero_left(args)

#左移
def move_left(args):
    for i in range(len(args)):
        merge(args[i])

#右移
def move_right(args):
    for i in range(len(args)):
        new_list = args[i][::-1]
        merge(new_list)
        args[i][::-1]=new_list

#上移
def move_up(args):
    for i in range(len(args)):
        newlist = []
        for j in range(len(args[i])):
            newlist.append(args[j][i])
        merge(newlist)
        for j in range(len(args[i])):
            args[j][i] = newlist[j]

#下移
def move_down(args):
    for i in range(len(args)):
        newlist = []
        for j in range(len(args[i])):
            newlist.append(args[j][i])
        temp_newlist=newlist[::-1]
        merge(temp_newlist)
        newlist[::-1]=temp_newlist
        for j in range(len(args[i])):
            args[j][i] = newlist[j]

#随机加入一个2
def random_add_unit(args):
    list = []
    for i in range(len(args)):
        for j in range(len(args[i])):
            if args[i][j]==0:
                list.append((i,j))
    r = random.randint(0, len(list) - 1)
    x = list[r][0]
    y = list[r][1]
    args[x][y] = 2

def fail_condition(args):
    count = 0
    for i in range(len(args)):
        count += args[i].count(0)
    if count == 0:
        return True
    return False

def win_condition(args):
    for i in range(len(args)):
        for j in range(len(args[i])):
            if args[i][j]==2048:
                return True
    return False

print_args(list)
while True:
    condition = fail_condition(list)
    condition1 = win_condition(list)
    if condition:
        print("Lose!")
        break
    elif condition1:
        print("Win!")
        break

    for event in input():
        os.system("cls")
        if event == "a":
            move_left(list)
        elif event == "d":
            move_right(list)
        elif event == "w":
            move_up(list)
        elif event == "s":
            move_down(list)
        else:
            continue
        random_add_unit(list)
        print_args(list)

print("game over!")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值