您现在的位置是:首页 > 游戏资讯

51.Python-益智游戏-数字华容道

星际游娱坊 2025-05-26【游戏资讯】8人已围观

简介项目创作的初衷:早期的一个项目,创作品思想源自于数字华容道(n-puzzle),是一种智力游戏,十五数字推盘游戏的板上会有十五个方块和一个大小相当于一个方块的空位(供方块移动之用),当15个数字依次排序并且最后一个格子为空位即代表挑战成功。首先把问题场景化,通过程序游戏的形式,让大家直观简单地操作,...

项目创作的初衷:

早期的一个项目,创作品思想源自于数字华容道(n-puzzle),是一种智力游戏,十五数字推盘游戏的板上会有十五个方块和一个大小相当于一个方块的空位(供方块移动之用),当15个数字依次排序并且最后一个格子为空位即代表挑战成功。

首先把问题场景化,通过程序游戏的形式,让大家直观简单地操作,容易接受,也便于交流和传播,同时在游戏中思考和解决问题。

初始程序界面

挑战成功完成的界面

实现过程和完整代码:

程序UI没有使用PyQt,而是用Python自带的tkinter库,界面元素主要使用按钮来完成。

每次开局,都采取随机打乱方式,但是需要一些注意,必须要保证有解(两两交换!)

=()("400x420")("益智游戏—数字华容道")lb1=(root,text="请移动板上的方块,让所有的方块顺着数字的次序排列。",font=("",11))(padx=5,pady=5,row=0,column=1,columnspan=4)count=0lb2=(root,text="完成步数:"+str(count),font=("",10))(padx=2,pady=2,row=5,column=3)id=[iforiinrange(15)]imgid=[i+1foriinrange(16)]finish=[0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15]defmsg():(title="恭喜!",message="恭喜你,挑战成功!")defmove(index,t,r,c):print(k,k0)defchange():buttons[k].config(text="16",bg="white",fg="white")buttons[k0].config(text=imgid[k],bg="tan",fg="black")imgid[k],imgid[k0]=imgid[k0],imgid[k]tmp=[(i+1)foriinrange(16)]print(k,t,"moveright")change()随机两两交换,保证有解!defshuffleid():foriinrange(8):a=(id)b=(id)c=(id)d=(id)while(a==bora==cora==dorb==corb==dorc==d):a=(id)b=(id)c=(id)d=(id)print(imgid)definit():shuffleid()foriinimgid:n=iif(n==16):fg="white"bg="white"else:fg="black"bg="tan"r=(i)%4+1c=(i)//4+1num=(i)button=(root,bg=bg,text=n,fg=fg,font=("",12),width=10,height=4,relief=,command=lambdaindex=num,n=n,r=r,c=c:move(index,n,r,c))(padx=4,pady=4,row=r,column=c)print(imgid)bt1=(root,text="重新开始",command=restart)(padx=2,pady=2,row=5,column=2,columnspan=1)()

很赞哦!(39)