큐브~
전에 큐브를 구현해보려고 한적이 있었음.
한 면을 두고 그 면에 회전방향을 지정해서 돌리는 로직을 만들었었는데
간단히 올려봄.
아래 소스는 동일하게 동작한다.
과연 무엇을 쓸것인가?
하나는 그나마 보기에 좋고 소스가 조금더 길다( 쬐끔 )
하나는 보기어렵고 소스가 짧다.
void RotationFor(bool CW)
{
string[] buffer = new string[3];
buffer[CW ? 2 : 0] = CubeBuffer[CW ? 11 : 0 ];
buffer[1] = CubeBuffer[CW ? 10 : 1 ];
buffer[CW ? 0 : 2] = CubeBuffer[CW ? 9 : 2 ];
for (int loop = 0; loop < 3; loop++)
{
CubeBuffer[(CW ? 11 - (loop * 3)-0 : (loop * 3) + 0 ) ] = CubeBuffer[(CW ?11 - (loop * 3) - 3 : (loop * 3) + 3 )];
CubeBuffer[(CW ? 11 - (loop * 3)-1 : (loop * 3) + 1 ) ] = CubeBuffer[(CW ?11 - (loop * 3) - 4 : (loop * 3) + 4 )];
CubeBuffer[(CW ? 11 - (loop * 3)-2 : (loop * 3) + 2 ) ] = CubeBuffer[(CW ?11 - (loop * 3) - 5 : (loop * 3) + 5 )];
}
CubeBuffer[CW ? 2 : 9] = buffer[CW ? 2 : 0] ;
CubeBuffer[CW ? 1 : 10] = buffer[1];
CubeBuffer[CW ? 0 : 11] = buffer[CW ? 0 : 2] ;
}
void Rotation(bool CW)
{
string[] buffer = new string[3];
if (!CW)
{
buffer[ 0] = CubeBuffer[ 0];
buffer[ 1] = CubeBuffer[ 1];
buffer[ 2] = CubeBuffer[ 2];
CubeBuffer[ 0] = CubeBuffer[ 3];
CubeBuffer[ 1] = CubeBuffer[ 4];
CubeBuffer[ 2] = CubeBuffer[ 5];
CubeBuffer[ 3] = CubeBuffer[ 6];
CubeBuffer[ 4] = CubeBuffer[ 7];
CubeBuffer[ 5] = CubeBuffer[ 8];
CubeBuffer[ 6] = CubeBuffer[ 9];
CubeBuffer[ 7] = CubeBuffer[10];
CubeBuffer[ 8] = CubeBuffer[11];
CubeBuffer[ 9] = buffer[ 0];
CubeBuffer[10] = buffer[ 1];
CubeBuffer[11] = buffer[ 2];
}
else
{
buffer[ 2] = CubeBuffer[11];
buffer[ 1] = CubeBuffer[10];
buffer[ 0] = CubeBuffer[ 9];
CubeBuffer[11] = CubeBuffer[ 8];
CubeBuffer[10] = CubeBuffer[ 7];
CubeBuffer[ 9] = CubeBuffer[ 6];
CubeBuffer[ 8] = CubeBuffer[ 5];
CubeBuffer[ 7] = CubeBuffer[ 4];
CubeBuffer[ 6] = CubeBuffer[ 3];
CubeBuffer[ 5] = CubeBuffer[ 2];
CubeBuffer[ 4] = CubeBuffer[ 1];
CubeBuffer[ 3] = CubeBuffer[ 0];
CubeBuffer[2] = buffer[ 2];
CubeBuffer[1] = buffer[ 1];
CubeBuffer[0] = buffer[ 0];
}
}
'# 2) .Net ( Vs 2005 ) > 기타' 카테고리의 다른 글
PWD 암호화 객체. (0) | 2009.05.08 |
---|---|
인터페이스와델리게이트조합1 (2) | 2009.05.08 |
DB로컬 연결시 문구 (0) | 2009.05.02 |
XML 컨트롤... (0) | 2009.05.02 |
DB Connection Factory (0) | 2009.05.01 |
트리뷰 노드 추가 재귀 함수.
SBS 전자 자막의뢰 Web사이트 구축하면서
로그파일관리 페이지를 만들면서 작성했던 부분임.
간단한 재귀로 하위 디렉토리들을 추가 하게 됨.
/// <summary>
/// 폴더 이하 파일&디렉토리 검색해서 트리뷰에 추가하는 재귀 함수
/// </summary>
/// <param name="sDirectoryName"></param>
/// <returns></returns>
private TreeNode GetTreeNodes(string sDirectoryName, string rootPath)
{
string[] fileNames = Directory.GetFiles(sDirectoryName);
string[] directoryNames = Directory.GetDirectories(sDirectoryName);
int fileCount = fileNames.Length;
//TreeNode root = new TreeNode(sDirectoryName.Replace(rootPath, ""));
TreeNode root = new TreeNode(string.Format("{0} : {1}", sDirectoryName.Replace(rootPath, ""), fileCount), sDirectoryName.Replace(rootPath, ""));
foreach (string dir in directoryNames)
{
if( dir.Replace(sDirectoryName+"\\","") == ".svn") continue;
TreeNode tnode = GetTreeNodes(dir, sDirectoryName+@"\"); // 재귀!
tnode.SelectAction = TreeNodeSelectAction.Select; // 포스트백 발생하지 않게 됨.
root.ChildNodes.Add(tnode);
}
//foreach (string fileName in fileNames)
//{
// TreeNode tnode2 = new TreeNode(fileName.Replace(sDirectoryName + "\\", ""));
// tnode2.SelectAction = TreeNodeSelectAction.None;
// root.ChildNodes.Add(tnode2);
//}
root.SelectAction = TreeNodeSelectAction.Select;
return root;
}
'# 2) .Net ( Vs 2005 ) > WebForm' 카테고리의 다른 글
철호야! 공부하자! (0) | 2009.05.08 |
---|---|
리피터 사용!! (0) | 2009.05.08 |
Table Row-> Select, MouseOver, Out관련 (0) | 2009.05.08 |
기존의 웹프로젝트 페이지를 그대로 이용하기. (0) | 2009.05.08 |
페이징 컨트롤러 (0) | 2009.05.01 |
XML 컨트롤...
XmlDocument xDoc = new XmlDocument();
xDoc.Load : 읽어오기
xDoc.Save : 저장하기
XmlNodeList xList = xDoc.GetElementsByTagName("태그명");
xDoc["태그명"]
< XmlElement1 XmlAttribute1 XmlAttribute2 ... >
간단하게 위처럼 XmlElement로 접근이 쉽다.
간단한 설정 데이타나, 메세지 전달이 필요할때 변환이 쉽더라.
'# 2) .Net ( Vs 2005 ) > 기타' 카테고리의 다른 글
PWD 암호화 객체. (0) | 2009.05.08 |
---|---|
인터페이스와델리게이트조합1 (2) | 2009.05.08 |
DB로컬 연결시 문구 (0) | 2009.05.02 |
큐브~ (0) | 2009.05.02 |
DB Connection Factory (0) | 2009.05.01 |