[C#] 퍼즐 게임 - 5

개발 노트/C#  2012.10.19 13:45



 

안녕하세요 명월입니다.

이번 포스팅에서는 저번 포스팅에 이어서 게임 초기 세팅을 하겠습니다.

초기 세팅은 우리가 게임을 할 수 있도록 무작위로 섞어야 하겠습니다. 그럼 저번 포스팅까지 한 내용을 살펴 보도록 하겠습니다.

 

 

여기까지가 저번 포스팅에서 한 내용입니다. 먼저 랜덤 무작위 섞기에 앞서 저번에 이벤트 부분을 살펴 보도록 하겠습니다.BoxTable.cs 를 살펴 보도록 하겠습니다.

 

 

MF_KeyDown 이벤트 부분이 있는 곳을 먼저 Function 화가 되어야 Random 함수를 사용하여 초기 무작위 섞기를 만들 수 있을 듯 합니다.

 

Function 화를 시키기 위해서는 변수 값이 pos(현재 위치) 와 mpos(이동할 위치)의 값이 필요하다는 것을 알 수 있습니다.

  

 

그 부분을 끄집어 냈습니다. 그럼 Random 난수를 현재 위치와 이동할 ±1,±5 값에 들어가면 무작위 섞기 함수가 완성되겠습니다.

 

  

여기까지 Random 무작위 섞는 함수를 생성하였습니다. 이제 이걸 MainForm 에서 실행 시키도록 하겠습니다.

 

 

여기서 왜 Timer를 써야하면 먼저 Random 함수가 실행되기 전에 Drawing이 마무리가 되어야 합니다. 그러기 위해서 Timer로 약간의 텀을 준 것입니다. 그리고 Thread.Timer를 쓴 이유는 우리가 마치 사람이 섞는 듯한 효과를 내기 위해서 메시지를 타지 함수를 실행 시키기 위한 것입니다.그럼 결과 화면입니다.

 

 

여기까지 되었으면 이젠 게임을 하실 수 있습니다. 다음 포스팅에서는 창도 바꾸고 옆에 시간등을 넣어서 마무리를 하도록 하겠습니다.

 

참고 자료 - PuzzleGame_20121004 (2).zip

 


댓글 5개가 달렸습니다.
댓글쓰기
  1. ykhykhykh
    2015.05.20 21:34 신고 |  수정/삭제  댓글쓰기

    혹시 랜덤함수로 숫자셔플할때

    코드상에서 어떤 규칙(알고리즘)으로 셔플하셨는지 궁금합니다.

    그니까.. 숫자셔플할때 무작위로 셔플하지말고 퍼즐의 정답이 나오게

    셔플을 하려면 제생각엔 Random함수에서 규칙이있을거같은데 자세한 설명부탁드립니다..

    • 明月 v명월v
      2015.05.20 23:24 신고 |  수정/삭제

      블로그 방문 감사합니다.
      어떠한 규칙(?) 알고리즘을 써서 셔플을 한건 아니구요..
      그냥 사람이 하는 규칙 빈칸이 움직일 수 있는 건 위아래좌우 한칸씩 움직이는 것을 연속적으로 움직인 것으로 기억합니다(워낙 오래전이라..)

      게임의 정답은 나오게끔 만들었던 걸로 기억합니다...
      ㅎㅎ 답변이 되셨는지... 아니면 한번 더 만들어 볼까요? ㅎㅎ

  2. ykhykhykh
    2015.05.22 17:15 신고 |  수정/삭제  댓글쓰기

    많은도움되었습니다. 저는 님코드 참고해서 3X3 퍼즐게임으로 만들고있는데요..
    혹시 다른 이벤트는 포스팅하실생각없나요?
    예를들어 퍼즐이 완성되었을때 메세지창 떠서 재시작할지 종료할지 이런 여러이벤트요
    부탁드립니다~

  3. ykhykhykh
    2015.05.24 22:34 신고 |  수정/삭제  댓글쓰기

    명월님 퍼즐 완성시키고 나서 MessageBox 로 Yes 누르면 다시 카드 셔플하는것부터 시작하게하는 코드좀 추가포스팅 바랍니다 ㅜㅜ 다음포스팅이 없네요..

    • 明月 v명월v
      2015.05.26 22:40 신고 |  수정/삭제

      안녕하세요.. 블로그 방문 감사합니다...
      하하 오래전에 만들던거라 기억이 나려나 모르겠지만..
      언제 시간나면 완성을 해야 겠네요..
      감사합니다.