【问题标题】:Check taken location on Tic Tac Toe board Matlab检查井字游戏板 Matlab 上的拍摄位置
【发布时间】:2015-10-05 01:05:20
【问题描述】:

我正在尝试创建一个小函数来检查井字棋盘上是否有一个点。我创建了一个名为 tttArray 的零数组,当每个点被填充时,它的位置变为 1。所以我首先从下面的函数中获取玩家的输入。

function [pXInputRow, pXInputCol] = pickXspot(playerInput)
%This function is to take inputs from Player X
pXInputRow = 0;
pXInputCol = 0;
%Set text for Row/Col Prompt
prompt = {'Row (1,2, or 3)', '(Col (1, 2, or 3)'};
name = 'Player X Turn';
%Show prompt to input values
playerInput = inputdlg(prompt, name);
pXInputRow = str2num(playerInput{2});
pXInputCol = str2num(playerInput{1});
tttArray(pXInputRow, pXInputCol) = 1;
end

然后使用下面的函数来查看是否被占用。

function  [spotTaken] = checktaken(tttArray)
%Function used to check if spot is taken
%Setup Error Messages
errorMessage = 'This spot is taken, please choose another spot';
errorMessageTitle = 'Spot Taken';
if tttArray(pXInputRow, pXInputCol) || tttArray(pOInputRow, pOInputCol) == 1
    msgbox(errorMessage, errorMessageTitle)
    spotTaken = 1;
end
end

但是,在我运行并在提示对话框中放置一行/列之后,我不断收到以下错误。有什么建议吗?

Not enough input arguments.
Error in checktaken (line 8)
if tttArray(pXInputRow, pXInputCol) || tttArray(pOInputRow, pOInputCol) == 1

【问题讨论】:

标签: arrays matlab input user-input tic-tac-toe


【解决方案1】:

几个问题。

您将 tttArray 作为输入参数提供给您的 checkTaken 函数作为调用参数:

function  [spotTaken] = checktaken(tttArray)

但您似乎没有提供行和列参数 pXInputRow、pXInputCol 或 pOInputRow、pOInputCol 作为参数。

所以调用时这些参数是未定义的

if tttArray(pXInputRow, pXInputCol) || tttArray(pOInputRow, pOInputCol) == 1

您需要将这些坐标作为参数提供给您的 checkTaken 函数。

你可以使用蛮力方法

function  [spotTaken] = checktaken(tttArray, pXInputRow, pXInputCol, pOInputRow, pOInputCol)

或者你可以做一些更优雅的事情,比如把坐标放在一个数组中。

另一个问题是,如果你想检查任何一个数组元素是否等于 1,你的 if 语句语法不正确。

实际上你有

如果一个 || b == 1

但这可能不是你想要的。请参阅 operator precedence 上的 Matlab 文档

你可能想要

如果 (a == 1) || (b == 1)

所以你的 if 语句应该是

if (tttArray(pXInputRow, pXInputCol)  ==1) || (tttArray(pOInputRow, pOInputCol) == 1)

【讨论】:

  • 由于某种原因,Matlab 仍然说该函数需要更多输入......我不确定我现在还需要输入什么?不过,我确实修复了语法错误,很好,谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-16
  • 1970-01-01
相关资源
最近更新 更多