matlab五子棋
时间: 2023-07-13 15:06:55 浏览: 50
以下是一个简单的 MATLAB 五子棋游戏示例:
```
%% 初始化棋盘
board = zeros(15,15);
%% 游戏循环
while true
%% 玩家下棋
disp('请玩家输入下棋位置(格式:行 列):');
player_move = input('');
board(player_move(1),player_move(2)) = 1;
disp(board);
if check_win(board, player_move(1), player_move(2))
disp('玩家胜利!');
break;
end
%% 电脑下棋
disp('电脑正在思考中...');
computer_move = find_best_move(board);
board(computer_move(1),computer_move(2)) = 2;
disp(board);
if check_win(board, computer_move(1), computer_move(2))
disp('电脑胜利!');
break;
end
end
%% 检查是否获胜
function win = check_win(board, row, col)
win = false;
value = board(row,col);
if (check_horizontal(board, row, col, value) ...
|| check_vertical(board, row, col, value) ...
|| check_diagonal(board, row, col, value))
win = true;
end
end
%% 检查水平方向是否获胜
function win = check_horizontal(board, row, col, value)
win = false;
count = 0;
for i = max(col-4,1):min(col+4,15)
if board(row,i) == value
count = count + 1;
if count == 5
win = true;
break;
end
else
count = 0;
end
end
end
%% 检查竖直方向是否获胜
function win = check_vertical(board, row, col, value)
win = false;
count = 0;
for i = max(row-4,1):min(row+4,15)
if board(i,col) == value
count = count + 1;
if count == 5
win = true;
break;
end
else
count = 0;
end
end
end
%% 检查对角线方向是否获胜
function win = check_diagonal(board, row, col, value)
win = false;
count = 0;
for i = -4:4
if row+i >= 1 && row+i <= 15 && col+i >= 1 && col+i <= 15 && board(row+i,col+i) == value
count = count + 1;
if count == 5
win = true;
break;
end
else
count = 0;
end
end
if ~win
count = 0;
for i = -4:4
if row-i >= 1 && row-i <= 15 && col+i >= 1 && col+i <= 15 && board(row-i,col+i) == value
count = count + 1;
if count == 5
win = true;
break;
end
else
count = 0;
end
end
end
end
%% 寻找最佳下棋位置
function move = find_best_move(board)
%% 随机下棋
empty_cells = find(board == 0);
move_index = randi(length(empty_cells));
move = [mod(empty_cells(move_index)-1,15)+1, floor((empty_cells(move_index)-1)/15)+1];
end
```
该示例包括以下功能:
- 初始化一个 15x15 的棋盘
- 玩家和电脑交替下棋,直到有一方获胜
- 实现了检查水平、竖直和对角线方向是否获胜的函数 `check_horizontal`、`check_vertical` 和 `check_diagonal`
- 实现了寻找最佳下棋位置的函数 `find_best_move`(目前只是随机下棋)
你可以根据需要修改和完善代码。