디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

누가 씨샵 소스 설명좀 해줏때여.

컴공볍진갤로그로 이동합니다. 2009.12.06 17:19:46
조회 116 추천 0 댓글 2




프로젝트에 좀 써먹어볼라는데 징징,

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

namespace gogothink
{
 public enum EStatus { CLOSE, OPEN, MATCH }

 public partial class CardGameE : Form
 {
  // 이미지데이터의 값을 저장
  int[] arrData = new int[16];

  // 이미지데이터의 상태를 저장
  EStatus[] eStatus = new EStatus[16];

  // 이미지 컨트롤 배열
  PictureBox[] picView = new PictureBox[16];

  // 열어본 횟수
  int nOpenCnt = 0;

  // 1/100초 카운터
  int nTimer = 0;

  // 스레드에 이용할 변수
  int nClose1, nClose2;

  bool nClickLock = false;

  public CardGameE()
        {
   InitializeComponent();

   // 이미지컨트롤 위치를 고정시킨다.
   for (int i = 0; i < arrData.Length; i++)
   {
    picView[i] = new PictureBox();
    picView[i].Width = 60;
    picView[i].Height = 80;
    picView[i].Top = ((i / 4) * 5 /* 공백 */  + (i / 4) * 80) /* 이미지높이 */ + 10;
    picView[i].Left = ((i % 4) * 5 /* 공백 */  + (i % 4) * 60) /* 이미지넓이 */ + 10;
    picView[i].Click += picView_Click; // 이벤트 처리 (델리게이트 참조)
    picView[i].Name = i.ToString(); // 이름을 이용해서 값을 저장한다. 이벤트시에 넘겨받을 값 필요.
    panFloor.Controls.Add(picView[i]);
   }
  }

  private void btnExit_Click(object sender, EventArgs e)
  {
   this.Close();
  }

  private void FormImgMatch_Load(object sender, EventArgs e)
  {
   InitGame();
  }

  private void btnReset_Click(object sender, EventArgs e)
  {
   InitGame();
  }

  // 게임 초기화
  private void InitGame()
  {
   Random r = new Random();
   bool bCheck = false;

   nOpenCnt = 0;
   nTimer = 0;
   if(timerCnt.Enabled == true) timerCnt.Stop();

   // 중복없는 값을 만든다.
   for (int i = 0; i < arrData.Length; i++, bCheck = false)
   {
    int tempI = r.Next(0, arrData.Length);

    for (int uI = 0; uI < i; uI++)
    {
     if (arrData[uI] == tempI)
     {
      i--;
      bCheck = true;
      break;
     }
    }

    if (bCheck) continue;

    arrData[i] = tempI;
    eStatus[i] = EStatus.CLOSE;
                picView[i].Image = global::gogothink.Properties.Resources.nophoto_60x80;
                Cnt.Text = "횟수 : ";
    lblTime.Text = "시간 : ";
   }
  }

  // 컨트롤 클릭시 처리.
  private void picView_Click(object sender, EventArgs e) {
   if (nClickLock) return; // 틀린 그림을 찾았을 때 Sleep 타임동안 클릭방지.
   
   if (timerCnt.Enabled == false) timerCnt.Start(); // 타이머가 꺼져있다면 실행.

   PictureBox picTemp = (PictureBox)sender;
   int nNumber = int.Parse(picTemp.Name);

   int nMatch = -1;

   // 닫혀있는 컨트롤 처리
   if (eStatus[nNumber] == EStatus.CLOSE)
   {
    int nValue = arrData[nNumber];
    int nRealV = nValue / 2; // 나머지는 버리는 int 의 속성을 이용. 값을 2로 나누면 2와 3은 같게된다. 이것으로 같은 그림을 판단한다.

    ImageChange(picTemp, nRealV); // 숨겨진 이미지 오픈.

    // OPEN 되어있는 데이터 확인
    for(int i = 0; i < eStatus.Length; i ++)
    {
     if (eStatus[i] == EStatus.OPEN)
     {
      nMatch = i;
      break;
     }
    }

    // 열려있는 데이터가 같다면 MATCH 로 변경 후 열어두고 다르다면 스레드를 이용 1초를 딜레이 시킨 후 다시 닫는다.
    if (nMatch != -1)
    {
     if (arrData[nMatch] / 2 == nRealV)
     {
      eStatus[nMatch] = EStatus.MATCH;
      eStatus[nNumber] = EStatus.MATCH;
     }
     else
     {
      nClickLock = true;

      nClose1 = nMatch;
      nClose2 = nNumber;

      Thread th = new Thread(new ThreadStart(CloseThreading));
      th.Start();
     }

     nOpenCnt++;
     Cnt.Text = "횟수 : " + nOpenCnt + "회";
    }
    else
    {
     eStatus[nNumber] = EStatus.OPEN;
    }
   }

   SucCheck();
  }

