汉诺塔游戏:看谁能在短时间内将排好顺序的圈,按同样的顺放在另一根柱子上,每次只能动一个。

今天用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实战:搭建汉诺塔小游戏,快和小伙伴一起玩玩吧相关推荐

  1. python掷骰子猜大小_python摇骰子猜大小的小游戏

    #小游戏,摇筛子押大小的小游戏 import random #定义摇筛子的函数: def roll_dice(number = 3,points = None): print ('<<&l ...

  2. python实现消消乐游戏_Python制作宝石消消乐小游戏

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 图片来由于网络 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原 ...

  3. python逢7跳过_python实现逢七拍腿小游戏的思路详解

    逢七拍腿游戏 几个小朋友在一起玩逢七拍腿的游戏,从1开始数数,当数到7的倍数或者尾号是7时,拍一下腿.现在从1数到99,假设每个人都没有错,计算一下共要拍腿几次? 第一种实现思路:通过在for循环语句 ...

  4. python实现2048小游戏_python—手把手教你实现2048小游戏

    相信2048这个游戏对大家来说一定不陌生,下面这篇文章就主要给大家介绍了怎么用Python实现2048小游戏,文中通过注释与示例代码介绍的很详细,相信对大家的理解和学习具有一定的参考借鉴价值,有需要的 ...

  5. python连连看小游戏_python递归法实现简易连连看小游戏

    问题:简单版连连看小游戏 一个分割成w*h个正方格子的矩形板上,每个正方格子可以有游戏卡,也可以没有游戏卡 两个游戏卡之间有一条路径相连需满足以下三个条件: 1.路径只包含水平和垂直的直线段 2.路径 ...

  6. python实现简单小游戏_python实现简单井字棋小游戏

    #Tic-Tac-Toe 井字棋游戏 #全局常量 X="X" O="O" EMPTY=" " #询问是否继续 def ask_yes_no( ...

  7. python开发飞机小游戏_Python开发的飞机打外星人小游戏

    importsysfrom time importsleepimportpygamefrom bullet importBulletfrom alien importAlien#响应键盘按下事件 de ...

  8. Python-项目实战-《外星人入侵》Pygame小游戏-阶段二:外星人来了

    来源于<Python编程从入门到实践>的13章外星人来了. 此为第二阶段: Python-项目实战-<外星人入侵>Pygame小游戏-阶段一:武装飞船(含教程)_Kox233的 ...

  9. Python跳跳兔小游戏源代码,兔年必玩小游戏,兔年大吉

    Python跳跳兔小游戏源代码,兔年必玩小游戏,兔年大吉,小兔子跳跳,按空格键向上跳跃,按键盘方向键进行左右移动,以避开飞弹,以防被炸,还可以捡到火箭道具哦. 完整程序下载地址:Python跳跳兔小游 ...

  10. Java实战项目:新手入门小游戏——连连看超详细教程

    小伙伴们应该都玩过连连看吧,今天呢叫大家用Java制作一个属于自己的连连看小游戏! 众所周知,想要学好Java光看视频或看书是不行的,一定要动手实践才可以,而且在面试中,面试官也会问你做过些什么项目? ...

最新文章

  1. Git创建本地分支并关联远程分支
  2. Python模块-创建和执行程序(或者脚本)
  3. button组件 untiy_Unity自定义Button组件Transition
  4. [软件架构]基于PluginRT的插件编程
  5. 48V自动启停的Stateflow应用
  6. matlab文件编辑器,matlab写出两种打开M文件编辑器的方法
  7. 【Pix4d精品教程】Pix4DMapper 4.4.10/4.4.12/4.5.6经典手把手图文安装教程(附安装包下载)
  8. 傅里叶变换、拉普拉斯变换、Z 变换的联系是什么?为什么要进行这些变换?
  9. 精彩收集的303个透明flash代码
  10. 创业圣经《从0到1》读书笔记合集
  11. 【人在运维囧途_08】淘宝内部大量使用的开源系统监控工具--Tsar
  12. VS2017调用Matlab2016b进行绘图
  13. Cookie被禁用,如何传递session id?
  14. 蓝鲸CMP:跳出云管看云管
  15. BT种子文件格式和Bencoding编码
  16. 朋友圈被公司“无偿征用”,该怎么办?
  17. python 并行执行_python 串行执行和并行执行实例
  18. 大顶堆及小顶堆求最大或最小K个数
  19. 使用ffmpeg转码m3u8并播放及跨域问题
  20. 使用Tushare接口做中证500基差图

热门文章

  1. S/4HANA生产订单增强WORKORDER_UPDATE方法BEFORE_UPDATE参数分析
  2. Python删除list里面的重复元素的俩种方法
  3. The way of Webpack learning (II.) -- Extract common code(多页面提取公共代码)
  4. EOS绑定以太坊地址
  5. hdu 5903 Square Distance
  6. Xamarin+vs2010部署错误:error MSB6004: 指定的任务可执行文件位置\sdk\\tools\zipalign.exe”无效...
  7. Menu [D3D9 Source]
  8. As3回调函数的使用方法
  9. 41.虚拟存储器以及相关算法
  10. Fedora14 yum 安装源的地址配置到官方归档地址