|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.10.2016, 01:18 | #1 |
Регистрация: 09.11.2015
Сообщений: 7
|
Передача двумерного массива в функции
Здравствуйте! Изучаю SFML, в уроке весь код находиться в одном cpp файле, я решил разнести все как положено по файлам но наткнулся на следующую проблему:
map.h [CPP] const int HEIGHT_MAP = 25;//размер карты высота const int WIDTH_MAP = 40;//размер карты ширина sf::String TileMap[HEIGHT_MAP] = { "0000000000000000000000000000000000 000000", "0 0", "0 s 0", "0 s 0", "0 0", "0 0", "0 s 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0000000000000000000000000000000000 000000", }; [/CPP] game.h [CPP] class Player..... void update(float); //функция "оживления" объекта класса void interactionWithMap(); //функция взаимодействия персонажа с объектами карты [/CPP] game.cpp [CPP] #pragma once #include "game.h" #include "map.h" void Player::update(float time) { ......... interactionWithMap();//вызываем функцию, отвечающую за взаимодействие с картой } void Player::interactionWithMap()//ф-ция взаимодействия с картой { for (int i = y / 32; i < (y + h) / 32; i++) for (int j = x / 32; j<(x + w) / 32; j++) { if (TileMap[i][j] == '0') { if (dy>0) { y = i * 32 - h; } if (dy<0) { y = i * 32 + 32; } if (dx>0) { x = j * 32 - w; } if (dx < 0) { x = j * 32 + 32; } } if ((&TileMap)[i][j] == 's') { x = 300; y = 300; (&TileMap)[i][j] = ' '; } } } [/CPP] main.cpp [CPP] #include <iostream> #include <SFML/Graphics.hpp> #include "game.h" #include "map.h" //подключили код с картой ............. p.update(time); ............. [/CPP] Если все функции взаимодействия с картой будут в main.cpp, то все работает, а в этом виде выдает ошибку, TileMap уже был создан в obj и т.д. Скорее всего нужно передать массив в функцию update, а внутри неё в interactionWithMap. Но как я не пробовал все равно не получается. Встречал подобную проблему, там решили указанием static sf::String TileMap[HEIGHT_MAP], но в этом случае в игре при взаимодействии с объектом происходит, то что и должно произойти (телепортация, увеличение очков), но сам объект не исчезает, т.е. для взаимодействия он изменился и уже не реагирует на взятый предмет, а при прорисовке (функция прорисовки обходит весь массив и вывод тайлы на экран - описана в main) все равно рисует этот объект. Заранее благодарю за помощь. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передача двумерного массива в функцию | Animaria | Общие вопросы C/C++ | 5 | 17.09.2014 01:50 |
передача двумерного массива как параметра функции | Yulia_sko.kz | Помощь студентам | 0 | 31.03.2012 15:15 |
Передача двумерного массива в функцию | bajaka | Visual C++ | 9 | 27.11.2011 16:17 |
Передача двумерного массива в функцию | FelixXXI | Общие вопросы C/C++ | 3 | 27.08.2011 18:08 |
Передача двумерного массива аля матрицы из функции | bondik | Общие вопросы C/C++ | 1 | 20.05.2009 15:46 |