프로그래밍/Unity 72

해시테이블_충돌

1. 충돌 해시테이블을 구현 할 때 주로 해결해야 할 문제가 충돌문제. 나머지를 구하는 해싱의 경우, 키가 14와 10,564이면 나머지가 4로 충돌한다. 충돌을 해소하려면 해시함수를 사용하거나 충돌이 문제되지 않는 방식으로 테이블을 수정해야한다. (1.개별자리수 더하기, 2.문자열의 해싱) 2. 해시함수 1)개별 자리수 더하기: 간단한 해시함수는 각 자리를 모두 더하는것. ex) 143,674와 645,394 1+4+3+6+7+4 = 25 6+4+5+3+9+4 = 31 ->충돌이 발생하지는 않지만 배열의 크기 10을 넘어간다. 해결방법 (1)배열의 크기를 54로 하는것(6자리:9+9+9+9+9+9+) (2)이중해싱으로 키 값을 특정한 방법으로 해싱을 하고 그 해싱된 값을 한번 더 해싱 !-> 개별자리수..

해시테이블(hash table)

2016.10.18. 18:36 1.희소자료(sparse data) 게임 안에서 각 플레이어를 식별번호(KEY)로 구별한다. 각 키는 고유하여 동일한 키를 가지는 플레이어는 없다. 또, 0~ 1000,000 사이의 정수로 무작위 결정된다. EX) player1 : 945,253 player2: 433,455 player3: 36,549 player3(36,549) player2(433,455) player1(945,253) 0 100,0000 -> 1000,000개의 색인들 중 3개의 색인만 쓰여서 무지 낭비. 배열이 아닌 연결리스트로 구현해도 연결리스트 자체가 접근속도가 느려서 별 소용없다. !-> 그래서 해시테이블 사용! 키 기반 희소자료를 적당한 크기의 공간에 빠르게 저장할 수 있다. '특정한' 하..

Stack<T>

Stack 2016.10.04. 19:03 크기가 변하는 LIFO(후입선출) 방식의 컬렉션을 나타낸다. Push 개체를 Stack의 맨 위에 삽입 Pop Stack 의 맨 위에서 개체를 제거하고 반환 Peek Stack의 맨 위에서 개체를 제거하지 않고 반환 using System; using System.Collections.Generic; namespace StackTEx { public class Enemy { public string Name { get; set; } public int Level { get; set; } public int HP { get; set; } public int Exp { get; set; } public void printEnemyInfo() { Console.Wri..

Queue<T>

Queue 2016.10.04. 19:00 크기가 변하는 선입선출(FIFO) 방식의 컬렉션을 나타낸다. Enqueue 개체를 Queue의 끝 부분에 추가 Dequeue Queue의 시작 부분에서 개체를 제거하라고 반환 Peek Queue의 시작 부분에서 개체를 제거하지 않고 반환. using System; using System.Collections.Generic; namespace QueueTEx { public class Enemy { public string Name { get; set; } public int Level { get; set; } public int HP { get; set; } public int Exp { get; set; } public void printEnemyInfo() ..

Dictionary<TKey, TValue>

Dictionary 2016.10.04. 17:52 Dictionary 키와 값의 컬렉션을 나타낸다. Add 지정한 키와 값을 가지는 요소를 추가 Remove 지정한 키를 가지는 요소를 제거 using System; using System.Collections.Generic; public class FileFormatTable{ private Dictionary openWith; public FileFormatTable(){ openWith = new Dictionary(); //추가 openWith.Add("txt", "notepad.exe"); openWith.Add("bmp", "paint.exe"); openWith.Add("dib", "paint.exe"); openWith.Add("rtf", ..

List<T>

2016.10.04. 17:29 List 인덱스로 접근할 수 있는 개체 리스트를 나타낸다. Add 개체를 List의 끝 부분에 추가 insert List 의 지정된 인덱스에 요소를 삽입 Remove List에서 맨 처음 발견되는 특정 개체를 제거 Find 조건과 일치하는 요소를 검색하고 전체 List에서 처음으로 검색한 요소를 반환 using System; using System.Collections.Generic; public class Enemy{ public string Name{get; set;} public int Level {get; set;} public int HP{get; set;} public int Exp{get; set;} public void printEnemyInfo(){ Con..

LinkedList<T>

2016.10.04. 17:07 LinkedList 이중연결리스트를 나타낸다. AddFirst 시작위치에 지정된 값이 포함된 새 노드를 추가. AddLast 끝에 지정한 값이 포함된 새 노드를 추가 AddBefore 지정한 기존 노드 앞에 지정한 새 노드 추가 AddAfter 지정한 기존 노드 다음에 지정한 새 노드 추가 Find 지정한 값이 포함된 첫번재 노드를 찾는다 First 첫번째 노드를 가져온다 Remove 지정된 노드를 제거 RemoveFirst 시작 위치에서 노드를 제거 Removelast 끝에서 노드를 제거 EX) using System; using System.Text; using System.Collections.Generic; namespace LinkedListTEx { class ..

Generic(일반화), Collection

2016.09.26. 20:48 Generic(일반화) 서로 다른 개념에서 공통점을 찾아, 공통된 개념을 찾아서 하나로 묶어주는 것. int, float, string 등 다른 타입이지만, '변수' 라는 개념으로 묶어줄 수 있다. void print(int a){console.WriteLine(a);} void print(float b){console.WriteLine(b);} void print(string c){console.WriteLine(c);} 이걸 일반화 하면 ↓ void print(T value){console.WriteLine(value);} ex ) static void print(일반화 type){console.WriteLine(value)}; static void Main(strin..

2016.09.14. 19:28~09.17

일정거리에 들어오면 공격하도록. collider trigger를 이용해서 할까, 거리를 잴까 하다가 이왕 추적하는 거리재는김에 한번 더 재는걸로 했다. 타겟이 생기면 바로 chasing에서 일정거리 안으로 들어오면 chasing으로 변경. 타겟과의 거리는 죽은 상태 이외는 계속 재고있다. 트리거랑 거리재는거랑 어느게 더 원활하게 플레이하기 좋은방법이려나. 별상관없나. + 어디에서 문제인건지 spawnTile 위가 아니라 좀더 앞이나 옆으로 이동된다. 소환자체는 spawnTile에서 나온게 맞는데 왜 이동되는걸까. 소환 스크립트, 소환타일 랜덤하게 돌리는 메소드 다 찾아봤는데 이상없음. 혹시몰라서 타일에 낄까봐 약간 올리던 Vector3.up같은것도 싹주석했는데 그대로... Enemy 스크립트 문제라기엔 ..