그래서 Box 클래스의 객체 벡터가 있고, 각 상자를 화면의 좌표 집합에 매핑하여 특정 영역을 클릭하면 벡터에서 특정 상자에 액세스 할 수 있습니다. 저는 sfml 2.1을 사용하여 클릭 가능한 영역으로 사용될 직사각형을 만듭니다.std map을 사용하여 도형을 클래스 객체에 매핑하는 방법은 무엇입니까?
Board.h (상자를 보유 게임 보드) :
#pragma once
#include "stdafx.h"
#include <vector>
#include <map>
#include "Box.h"
#include "SFML/Graphics.hpp"
#include "ImageManager.h"
class Board{
public:
Board(ImageManager &im);
~Board();
void FillVectors();
void FillMap();
std::vector<Box> &GetBoxes();
sf::Sprite GetGameBoard();
private:
sf::Sprite gameBoard;
ImageManager &imgr;
std::vector<sf::RectangleShape> rectangles;
std::vector<Box> boxes;
std::map<sf::Vector2f, std::vector<Box>> boxMap;
};
그리고 Board.cpp에서 :
void Board::FillVectors(){
for(int i = 0; i < 9; i++){
sf::RectangleShape rectangle(sf::Vector2f(80,80));
Box box;
rectangles.push_back(rectangle);
boxes.push_back(box);
}
for(int i = 1; i < boxes.size() + 1; i++){
std::cout << boxes[i].GetName();
rectangles[i].setPosition((i * 20) + 10, (i * 20) + 10);
}
}
void Board::FillMap(){
for(std::map<sf::Vector2f, std::vector<Box>>::const_iterator it = boxMap.begin(); it != boxMap.end(); ++it){
for(int i = 0; i < boxes.size(); i++){
boxMap[rectangles[i].getOrigin()];
}
}
}
을 여기에 지금까지 무엇을 가지고
오류는 발생하지 않지만 여기서부터 무엇을 해야할지에 관해서는 정말로 분실했습니다. std :: map은 화면의 영역을 객체에 연결하는 올바른 방법일까요?
공간 인덱스가 필요합니다. http://en.wikipedia.org/wiki/Spatial_database – nikitoz
@nikitoz @nikitoz, tic tac 발가락, rpg가 아닙니다. . 거대한 if 문 목록보다 더 효율적인 무언가를 찾고 있는데, 아마도 공간 인덱스처럼 보이지 않는 무언가가 아닙니다. – jburn7