C# 에서 Char[] 배열에 포함된 데이타를 string으로C# 에서 Char[] 배열에 포함된 데이타를 string으로

Posted at 2010. 1. 3. 04:14 | Posted in C#
C# 에서 Char[] 배열에 포함된 데이타를 string 으로 바꾸어야 할 때가 있습니다.
이런 경우에는 다음과 같이 하면 됩니다.

char[] charBuf = new char[1024]; // Char  배열,  charBuf[0] = "A".... 데이타가 들어 있다고 가정
string newstring = "";                       //  string 값을 정의하고
newstring = new string(charBuf);   //  new해서 constructor 생성자에 char배열을 집어 넣으면 끝...

미치는 줄 알았다.....ㅠㅠ..(구글링)

'C#' 카테고리의 다른 글

버튼  (0) 2010.01.03
퍼즐  (0) 2010.01.03
//

버튼버튼

Posted at 2010. 1. 3. 02:20 | Posted in C#

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace buttonmake
{
     public partial class Form1 : Form
    {

        public int puzX; //버튼의 가로 갯수
        public int puzy;  //버튼의 세로 갯수
        public int puzmax;  //버튼의 전체 갯수

        public int puzFormSize = 35; //버튼의 크기
        Button[] Bpuzz; //버튼형 배열 선언....

        public Form1()
        {
            InitializeComponent();  

        }

        private void formInitialize()
        {
           
            int count=0;  //버튼에 먹여줄 인덱스
           

            this.Size = new Size(puzX * puzFormSize + 30, puzy * puzFormSize + 80);
            //폼 사이즈(유동적임)

            Bpuzz = new Button[puzmax];
            //버튼형 배열 생성
           

            for (int i = 0; i < puzmax; i++)
                Bpuzz[i] = new Button(); //초기화
            for (int i = 0; i < puzy;i++)  //가로만큼...
            {
                for (int j = 0; j < puzX;j++)  //세로만큼...
                {


                    Bpuzz[count].Width = puzFormSize;   //버튼의 가로 크기
                    Bpuzz[count].Height = puzFormSize;  //버튼의 세로 크기
                        Bpuzz[count].Top = i * puzFormSize + 40;  //top
                        Bpuzz[count].Left = j * puzFormSize + 10;  //left
                       
                        Bpuzz[count].Font = new System.Drawing.Font("굴림", 8f); //font
                        Bpuzz[count].Click += new EventHandler(buttonClick);  //이벤트 등록
                        Bpuzz[count].Text = (count + 1).ToString();
                        this.Controls.Add(Bpuzz[count]);
                        count++;
                    }
                  
                   
                }
            }
       


       
 private void  buttonClick(object sender, EventArgs e)
{
    myButton btn = (myButton)sender;

 btn.BackColor = Color.Blue;
    MessageBox.Show(btn.Text.ToString());
  
}

 private void btn_make_Click(object sender, EventArgs e)
 {
    
    
     puzX = int.Parse(num가로.Value.ToString());
     puzy = int.Parse(num세로.Value.ToString());
     puzmax = puzX * puzy;
     formInitialize();

 }
}
   
    }
   


 

'C#' 카테고리의 다른 글

C# 에서 Char[] 배열에 포함된 데이타를 string으로  (0) 2010.01.03
퍼즐  (0) 2010.01.03
//

퍼즐퍼즐

