1-4. ํƒํ—˜ ์ค‘ ์•„์ดํ…œ ํš๋“ ํ•  ๋ฐฉ ํŒŒ์•… ( ๊ฐฏ์ˆ˜ ๋ฐ ์œ„์น˜, ์ตœ์†Œ 3x3 - ์ „ํˆฌ์šฉ ๋ฐฉ๊ณผ๋Š” ์•ˆ๊ฒน์น˜๊ฒŒ )

์ข์€ ๋ฐฉ์—๋Š” ์•„์ดํ…œ์ด ๋–จ์–ด์ ธ์žˆ์–ด ์ฃผ์šธ ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.

viewimage.php?id=2abcdd23dad63db0&no=29bcc427b38a77a16fb3dab004c86b6fefd5355bb21004331d884566e8f3c82281c334425808cce4b3470d1beefe8620532714ef9f4b6cf8d771

StoreBattleRoom() ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ private๋ฉค๋ฒ„๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค.

dicGroundExist๋Š” ํ•ด๋‹น ์ขŒํ‘œ์— ๋ฐ”๋‹ฅ์ด ์žˆ๋Š”์ง€ํ™•์ธํ•˜๋Š”๊ฑฐ๊ตฌ์š”

listBattleRoom์€ ์ „ํˆฌ์šฉ-๋ฐฉ์˜ย ํ”ผ๋ด‡ ์œ„์น˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค

listItemRoom์€ ์•„์ดํ…œ ํš๋“ / ์ด๋ฒคํŠธ์šฉ ๋ฐฉ์˜ ํ”ผ๋ด‡์œ„์น˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

isListRoomForBattle์€ ์ „ํˆฌ์šฉ ๋ฐฉ์˜ ๋ฐ”๋‹ฅํƒ€์ผ์„ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์–ด์„œ/ ๋‹ค๋ฅธ๋ฐฉ ์ƒ์„ฑ์‹œ ์ „ํˆฌ์šฉ ๋ฐฉ๊ณผ ์˜์—ญ์ด ๊ฒน์น˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์šฉ๋„์ž…๋‹ˆ๋‹ค.

isListRoomForItem์€ ๋งˆ์ฐฌ๊ฐ€์ง€์ง€๋งŒ ์•„์ดํ…œ ํš๋“์šฉ ๋ฐฉ์˜ ๋ฐ”๋‹ฅ์„ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์–ด์„œ ๋‹ค๋ฅธ๋ฐฉ๊ณผ ๊ฒน์น˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์šฉ๋„์ž…๋‹ˆ๋‹ค.


์ข์€๋ฐฉ(์•„์ดํ…œํš๋“์šฉ๋ฐฉ)์œ„์น˜ ์ €์žฅ์šฉ ํ•จ์ˆ˜๋Š”ย 

StoreItemRoom()์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

--- ์ ˆ์ทจ์„  ---

