Используя C (работает на Arduino / Teensy) я могу читать символы из сетки в формате строки или столбца.
У меня есть вызов функции для разделения строк и столбцов, потому что я еще не смог сосредоточиться на изменении строки или столбцов в той же функции, в зависимости от того, какая инструкциябыло дано.
Кажется, что это просто и приятно - звонить findWordByCol()
изнутри findWordByRow()
(и наоборот), но я чувствую, что трачу код с функциями findWordOnRow()
иfindWordOnCol()
.
РЕДАКТИРОВАТЬ: Новый пример.
Я попытался разыменовать операторы (*) и address-of (&) в нескольких точках этого небольшого примера. Но я не могу заставить Seril.println вывести то, что содержится в переменной row
, исходя из того, что это выбранное слово из char words[][6] = {"row","col"};
void setup() {
Serial.begin(9600);
int chooseWord = 0; // 0 - row, 1 - col
char words[][6] = {"row","col"};
char row[] = {"You chose the row."};
char col[] = "You chose the col.";
if (chooseWord == 0 ) {
// I want you to print what is within variable row
char toAlter = &words[0];
Serial.println(toAlter);
// Above should operate the same as
Serial.println(row);
} else {
// I want you to print what is within variable col
//Serial.println(&words[1]);
}
}
Как мне сделать что-то такое, чтоесли я вызываю одну функцию с помощью:
void findWord(basedOnRow) {}; // Should modify grid[**ROW**][col]
void findWord(basedOnCol) {}; // Should modify grid[row][**COL**]
Пример текущей операции. Начальный вызов:
// Find out where the second tile is relative to the first tile to set vector
if (vector == 0) {
findWordOnRow(workingWords, workingWord, stateHolder, row, col, tileCommsData.playerNumber);
} else if (vector == 1){
findWordOnCol(workingWords, workingWord, stateHolder, row, col, tileCommsData.playerNumber);
} else {
Serial.println("Something is wrong: No vector on this tile.");
}
void findWordOnRow (*pointers, things){
// Do things
if ((gameGrid[row-1][col].designation != '\0' || gameGrid[row+1][col].designation != '\0') && (row >= 0 && row < GRID_Y)){
if (findWordOnCol(workingWords, workingWord, tileState, row, col, player) == 0) {
allWordsComplete = 1;
} else {
allWordsComplete = 0;
}
}
}
void findWordOnCol (*pointers, things){
// Do things
if ((gameGrid[row][col-1].designation != '\0' || gameGrid[row][col+1].designation != '\0') && (col >= 0 && col < GRID_X)){
if (findWordOnCol(workingWords, workingWord, tileState, row, col, player) == 0) {
allWordsComplete = 1;
} else {
allWordsComplete = 0;
}
}
}
Я рассмотрел макросы - хотя не смог изменить свое мнение о том, как я изменил бы ## на строку или ## наcol в зависимости от ввода.
Отредактировано: Добавить язык и примеры. Спасибо JonRSharpe за указание, как я могу помочь вам помочь.