前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MATLAB自动扫雷(2)——排雷插旗

MATLAB自动扫雷(2)——排雷插旗

作者头像
万木逢春
发布2019-04-30 18:07:12
6700
发布2019-04-30 18:07:12
举报
文章被收录于专栏:帮你学MatLab帮你学MatLab

前面已经实现了雷区的扫描,现在就是要根据已知情况计算哪个方块底下是雷、哪个方块底下是空白,在初级、中级难度下只要计算每个方块周围的8个方块就好。

code

如果周围8个方块和当中数字判断周围有雷

% 插旗

function banner()

global map

global blocks_x

global blocks_y

global left

global top

global block_width

global block_height

showmap()

for y=1:blocks_y

for x=1:blocks_x

if (1 <= map(x,y)) && (map(x,y) <= 8)

boom_number = map(x,y);

block_white = 0;

block_qi = 0;

for yy=(y - 1):(y + 1)

for xx=(x - 1):(x + 1)

if (1 <= yy) && (1 <= xx) && (yy <= blocks_y) && (xx <= blocks_x)

if ~((yy == y) && (xx == x))

if map(xx,yy) == 0

block_white = block_white +1;

elseif map(xx,yy) == -4

block_qi = block_qi +1;

end

end

end

end

end

if boom_number == block_white + block_qi

for yy=(y - 1):(y + 1)

for xx=(x - 1):(x + 1)

if (1 <= yy) && (1 <= xx) && (yy <= blocks_y) && (xx <= blocks_x)

if ~((yy == y) && (xx == x))

if map(xx,yy) == 0

disp("插旗")

win.setMouse(left + (xx-1) * block_width+5,...

top + (yy-1) * block_height+5);

win.rightClick;

showmap();

end

end

end

end

end

end

end

end

end

end

code

如果周围8个方块和当中数字判断周围有空白方块

% 点击白块

function click_blank()

global map

global blocks_x

global blocks_y

global left

global top

global block_width

global block_height

showmap();

iscluck = 0;

for y=1:blocks_y

for x=1:blocks_x

if (1 <= map(x,y)) && (map(x,y) <= 8)

boom_number = map(x,y);

block_white = 0;

block_qi = 0;

for yy=(y - 1):(y + 1)

for xx=(x - 1):(x + 1)

if (1 <= yy) && (1 <= xx) && (yy <= blocks_y) && (xx <= blocks_x)

if ~((yy == y) && (xx == x))

if map(xx,yy) == 0

block_white = block_white +1;

elseif map(xx,yy) == -4

block_qi = block_qi +1;

end

end

end

end

end

if boom_number == block_qi && block_white > 0

for yy=(y - 1):(y + 1)

for xx=(x - 1):(x + 1)

if (1 <= yy) && (1 <= xx) && (yy <= blocks_y) && (xx <= blocks_x)

if ~((yy == y) && (xx == x))

if map(xx,yy) == 0

disp("点开")

win.setMouse(left + (xx-1) * block_width+5,...

top + (yy-1) * block_height+5);

win.leftClick;

iscluck = 1;

end

end

end

end

end

end

end

end

end

if iscluck == 0 && ~all(all(map~=0))

luck();

end

win.setMouse(50,50);

end

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帮你学MatLab 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档