'알고리즘'에 해당되는 글 3건

  1. 2007.03.31 Maze Generator
  2. 2007.03.31 A* Path Finder
  3. 2007.03.31 Mersenne Twister Random Generator

Maze Generator

Posted by NUL PROG. : 2007. 3. 31. 23:38

미로 생성기

재귀 호출이나 스택을 이용합니다.

스택 사이즈를 늘리거나 맵의 크기를 제한 해야겠죠



아래는 제가 작성한 의사 코드로 교과서적인 알고리즘과는 다를수 있습니다. (책을 안봐서..;;)



function CanMaze(현위치, 이동방향): Boolean
begin

  Result := 현위치에서 이동방향으로 이동시 맵의 범위 안에 있다 and
               이동 후 현위치를 제외한 사방이 벽으로 막혀 있다

end;


procedure SubGeneMaze(현위치, 이동방향);
begin

    현위치의 벽을 허문다;


   // 일정확률로 이동 방향에 가중치를 줌에 따라 미로의 전반적 형태가 달라진다
    if 일정확률 then 다음방향 := 이동방향
    else 다음방향 := 랜덤방향;


    if CanMaze(현위치, 다음방향) then 
       SubGeneMaze(현위치에서 다음방향으로 이동한 위치, 다음방향);


    if 다음방향이 상 또는 하 then
    begin
       // 좌,우 우선순위는 랜덤으로 결정
       if CanMaze(현위치, 좌(우)) then SubGeneMaze(현위치, 좌(우));
       if CanMaze(현위치, 우(좌)) then SubGeneMaze(현위치, 우(좌));
    end;


    if 다음방향이 좌 또는 우 then
    begin
       // 상,하 우선순위는 랜덤으로 결정
       if CanMaze(현위치, 상(하)) then SubGeneMaze(현위치, 상(하));
       if CanMaze(현위치, 하(상)) then SubGeneMaze(현위치, 하(상));
    end;

end;


procedure GenerateMaze(시작지점);
begin

  모든맵을 벽으로 채운다;

  SubGeneMaze(시작지점, 랜덤방향);

end;

  

A* Path Finder

Posted by NUL PROG. : 2007. 3. 31. 23:36
http://www.policyalmanac.org/games/aStarTutorial.htm

쉽게 이해할수 있도록 튜토리얼이 정리가 잘되었습니다.

웹 사이트가 없어지기전에 클래스를 만들어 놨으니 이젠 잊어먹어두 상관 없슴다 -_-;

아쉬운데로 링크를 남기기 위해 ;;;
  

Mersenne Twister Random Generator

Posted by NUL PROG. : 2007. 3. 31. 16:22

Mersenne Twister

A 623-Dimensionally Equidistributed Uniform Pseudo-Random Number Generator.

home page

original c source

Translated to OP and Delphi interface added by Roman Krejci (6.12.1999)

수학이라 잘 모르겠습니다
그저 가져다 쓸뿐 -_-;;;
Seed 값을 조절 하면 (좀 크게...) 아주 만족 스럽습니다.
  
 «이전 1  다음»