MATLAB中用GUI制作一个数独游戏

MATLAB中用GUI制作一个数独游戏,第1张

用MATLAB的GUI制作一个数独游戏,可以下来方法来制作

1、首先用guide命令,打开GUI模板,搭建数独游戏的界面(界面可以根据自己的喜好搭建)

2、其二对每个组件的特性进行定义编辑,同时输入相应的执行代码

3、然后保存,调试,运行

4、数独的主要计算代码

%找出A中一个最小数(一般为0)的位置(row,col)

[row,col]=find(temp==min(min(temp)))

row=row(1)col=col(1)

%找出(row,col)位置所有可能的元素

r=A(row,:)c=A(:,col) 

rc1=union(r,c)

rr=ceil(row./3)-1

cc=ceil(col./3)-1

rc2=A(rr*3+1:rr*3+3,cc*3+1:cc*3+3)

total=union(rc1,rc2(:))

P= setdiff([1:9],total)

5、下面是没有嵌入GUI的界面的运算结果

function B=shudu(A)

%计算数独的程序。

%0表示待填的空格

%例子

%A=[2 0 0 0 9 0 0 0 7

% 0 0 0 0 6 3 0 0 9

% 0 0 9 1 0 5 0 0 0

% 3 0 8 0 0 6 2 0 1

% 0 0 1 0 0 0 3 0 0

% 7 0 5 3 0 0 4 0 8

% 0 0 0 6 0 9 5 0 0

% 1 0 0 2 4 0 0 0 0

% 6 0 0 0 3 0 0 0 4]

%shudu(A)

%ans =

% 2 3 6 8 9 4 1 5 7

% 5 1 4 7 6 3 8 2 9

% 8 7 9 1 2 5 6 4 3

% 3 4 8 9 5 6 2 7 1

% 9 2 1 4 8 7 3 6 5

% 7 6 5 3 1 2 4 9 8

% 4 8 3 6 7 9 5 1 2

% 1 5 7 2 4 8 9 3 6

% 6 9 2 5 3 1 7 8 4

[a,b]=find(A==0)%找0

if isempty(a)%如果没有0,就说明填满了,这就是答案。

B=A

else%如果有0,就列出每个0的所有可能取值。

for i=1:length(a)

I{i}=[]

t=1:9

for j=1:9

if A(a(i),j)~=0

t(A(a(i),j))=0

end

if A(j,b(i))~=0

t(A(j,b(i)))=0

end

end

for j=(ceil(a(i)/3)*3-2):(ceil(a(i)/3)*3)

for k=(ceil(b(i)/3)*3-2):(ceil(b(i)/3)*3)

if A(j,k)~=0

t(A(j,k))=0

end

end

end

I{i}=find(t~=0)

if isempty(I{i})%如果没有可能项,说明矛盾。

B=[]return

end

z(i)=length(I{i})

end

[p,q]=min(z)%从可能取值最少的地方开刀,这样快点

for j=1:p%将可能的值一个个代入,递归

C=AC(a(q),b(q))=I{q}(j)

B=shudu(C)

if ~isempty(B)

return

end

end

end


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8071652.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存