  // 성공 여부 확인. 모든 상태가 MATCH 면 성공.
  private void SucCheck()
  {
   foreach (EStatus status in eStatus)
   {
    if (status != EStatus.MATCH)
    {
     return;
    }
   }

   timerCnt.Stop();

   MessageBox.Show(string.Format("{0}초, {1}회 만에 성공하였습니다.", (float)nTimer / 100, nOpenCnt));
  }

  // 1초의 딜레이 후 열려있는 MATCH 되지 않은 이미지를 닫는다.
  private void CloseThreading()
  {
   Thread.Sleep(1000);

   ImageChange(picView[nClose1], -1);
   ImageChange(picView[nClose2], -1);

   eStatus[nClose1] = EStatus.CLOSE;
   eStatus[nClose2] = EStatus.CLOSE;

   nClickLock = false;
  }

  // 이미지 변경 처리
  private void ImageChange(PictureBox picTemp, int nValue)
  {
   switch ((nValue))
   {
    case 0:
     picTemp.Image = global::gogothink.Properties.Resources._1;
     break;
    case 1:
     picTemp.Image = global::gogothink.Properties.Resources._2;
     break;
    case 2:
     picTemp.Image = global::gogothink.Properties.Resources._3;
     break;
    case 3:
     picTemp.Image = global::gogothink.Properties.Resources._4;
     break;
    case 4:
     picTemp.Image = global::gogothink.Properties.Resources._5;
     break;
    case 5:
     picTemp.Image = global::gogothink.Properties.Resources._6;
     break;
    case 6:
     picTemp.Image = global::gogothink.Properties.Resources._7;
     break;
    case 7:
     picTemp.Image = global::gogothink.Properties.Resources._8;
     break;
    default:
     picTemp.Image = global::gogothink.Properties.Resources.nophoto_60x80;
     break;
   }
  }

  private void timerCnt_Tick(object sender, EventArgs e)
  {
   nTimer += 1;

   int millTime = nTimer % 100;
   int secTime = (nTimer % (60 * 100)) / 100;
   int minTime = (nTimer % (60 * 60 * 100)) / (60 * 100);
   int hourTime = nTimer / (60 * 60 * 100);
   lblTime.Text = string.Format("시간 : {0}:{1}:{2}.{3}", hourTime, minTime,secTime, millTime);
  }

        private void panFloor_Paint(object sender, PaintEventArgs e)
        {

        }