private void StoreItemRoom(){

int len = GroundBlocksArray.Count;

GameObject tmpObj;


Vector3 tmpVector;

Vector2 tmpPivotRoom;

int tmpVal;

bool? tmpPivotExist;

Vector2 tmpNewPivotRoom;

List<Vector2> listNewRoomGround;


for(int i = 0; i < len; i++){

tmpObj = GroundBlocksArray[i] as GameObject;

tmpVector = tmpObj.transform.position;


bool isAvailableSizeItemRoom ย = true;

for(int y = 0; (y < 3) && isAvailableSizeItemRoom; ++y){

for(int x = 0; (x < 3) && isAvailableSizeItemRoom; ++x){

if( !dicGroundExist.ContainsKey(tmpVector+new Vector3(x,y,0)) ){

isAvailableSizeItemRoom = false;

} else if (isInRoomForBattle.ContainsKey( ย new Vector2(tmpVector.x+x, tmpVector.y+y) ) ) {ย 

// ์ „ํˆฌ์šฉ ๋ฐฉ๊ณผ ๊ฒน์น˜๋ฉด ์ œ์™ธ

isAvailableSizeItemRoom = false;

}

}

}


if(isAvailableSizeItemRoom){

// ํ˜„์žฌ ์œ„์น˜ tmpVector๊ฐ€ ์•„์ดํ…œ ํš๋“์šฉ๋งต์„ ๋งŒ๋“ค๊ธฐ์— ์ ์ ˆํ•œ ์‹œ์ž‘์ง€์ ์ž„ ( ๋ฐ”๋‹ฅ์ด ๋นˆ์นธ์ด ์•„๋‹˜ )

// + ์ „ํˆฌ์šฉ ๋งต๊ณผ ๊ฒน์น˜์ง€ ์•Š์Œ

// ์ด๋ฏธ ์ „ํˆฌ์šฉ ๋งต๊ณผ์˜ ๊ฒน์นจ์€ ํ•ด๊ฒฐ๋์–ด์•ผ๋จย 

tmpPivotRoom = new Vector2(tmpVector.x, tmpVector.y);

listNewRoomGround = new List<Vector2>();

if(!isInRoomForItem.ContainsKey(tmpPivotRoom)){

bool roomBoundColision = false;

for(int y = 0; y < 3; ++y){

for(int x = 0; x < 3; ++x){

tmpNewPivotRoom = new Vector2( tmpPivotRoom.x + x , tmpPivotRoom.y + y );

if( !isInRoomForItem.ContainsKey(tmpNewPivotRoom) ){

listNewRoomGround.Add(tmpNewPivotRoom);

} else {

roomBoundColision = true;

}

}

}

if(!roomBoundColision){

listItemRoom.Add(tmpPivotRoom);

for(int k = 0; k < listNewRoomGround.Count; ++k){

isInRoomForItem.Add( listNewRoomGround[k], true );

}

}

}

}

}


int length = listItemRoom.Count;

Vector3 tmpVector3 = new Vector3(0,0,0);

for(int i = 0; i < length; ++i){

tmpVector3.x = ((Vector2) listItemRoom[i]).x;

tmpVector3.y = ((Vector2) listItemRoom[i]).y;

tmpVector3.z = 0;


GameObject obj = (GameObject) GroundBlocksArray[dicGroundExist[tmpVector3]];

obj.GetComponent<SpriteRenderer>().color = new Color32(0,0,0,255);

obj.name = "Item";

}

}

---- ์ ˆ์ทจ์„  --- ํ•จ์ˆ˜ ๋

์ฐจ์ด๋‚˜๋Š” ๋ถ€๋ถ„์€ ์ฒ˜์Œ ๋ฐฉ์„ ๋†“์„๋งŒํผ ๋ฐ”๋‹ฅ์ด ์ถฉ๋ถ„ํžˆ ๊น”๋ ธ๋Š”์ง€ ( ํ”ผ๋ด‡ ๊ธฐ์ค€์œผ๋กœ 3x3์œ„์น˜๊ฐ€ ๋ฐ”๋‹ฅ์ด ์žˆ๋Š”์ง€ )

ํ™•์ธํ•  ๋•Œ, ํ•ด๋‹น ์œ„์น˜๊ฐ€ ํ˜น์‹œ ์ „ํˆฌ์šฉ๋ฐฉ์˜ ์˜์—ญ์ธ์ง€ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค


viewimage.php?id=2abcdd23dad63db0&no=29bcc427b38a77a16fb3dab004c86b6fefd5355bb21004331d884566e8f3c82281c334425808cce4b3470d1beefe8172962a92499f14a05e2123

๊ทธ๋’ค๋ก  ๊ฑฐ์˜ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„์ดํ…œ์šฉ ๋ฐฉ ์œ„์น˜๋ฅผ ์ž˜ ์žก์•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ํŽธํ•˜๊ฒŒ

ํ•ด๋‹น ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ์˜ ์ด๋ฆ„์„ Item์œผ๋กœ ๋ฐ”๊พธ๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ( ์ƒ‰์ƒ์€ ํŒŒ๋ž€์ƒ‰์œผ๋กœ ํ•˜๋ฉด ์ž˜ ์•ˆ๋ณด์—ฌ์„œ ๊ฒ€์€์ƒ‰์œผ๋กœ )

์ „ํˆฌ์šฉ ๋ฐฉ ํ”ผ๋ด‡์˜ ๊ฒฝ์šฐ ์ด๋ฆ„์„ Battle๋กœ ํ–ˆ๊ตฌ์š”


viewimage.php?id=2abcdd23dad63db0&no=29bcc427b38a77a16fb3dab004c86b6fefd5355bb21004331d884566e8f3c82281c334425808cce4b3470d1beefed07c40ae44e2b100de5cb972

