日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python汉诺塔游戏_Python实战:搭建汉诺塔小游戏,快和小伙伴一起玩玩吧

發布時間:2025/4/16 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python汉诺塔游戏_Python实战:搭建汉诺塔小游戏,快和小伙伴一起玩玩吧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

漢諾塔游戲:看誰能在短時間內將排好順序的圈,按同樣的順放在另一根柱子上,每次只能動一個。

今天用python搭建漢諾塔小游戲(簡約版)

代碼親測有效!源代碼如下:

#左中右塔用一個列表存儲

left = list

center = list

right = list

"""

初始化函數

"""

def init:

size = input("(請友善輸入整數,未寫判斷!)請輸入層數:")

#初始化塔列表,如5層 左邊塔放 1-3-5-7-9,中間和右邊放5個-1

for i in range(1,int(size) + 1):

left.append(i*2-1)

center.append(-1)

right.append(-1)

return int(size)

"""

打印樣式函數

"""

def printStyling(i,size,ta):

if ta[i] != -1:

# 打印前空格

for kong in range(int(size - (ta[i] - 1) / 2)):

print(" ", end="")

# 打印塔元素

for le in range(ta[i]):

print("X", end="")

# 打印后空格

for kong in range(int(size - (ta[i] - 1) / 2)):

print(" ", end="")

# 左塔這一層為空格

else:

# 打印前面空格

for kong in range(size):

print(" ", end="")

# 打印中間的棒棒

print("|", end="")

# 打印后面的空格

for kong in range(size):

print(" ", end="")

"""

控制臺打印結果

"""

def show(size):

#修飾

print("-"*35)

#循環層數等于size

for i in range(size):

# 打印左邊塔

printStyling(i,size,left)

# 打印中間塔

printStyling(i,size,center)

# 打印右邊塔

printStyling(i,size,right)

#每行打印一個換行

print

#修飾

print("-" * 35)

"""

判斷可不可以移動

takeOff減少,putOn增加,size層數,tSize和pSize剩余空間

"""

def judge(takeOff,putOn,size,tSize,pSize,count):

# 如果左塔的剩余空間等于size,就是空的,就沒有元素可移動

if tSize == size:

print("操作無效!")

return 0

# 如果中塔為空,可以移動

if pSize == size:

# 中間的最后一個元素賦上左塔的第一個元素的值

putOn[pSize - 1] = takeOff[tSize]

# 左塔的第一個元素賦值-1

takeOff[tSize] = -1

# 左塔的剩余空間+1

tSize += 1

# 中塔的剩余空間-1

pSize -= 1

#步數+1

count += 1

#移動成功,返回剩余空間和步數

return tSize,pSize,count

# 如果中塔最上方元素比左塔最上方元素大,即可以移動

elif putOn[pSize] > takeOff[tSize]:

# 中塔當前最上方元素的再上一個元素(-1)賦上左塔最上方元素的值

putOn[pSize - 1] = takeOff[tSize]

# 左塔最上方元素賦值-1

takeOff[tSize] = -1

# 左塔剩余空間+1

tSize += 1

# 中塔剩余空間-1

pSize -= 1

#步數+1

count += 1

# 移動成功,返回剩余空間和步數

return tSize,pSize,count

# 否則不可以移動

else:

print("操作無效!")

return 0

"""

主要運行函數

"""

def main:

#初始化游戲

size = init

# 存放最初的盤剩余空間 lSize左塔 cSize中塔 rSize右塔

lSize = 0

cSize = size

rSize = size

#存放操作步數

count = 0

#打印游戲介紹

print("將左塔完整地移到右塔就是勝利!")

print("左-1 中-2 右-3 退出請輸入:quit")

print('例如輸入:"1-2"就是將左塔的最上元素放到中塔')

print("%d層的最佳步數是%d"%(size,pow(2,size)-1))

#游戲進行

while True:

print("當前移動了%d步"%(count))

#顯示當前塔的狀態

show(size)

#判斷右塔是否沒有剩余空間,沒有即勝利,并退出游戲

if rSize == 0:

if count == pow(2,size)-1:

print("恭喜你使用最少步數完成漢諾塔!")

else:

print("恭喜你只移動了%d步完成漢諾塔小游戲!"%(count))

break

#獲取玩家操作

select = input("請操作:")

#左塔移中塔

if select == "1-2":

result = judge(left,center,size,lSize,cSize,count)

if result == 0:

continue

else:

lSize,cSize,count = result

#左塔移右塔,下面同樣

elif select == "1-3":

result = judge(left, right, size, lSize, rSize,count)

if result == 0:

continue

else:

lSize, rSize,count = result

elif select == "2-1":

result = judge(center, left, size, cSize, lSize,count)

if result == 0:

continue

else:

cSize, lSize,count = result

elif select == "2-3":

result = judge(center, right, size, cSize, rSize,count)

if result == 0:

continue

else:

cSize, rSize,count = result

elif select == "3-1":

result = judge(right, left, size, rSize, lSize,count)

if result == 0:

continue

else:

rSize, lSize,count = result

elif select == "3-2":

result = judge(right, center, size, rSize, cSize,count)

if result == 0:

continue

else:

rSize, cSize ,count= result

#輸入quit退出游戲

elif select == "quit":

break

#如果輸入的是其他不識別的文字,就拜拜

else:

print("操作有誤!")

continue

main

輸出結果:(文本輸出)

總結

以上是生活随笔為你收集整理的python汉诺塔游戏_Python实战:搭建汉诺塔小游戏,快和小伙伴一起玩玩吧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。