        private void CardGameE_Load(object sender, EventArgs e)
        {

        }
 }
}

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 외모와 달리 술 일절 못 마셔 가장 의외인 스타는? 운영자 24/07/01 - -
161932 씨언어 코드 질문점 [13] 질문(121.150) 09.12.11 101 0
161931 수원 생활을 접습니다. [3] 고추장불고기갤로그로 이동합니다. 09.12.11 79 0
161930 직무 면접 통과했으면 자신감 가져도 되나요 [3] ㅁㄴㅇㄹ(121.141) 09.12.11 112 0
161929 Vita500형이 부탁한 어떡해 일기 리스트. [13] 어떡해갤로그로 이동합니다. 09.12.11 5610 0
161928 님들 디씨에서 아이피 전부 확인하는거 어떻게함? [6] 코딩굿(121.168) 09.12.11 420 0
161927 아 파폭왜이러지 [7] MC박뮤탈갤로그로 이동합니다. 09.12.11 101 0
161925 NaCl갤로그로 이동합니다. 09.12.11 40 0
161924 어떡해님 일기 안쓰시면 안되나요? [3] 켁큇갤로그로 이동합니다. 09.12.11 136 0
161923 좀 늦었지만 일영사전횽 문제 풀어봄 [3] SIGSEGV갤로그로 이동합니다. 09.12.11 56 0
161922 내가 볼대 자바스크립트는 참 잘 빠진거 같어. [4] 빈둥빈둥(115.138) 09.12.11 141 0
161918 어떡해 일기 #6 :: 주 단위 학습을 합니다. [6] 어떡해갤로그로 이동합니다. 09.12.11 805 0
161917 방학을 틈타 자바를 공부 하려고 하는데 [10] ㅌㅌ(222.105) 09.12.11 139 0
161916 횽들 진지한 인생상담... [4] 허허벌판갤로그로 이동합니다. 09.12.11 194 0
161914 횽들 정말 나 진지하게 질문하는건데.. [6] 횽들(110.11) 09.12.11 98 0
161913 프로그래밍은 예술이다 -cp- [1] cp(210.218) 09.12.11 117 0
161912 개체지향 개념을 처음에 받아들이기 힘든 이유? [5] 성대아싸(121.137) 09.12.11 151 0
161911 피로토스횽 질문이요. 흐음(121.129) 09.12.11 57 0
161910 읭읭 여자친구랑 함께 공연함 : ) [2] 칭송받는자(222.96) 09.12.11 125 0
161909 MFC 처음하는데 MESSAGE_MAP 에 메세지 콜백함수를... [3] 캐발자갤로그로 이동합니다. 09.12.11 136 0
161907 ITS (지능형 교통 시스템) 분야 [1] 흐음(121.129) 09.12.11 87 0
161905 흠.. 뭔일이 이렇게 많지 ㅠ.ㅠ [2] rntjr갤로그로 이동합니다. 09.12.11 73 0
161903 남자라면 이해할 수 있는 만화 [4] 남자(121.133) 09.12.11 209 0
161901 불여우의 귀환 [1] ∫ 2t dt=t²+c갤로그로 이동합니다. 09.12.11 165 0
161899 그러고보니... [1] JuEUS-U갤로그로 이동합니다. 09.12.11 65 0
161898 횽들 질문 좀요. 급해요. 젭알 algo갤로그로 이동합니다. 09.12.11 41 0
161897 안녕하세여 좆늅입니다. C++ 질문 쩜. [5] 아주아슬갤로그로 이동합니다. 09.12.11 125 0
161895 입사 한달차인데 휴가썼따능 [4] DMW(125.138) 09.12.11 138 0
161894 안녕하세요 c#경력 3일째 씬입입니다. [4] 씬입사원갤로그로 이동합니다. 09.12.11 144 0
161892 야.. 누가 신고하는거야? [1] rntjr갤로그로 이동합니다. 09.12.11 100 0
161891 아니 이거 무슨 프로그래밍 갤 맞나여 ? [15] pld fuse map(119.71) 09.12.11 256 0
161888 아이폰 삿음 ㅋㅋㅋ [3] 이웃집또테러갤로그로 이동합니다. 09.12.11 114 0
161886 저 pld fuse map 그리는 것좀 도와줘요 실력자들아 [9] pld fuse map(119.71) 09.12.11 182 0
161884 역시 예술은 좋은 거 같아요 [7] algo갤로그로 이동합니다. 09.12.11 135 0
161883 다음 티비팟 동영상 다운로드 쉘스크립트 [1] JuEUS-U갤로그로 이동합니다. 09.12.11 342 0
161882 Opencv에서 카메라영상 수신 출력순서 아는분? [7] 섬마을갤로그로 이동합니다. 09.12.11 121 0
161881 잇힝 오늘 칼퇴다 ~ >_< [4] 외계달팽갤로그로 이동합니다. 09.12.11 94 0
161879 Qt 비쥬얼스튜디오에 붙여 써본 횽아들 질문.. [6] 허허벌판갤로그로 이동합니다. 09.12.11 152 0
161878 과거로부터 미래를 예측해보자 ㅎ3(112.222) 09.12.11 72 0
161876 음 사이트 개선.. [2] yundream(211.189) 09.12.11 100 0
161874 횽들아 이것좀 제발 봐죠... [5] 물속의다이아갤로그로 이동합니다. 09.12.11 124 0
161872 Qt creator 너무 불편하다능 [3] 허허벌판갤로그로 이동합니다. 09.12.11 90 0
161871 형들 덕분에 External Bus 숙제다했어염... Bus달립니다! [2] adsf(124.61) 09.12.11 82 0
161869 big-endian and little-endian [7] 아주아슬갤로그로 이동합니다. 09.12.11 84 0
161867 big-endian and little-endian [6] 독대(222.109) 09.12.11 103 0
161866 BigEndian_방식과_LittleEndian_방식_알아보는_소스.c [9] Triple3갤로그로 이동합니다. 09.12.11 203 0
161864 와 방학이다 [5] algo갤로그로 이동합니다. 09.12.11 132 0
161861 가슴이 선덕선덕 다리가 미실미실 [1] 유리한갤로그로 이동합니다. 09.12.11 150 0
161859 ㅅㅂ 난 MS빠긴 하지만... MS가 양아치긴 하다... [5] 물속의다이아갤로그로 이동합니다. 09.12.11 155 0
161858 형들 내가 외부버스에 대해 조사해야하는데... [19] adsf(124.61) 09.12.11 129 0
161857 아 슈ㅣ밤 전기포트 안 꺼놓고 가서 방이 홀라당 ㅠ-ㅠ [9] algo갤로그로 이동합니다. 09.12.11 111 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2