์ด๋ ‡๊ฒŒ์š”.


๋‹ค์Œ ๋ชฉํ‘œ >ย ์ข์€ ๋ฐฉ์—๋Š” ์•„์ดํ…œ์ด ๋–จ์–ด์ ธ์žˆ์–ด ์ฃผ์šธ ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.

์ƒ๊ฐํ•ด๋ณด๋‹ˆ ์ด๊ฑด ์ง€๊ธˆ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฒŒ ์•„๋‹ˆ๋„ค์š” ๋ณธ๊ฒŒ์ž„์ด๋ž‘ ํ•ฉ์ณ์•ผ๋งŒ ๊ฐ€๋Šฅํ•˜์ฃ . ์šฐ์„  ์•„์ดํ…œ์šฉ๋ฐฉ์˜ ์œ„์น˜๋ฅผ ์žก์€๋ฐ์— ๋งŒ์กฑํ•ฉ์‹œ๋‹ค.


viewimage.php?id=2abcdd23dad63db0&no=29bcc427b38a77a16fb3dab004c86b6fefd5355bb21004331d884566e8f3c82281c334425808cce4b3470d1beefe8274b3a5020c37bb209b2f5e

์ขŒํ•˜๋‹จ์˜ ๊ฒ€์€์ƒ‰ ๋ถ€๋ถ„์ด ์•„์ดํ…œ ํš๋“์šฉ ๋ฐฉ์œ„์น˜, ์šฐ์ธก์˜ ๋นจ๊ฐ„์ƒ‰์ด ์ „ํˆฌ์šฉ ๋ฐฉ ์œ„์น˜์ž…๋‹ˆ๋‹ค.


๊ทผ๋ฐ ์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ํ•˜๋ฉด ๊ทธ๋ƒฅ ์ด์ „๊ธ€๊ณผ ๊ฑฐ์˜ ํก์‚ฌํ•˜๋‹ˆ ์ถ”๊ฐ€๋กœ ๋” ๋„ฃ์–ด๋ด…์‹œ๋‹ค.

๋ฐ”๋กœ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ €์žฅ์ธ๋ฐ์š”.


ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋ ค๋ฉด ํ˜„์žฌ์™€ ๊ฐ™์€ ๋ฒกํ„ฐ ๋ฆฌ์ŠคํŠธ๋ณด๋‹ค๋Š”

๊ฐ€๋กœ ๋ช‡ ์„ธ๋กœ ๋ช‡ ๊ฐ™์€ ๊ตฌ์—ญ์— ์žˆ๋Š” ์‹์œผ๋กœ ์ €์žฅ๋˜๋ฉด ๋” ํŽธํ•˜๊ฒ ์ฃ .

19,4

0000000000000010000

0000000000011111000

0000001111111010000

0000000000000010000

์•„์˜ˆ ๋ฒฝ์„ ๋งŒ๋“ค๊ณ  ํ•˜๋Š”๊ฒŒ ๋” ๋‚ซ๊ฒ ๋„ค์š”

1์€ ๋ฐ”๋‹ฅ, 2๋Š” ๋ฒฝ, 3์€ ์‹œ์ž‘์ , 4๋Š” ๋์ 

๊ทธ๋ฆฌ๊ณ  ๋’ค์—๋Š” ์•„์ดํ…œ๋ฐฉ ์ขŒํ‘œ, ์ „ํˆฌ๋ฐฉ ์ขŒํ‘œ๋ฅผ ๋‚จ๊ธฐ๋Š”๊ฑฐ์ฃ 

------ FILE ----

19,4

0000000000222232000

0000022222211111200

0000024111111212000

0000022222222212000

(14,1)

(16,3),(16,2)

์ด๋ ‡๊ฒŒ์š”


์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์šฐ์„  ๋ฐ”๋‹ฅ+๋ฒฝ ํƒ€์ผ์˜

๊ฐ€์žฅ์ž‘์€ X,Y์ขŒํ‘œ, ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅํฐ X,Y์ขŒํ‘œ๋ฅผ ์•Œ์•„์„œ

2์ฐจ์› ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์ €์žฅ ๊ฐ€๋Šฅํ•ด์•ผ๊ฒ ์ฃ .

---- ์ค‘๊ฐ„์ €์žฅ ----