С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
E34234
0 / 0 / 0
Регистрация: 25.01.2012
Сообщений: 7
#1

В чем может быть ошибка? (передача аргументов функции) - C++

06.12.2012, 19:27. Просмотров 348. Ответов 2

Есть двумерный массив, симулирующий игровое поле (0 означают пустоту, 8 игрок)
Есть некая функция, которую я хочу использовать просто для передвижения персонажем по игровому полю:
C++
1
2
3
4
5
6
7
8
void player_move(int posxm, int posym){
for(int i=0;i<rows;i++)
    for(int j=0;j<cols;j++)
        if (array[i][j]==8) {
            array[i][j]=0;
            array[i+posym][j+posxm]=8;
        }
}
Передаю функции 2 числа, на сколько я хочу передвинуть по Х и У соответственно. Если программа находит на поле игрока (8), то на текущем месте оставляет пустое место (0), а на месте куда я должен попасть - игрока.

Проблема в том, что корректно программа работает лишь в случае передачи функции отрицательных значений.
Движение вверх на клеточку работает замечательно например:
C++
1
player_move(0,-1);
Но если я передаю положительное число, весь массив портится по непонятному мне алгоритму, игрок обычно стирается безвозвратно, а большинство прочих объектов меняется на 0 - пустоту.
Движение вправо на клеточку превращает массив в хз что =о
C++
1
player_move(1,0);
С чем это может быть связано, и как лечить :?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2012, 19:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В чем может быть ошибка? (передача аргументов функции) (C++):

В чем может быть ошибка? - C++
Вот программа: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;stdlib.h&gt; #include...

В чем может быть ошибка, и как её вылечить? - C++
Проблема такая. Покуда я студент, то пичкают нас всяческой дрянью, и вот настал язык Си. С С++ я знаком, и ноутбук с никсами прекрасно...

В чем может быть ошибка? (пример с побитовым сдвигом) - C++
Всем доброго дня) В одной из книжек по С++ (Horton) наткнулся на такую вот небольшую задачку: unsigned s = 555; int i = (s &gt;&gt;...

В чем может быть ошибка. Расстояние между вершинами дерева - C++
Входные данные: Первая строка содержит количество вершин в дереве n(1&lt;=n&lt;=500000). Вершины имеют значения от 0 до n-1. В следующих n-1...

Программа не работает, но ошибок не выдает. В чем может быть ошибка? - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;cstdlib&gt; #define m 8 using namespace std; int main() { int...

Программа не работает на русском языке. В чем может быть ошибка? - C++
#include&lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { setlocale (LC_ALL, &quot;rus&quot;); for (int countinue = 0;...

2
Wolkodav
605 / 458 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
06.12.2012, 19:42 #2
Может быть связано с выходом за пределы массива допустим. Но допустим i=rows-1; т.е. последнее i, тогда получаем
что array[i][j]; где i=rows, номируется массив от нуля, вот и ошибка, выход за пределы. А отрицательные работать тоже не всегда будут, просто наверное не проверяли такие случаи.
0
E34234
0 / 0 / 0
Регистрация: 25.01.2012
Сообщений: 7
06.12.2012, 19:57  [ТС] #3
Исключено, выход за пределы не тестировал конечно, но 8 единственная и находится в самом центре. Вверх и влево двигаюсь на ура, так как прибавляю отрицательные числа, а попытки походить вниз и вправо уничтожают половину массива как и игрока. Ошибок не вижу =\
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2012, 19:57
Привет! Вот еще темы с ответами:

задание из книги стивен прата 6 издание глючит. в чем может быть ошибка - C++
собрал задачу, ставлю текстовый файл внутри программы, с цифровыми данными, а он не работает. файл сам рабочий, так как другая программа...

Вылетает "strcpy_s", в чем может быть ошибка? - C++
Все перепробовал, по сути ошибки не должно быть, компилируется нормально, но только доходит до того места, сразу программа вылетает ...

Передача аргументов функции - C++
В книге Стенли Липпмана C++ Primer дошел до программы, которая выполняет замену слов в одном файле, которые указаны в другом. Например, ...

Передача аргументов функции - C++
Как передать функции переменную неизвестного типа?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.