Memory Drive

반응형
  1. <%
  2.   Option Explicit
  3.   ' ASP의 Rand를 이용한 3x3 Puzzle Game
  4. %>
  5. <style type="text/css">
  6. h2 {
  7.   font-family:  Arial;
  8.   font-size:    24px;
  9.   color:      #666;
  10.   padding:    4px;
  11.   background:  #CCCCFF;
  12.   border-bottom:  2px solid #ddd;
  13.   text-align:  center;
  14. }
  15. td {
  16.   font-family:  Impact;
  17.   font-size:    60px;
  18.   color:      white;
  19.   background:  #DDE8FF;
  20. }
  21. a:hover {
  22.   color: #FF0066;
  23.   text-decoration: none;
  24.   font-weight: bold
  25. }
  26. a:visited {
  27.   color: #000099;
  28.   text-decoration: none;
  29. }
  30. a:active {  
  31.   text-decoration: none;
  32. }
  33. a:link {
  34.   color: #000099;
  35.   text-decoration: none;
  36. }
  37. </style>
  38. <h2> 3x3 Puzzle Game by ASP</h2>
  39. <%
  40.   ' Random Seed값 초기화
  41.   Randomize
  42.     Dim board(8)  ' 배열을 선언한다.
  43.     Dim ThePick  ' 임의로 선택된 값의 색인 변수
  44.     Dim Temp    ' 값을 교환하기 위한 임시 변수
  45.     Dim i, j    ' 반복문의 카운터용
  46.   Dim ct
  47.   Dim cnt   ' 클릭한 인덱스값 받기
  48.   Dim getArr    ' 값을 저장해 Get으로 던지는 변수
  49.   Dim getArr2  ' 값을 저장한것을 받는 변수
  50.   Dim sum   ' 0-8 까지 합을 저장하기 위한 변수
  51.   Dim chaos  ' 무질서도 판단
  52.   Dim loopcnt  ' loop cnt
  53.   ' Request...
  54.   getArr  = Request.QueryString("getArr") ' get된 전체 값들
  55.   cnt  = Request.QueryString("ct")    ' get된 index값
  56. ' 처음 실행 할경우
  57. If cnt=0 Then
  58.   loopcnt = true
  59.   While loopcnt
  60.     ' 배열을 채운다.
  61.     For I = 0 To 8
  62.       board(I) = I
  63.     Next
  64.     ' 배열을 썩는다.
  65.     For I = 0 To 8
  66.       ThePick = Int(1 + Rnd * 8)  ' 랜덤으로 생성!
  67.       Temp = board(I)
  68.       board(I) = board(ThePick)
  69.       board(ThePick) = Temp
  70.     Next
  71.     ' 무질서도 체크
  72.     For i = 0 To 8
  73.       For j = i To 8
  74.         If board(i) > board(j) Then chaos=chaos+1 : End if
  75.       next
  76.     Next
  77.     '무질서 더한값이 짝수 이면 Loop 탈출
  78.     ' 무질서도가 홀수이면 게임 퍼즐을 풀수 없다.
  79.     If (chaos Mod 2) = 0 Then
  80.       loopcnt = false
  81.       Else
  82.       loopcnt = true
  83.     End if
  84.   wend
  85. ' 두번째 실행
  86. Else
  87.   ' getArr String -> 배열 로 변경
  88.     getArr2 = Split( getArr , "-" )
  89.   For i=0 To 8
  90.       board(i) = getArr2(i)
  91.   Next
  92.   ' 해당 Index으로 값을 이동
  93.   Select Case CInt(cnt) ' 위치값(Index)
  94.     Case 1
  95.       If board(1) = 0 Then  ' 1번이 비었다면
  96.       board(1) = board(0)
  97.             board(0) = 0
  98.          End If
  99.         If board(3) = 0 Then  ' 3번이 비었다면
  100.             board(3) = board(0)
  101.             board(0) = 0
  102.       End If
  103.     Case 2
  104.        If board(0) = 0 Then
  105.         board(0) = board(1)
  106.         board(1) = 0
  107.       End If
  108.       If board(2) = 0 Then
  109.         board(2) = board(1)
  110.         board(1) = 0
  111.       End If
  112.       If board(4) = 0 Then
  113.         board(4) = board(1)
  114.         board(1) = 0
  115.       End If     
  116.     Case 3
  117.       If board(1) = 0 Then
  118.         board(1) = board(2)
  119.         board(2) = 0
  120.       End If
  121.       If board(5) = 0 Then
  122.         board(5) = board(2)
  123.         board(2) = 0
  124.       End If
  125.     Case 4
  126.       If board(0) = 0 Then
  127.         board(0) = board(3)
  128.         board(3) = 0
  129.       End If
  130.       If board(4) = 0 Then
  131.         board(4) = board(3)
  132.         board(3) = 0
  133.       End If
  134.       If board(6) = 0 Then
  135.         board(6) = board(3)
  136.         board(3) = 0
  137.       End If
  138.     Case 5
  139.       If board(1) = 0 Then
  140.         board(1) = board(4)
  141.         board(4) = 0
  142.       End If
  143.       If board(3) = 0 Then
  144.         board(3) = board(4)
  145.         board(4) = 0
  146.       End If
  147.         If board(5) = 0 Then
  148.         board(5) = board(4)
  149.         board(4) = 0
  150.       End If
  151.       If board(7) = 0 Then
  152.         board(7) = board(4)
  153.         board(4) = 0
  154.       End If
  155.     Case 6
  156.       If board(8) = 0 Then
  157.       board(8) = board(5)
  158.       board(5) = 0
  159.       End If
  160.       If board(4) = 0 Then
  161.         board(4) = board(5)
  162.         board(5) = 0
  163.       End If
  164.       If board(2) = 0 Then
  165.         board(2) = board(5)
  166.         board(5) = 0
  167.       End If     
  168.     Case 7
  169.       If board(3) = 0 Then
  170.         board(3) = board(6)
  171.         board(6) = 0
  172.       End If
  173.       If board(7) = 0 Then
  174.         board(7) = board(6)
  175.         board(6) = 0
  176.       End If 
  177.     Case 8
  178.       If board(4) = 0 Then
  179.         board(4) = board(7)
  180.         board(7) = 0
  181.       End If
  182.       If board(6) = 0 Then
  183.         board(6) = board(7)
  184.         board(7) = 0
  185.       End If
  186.       If board(8) = 0 Then
  187.         board(8) = board(7)
  188.         board(7) = 0
  189.       End If
  190.     Case 9
  191.       If board(5) = 0 Then
  192.         board(5) = board(8)
  193.         board(8) = 0
  194.       End If
  195.       If board(7) = 0 Then
  196.         board(7) = board(8)
  197.         board(8) = 0
  198.       End If
  199.   End select
  200.   For i = 0 To 8
  201.     If board(i) = CStr(i+1) Then sum=sum+1 : End If
  202.     If sum=8 Then
  203.     response.write "<script language=javascript>alert('문제를 다 풀었습니다') </script>"
  204.     End if
  205.   Next
  206. End if
  207.   ' 넘기기 위한 묶음 변수 생성
  208.   getArr = ""
  209.   For i=0 To 8
  210.       getArr =  getArr &  board(i) & "-"
  211.   Next
  212.   '출력....
  213.   response.write "<table cellpadding=4 cellspacing=4 border=2 align=center>"
  214.   ct = 1
  215.   For i = 0 To 2
  216.     response.write "<tr align=center height=100>"
  217.     For j = 0 To 2
  218.       If board(ct-1) = 0 Then
  219.         response.write "<td width=100>&nbsp;</td>"
  220.       Else
  221.         response.write "<td width=100><a href=puzzle.asp?ct=" & ct & "&getArr=" & getArr & ">" &board(ct-1) &"</a></td>"
  222.       End if
  223.       ct = ct+1
  224.     next
  225.     response.write "</tr>"
  226.   Next
  227. %>
  228. </table>

Many Bugs!!!~
실행화면

실행화면


반응형