zoukankan      html  css  js  c++  java
  • 九宫格拼图

    # 生成随机拼图
    jigsaw = [chr(i) for i in range(65,74)]
    random.shuffle(jigsaw)

    palace = {}
    for i in range(9):
    if jigsaw[i] == 'I':
    palace[i+1]=([' ', i+1, 0])
    else:
    palace[i+1]=([jigsaw[i], i+1, 1])

    # 测试用数据
    # palace = {1: ['A', 1, 1], 2: ['B', 2, 1], 3: ['C', 3, 1], 4: ['D', 4, 1], 5: ['E', 5, 1], 6: ['F', 6, 1], 7: ['G', 7, 1], 8: [' ', 8, 0], 9: ['H', 9, 1]}

    # 移动方块
    def move_square(square, pledic):
    in_switch = bool()
    zero_switch = bool()

    for k,v in pledic.items():
    pledic[k][1] = k

    # 玩家操作, 移动的方块(输入的字符)
    if v[0] == square:
    in_key = k
    in_val = v
    in_switch = True

    # 找到字符所在, 并作标记
    if v[2] == 0:
    zero = v[1]
    zero_k = k
    zero_v = v
    zero_switch =True

    if zero_switch == in_switch:
    # 与空方块交换位置
    if zero % 3 == in_val[1] % 3 and abs(zero - in_val[1]) <= 3:
    pledic[in_key], pledic[zero_k] = zero_v, in_val
    if abs(zero - in_val[1]) == 1 and ((zero+in_val[1])-1)%3 != 0:
    pledic[in_key], pledic[zero_k] = zero_v, in_val

    return pledic

    # 游戏检测
    def check_palace(dic):
    right_count = 0
    if dic[9][2] == 0:
    for k,v in dic.items():
    if k == ord(v[0])-64:
    right_count +=1
    if right_count == 8:
    return True
    return False

    # 输出
    def print_palace(dic):
    print(dic[1][0],dic[2][0],dic[3][0])
    print(dic[4][0],dic[5][0],dic[6][0])
    print(dic[7][0],dic[8][0],dic[9][0])

    # 进行游戏
    def play_palace(palace):
    ple = deepcopy(palace)
    print_palace(ple)
    play_dic={}

    while True:
    try:
    square = input('input A-H:')
    if ord(square.upper()) >= 65 and ord(square.upper()) <= 74:
    play_dic = move_square(square.upper(), ple)
    print_palace(play_dic)
    if check_palace(play_dic):
    break
    else:
    print('Please again input')
    except TypeError:
    print('Please again input')
    continue

    print("All Right! You Win!!")
    sys.exit()


    if __name__=='__main__':
    play_palace(palace)
     
  • 相关阅读:
    MySQL(数据库)
    移动端兼容
    Vue常用指令
    JS浮点运算精度问题
    ES11新增的9个新特性
    后端要采用ArrayBuffer上传文件
    重磅来袭 Vue 3.0 One Piece 正式发布
    Vue 事件的高级使用方法
    浏览器的回流与重绘(Reflow&Repaint)
    微前端介绍
  • 原文地址:https://www.cnblogs.com/luchenhui/p/10864394.html
Copyright © 2011-2022 走看看