Posted at 2010. 1. 3. 01:50 | Posted in C#

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace MyPuzzle_a
{
    public class Puzzle : Button
    {
        public int 원래값;   //퍼즐이 섞이기전의 값(완성된 값..1.2.3.4.5.....)
        public int 현재값;  //섞여있는 퍼즐의 값

        }

          
    public partial class Form1 : Form
    {
        public int puzX = 10; //퍼즐의 가로값 사용자에게 입력을 받도록 해도 됨
        public int puzY = 10; //퍼즐의 세로값
       int puzMax;   //가로*세로값
        int Empty;   //빈 퍼즐의 번호
        const int puzFormSize = 80;  //퍼즐의 크기
        Puzzle[] bPuzz;   //퍼즐...(버튼 배열)

        public Form1()
        {


            InitializeComponent();
            puzMax = puzX * puzY;   //퍼즐의 갯수는 가로*세로다
            Empty = puzMax - 1;   //퍼즐의 갯수를 구한다음 거기서 한개의 퍼즐을 가려버린다.
            폼초기화();
        }

        public void 폼초기화()
        {
            int count = 0;  //배열에 쓰일 카운드
            bPuzz = new Puzzle[puzMax];  //버튼 배열의 크기를 정하고...
            this.Size = new Size(puzX * puzFormSize + 30, puzY * puzFormSize + 80); //프로그램 창의 크기를 바꿔준다.
            for (int i = 0; i < puzMax; i++)
                bPuzz[i] = new Puzzle();
            for (int i = 0; i < puzY; i++) //세로만큼
            {
                for (int j = 0; j < puzX; j++) //가로만큼
                {
                    bPuzz[count].Width = puzFormSize;
                    bPuzz[count].Height = puzFormSize;
                    bPuzz[count].Top = i *puzFormSize + 30;
                    bPuzz[count].Left = j *puzFormSize + 10;
                   
                    bPuzz[count].원래값 = count;  //섞이기 전의 값에 현재값을 대입....(처음 프로그램을 실해하면 퍼즐이 완성된 상태로 나오므로)
                    bPuzz[count].현재값 = count;
                    bPuzz[count].Font = new System.Drawing.Font("굴림", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
                    bPuzz[count].Click += new EventHandler(this.bPuzz_Click); //버튼을 누를 때마다 bPuzz_Click 메소드를 호출한다.
                    bPuzz[count].Text = (count + 1).ToString(); // 퍼즐에 숫자를 넣어준다.
                    this.Controls.Add(bPuzz[count]); //퍼즐을 생성
                    count++;  //퍼즐 배열에 들어가는 카운트 증가
                }
                bPuzz[Empty].Visible = false; //퍼즐 하나를 가림~
            }
           


        }
        public void bPuzz_Click(object sender, EventArgs e)
        {
            Puzzle bPuzzSelected = (Puzzle)sender;  //클릭되는 퍼즐을 핸들링?
            if(CheckJoin((Puzzle)sender)==true)  //사용자가 누르는 퍼즐의 주위에 빈 퍼즐이 있는지 체크
            {
                SwapPuzz(bPuzz[Empty],bPuzzSelected); //인접해있다면 사용자가 클릭한 퍼즐과, 인접한 빈 퍼즐의 위치를 바꿈
            }
            if(CheckFinish())   //퍼즐이 1.2.3.4.5.....이런 순서가 됬는지 체크
            {
                MessageBox.Show("축하합니다. 퍼즐을 다시 섞겠습니다.");
                PuzzleMix();  //축하 메시지를 띄운후, 퍼즐을 다시 섞는 메소드 호출
            }
        }
        private void SwapPuzz(Puzzle n1, Puzzle n2)  //버튼 객체
        {
            Point p = new Point(n1.Left, n1.Top); //클릭한 버튼의 왼쪽, 위쪽의 값을 가져오고
            int t = 0;
            n1.Location = n2.Location;  //클릭한 퍼즐에 빈 퍼즐의 위치값을 넣어주고...
            n2.Location = p; //빈 퍼즐에는 클릭한 퍼즐을 대입....즉, 서로 위치를 바꿔주는..거....

            t = n1.현재값;   //위에는 퍼즐의 위치를 바꾸는 것이고, 여기는 퍼즐에 들어있는 숫자를 담는...
            n1.현재값 = n2.현재값;
            n2.현재값 = t;
        }
        private bool CheckJoin(Puzzle buttonTmp)
        {
            int AbsSum = 0;
            AbsSum = Math.Abs(bPuzz[Empty].Left - buttonTmp.Left) + Math.Abs(bPuzz[Empty].Top - buttonTmp.Top);
            //클릭되어진 퍼즐의 좌에서 빈 퍼즐의 좌를 빼주고, 그것에 절대값을 취하고....클릭된 퍼즐의 위와 빈 퍼즐의 위를 뺀것을 더해주면....
            //결국 퍼즐의 크기가 나온다...여기서는 puzFormSize.....가 된다.
            return (AbsSum == puzFormSize) ? true : false; //인접해 있다면...트루 반환, 틀리면 펄스....
        }
        private void PuzzleMix()
        {
            Random rnd = new Random();  //난수를 만들기 위해 rnd 생성
            int r1, r2;
            for (int i = 0; i < puzMax; i++) //퍼즐의 최대갯수만큼..i를 돌리고...
            {
                r1 = rnd.Next(0, puzMax); //난수를 만들고..
                r2 = rnd.Next(0, puzMax); //
                SwapPuzz(bPuzz[r1], bPuzz[r2]); //퍼즐들을 마구 섞는다....숫자는 안바뀌고 칸만 어질러지니깐, 결국엔 숫자도 바뀜
            }
        }
        private bool CheckFinish()
        {
            bool ret = true;
            for (int i = 0; i < Empty; i++)
            {
                if (bPuzz[i].원래값 != bPuzz[i].현재값)  //오리지널 숫자값 1.2.3.4.5.....과 섞여있는 퍼즐의 값을..4.3.5.6..을 비교....
                {
                    ret = false;  //같지 않으면 펄스를 주고
                    break;  //if문 중지
                }
               
            }
            return ret; //위 if문에서 다른 게 발견되지 않았다면 true를 그대로 반환
        }

 

 


    }
}

'C#' 카테고리의 다른 글

C# 에서 Char[] 배열에 포함된 데이타를 string으로  (0) 2010.01.03
버튼  (0) 2010.01.03
//