MATLAB游戏编程实例(拼图) 这是一个简单的游戏,只要把数字按顺序排好就可以了。游戏方法是用鼠标点中数字,如果该数字相邻的格子为空,则自动移到到该空格。 本程序是由realghost编写,如果有问题可以与***************联系。 附图如下: function pintu1() A = gen() G = [1 2 3;4 5 6;7 8 0]; drawmap(A); while 1 [xpos,ypos] = ginput(1); col = ceil(xpos); row = 3-ceil(ypos)+1; num = A(row,col); if row>1&A(row-1,col)==0 A(row-1,col) = num; A(row,col) = 0; end if row<3&A(row+1,col)==0 A(row+1,col) = num; A(row,col) = 0; end if col>1&A(row,col-1)==0 A(row,col-1) = num; A(row,col) = 0; end if col<3&A(row,col+1)==0 A(row,col+1) = num; A(row,col) = 0; end drawmap(A) zt = abs(A-G); if sum(zt(:))==0 msgbox('ÄãÒѾ-³É¹¦Æ´ºÃͼ£¡') break end end function drawmap(A) clf; hold on line([0 3],[0 0],'linewidth',4); line([3 3],[0 3],'linewidth',4); line([0 3],[3 3],'linewidth',4); line([0 0],[0 3],'linewidth',4); for i = 1:3 for j = 1:3 drawrect([j-1 3-i],[j 3-i],[j 3-i+1],[j-1 3-i+1],'y',A(i,j)); end end axis equal axis off function drawrect(x1,x2,x3,x4,color,num) x = [x1(1) x2(1) x3(1) x4(1)]; y = [x1(2) x2(2) x3(2) x4(2)]; fill(x,y,color) if num==0 text(0.5*(x1(1)+x2(1)),0.5*(x1(2)+x4(2)),' ','fontsize',24) else text(0.5*(x1(1)+x2(1))-0.05,0.5*(x1(2)+x4(2)),num2str(num),'fontsize',24) end function y = gen() y = inf*ones(1,9); for i = 1:9 while 1 a = randint(1,1,9); if isempty(find(y==a)) y(i) = a; break end end end y = reshape(y,3,3); 本文来源:https://www.wddqw.com/doc/d0be268e84868762caaed5cb.html