Share code rắn săn mồi

Trang ChínhCalendarTrợ giúpTìm kiếmThành viênNhómĐăng kýĐăng Nhập


Welcome to Forums Haku
Chào mừng các bạn đến với diễn đàn
Chúc các bạn có những giờ phút thư giãn thoải mái tại diễn đàn
Chúc các bạn luôn thành công trong cuộc sống

<--Code by Admin Haku -->

Share|
Tiêu đề

Share code rắn săn mồi

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down
Tác giảThông điệp

Admin
Member
avatar

Tổng bài gửi : 1074
Được Cảm Ơn : 538
Đến từ : Hà Ná»™i
Tài năng của Admin
Hạng: Member
Level:1074
Tài năng:/300


Tài Sản
Huân Chương: PhotobucketPhotobucketPhotobucketPhotobucketPhotobucketPhotobucketPhotobucketPhotobucketPhotobucket

Bài gửiTiêu đề: Share code rắn săn mồi Sat Oct 13, 2012 11:26 pm

Share code rắn săn mồi

Demo:

Code1:

Code:
Opt("MustDeclareVars", 1)
Opt("GUIOnEventMode", 1)

Global $Gui = GUICreate("Ran San Moi - by: http://haku.4rumer.com", 640, 480)
Global $ArrMapH[40][30]
Global $ArrArrowBT[5]
Global $ArrMapTable[40][30]
Global $ArrMapSnake[1][2]
Global $ArrFoodPos[2]
Global $ArrowPress = -1
Global $SnakeLength = 0
Global $Speed = 100
Global $Pause = True

_InitGame()

GUISetOnEvent(-3, "_Exit")
GUISetState(@SW_SHOW)

While 1
   While $Pause
      Sleep(150)
   WEnd
   Sleep($Speed)
   _Gui_MoveSnake()
WEnd

Func _Exit()
   GUIDelete($Gui)
   Exit
EndFunc  ;==>_Exit

Func _ArrowEvent()
   $Pause = False
   Switch @GUI_CtrlId
      Case $ArrArrowBT[0]
         If $ArrowPress = 1 Then Return
         $ArrowPress = 0
      Case $ArrArrowBT[1]
         If $ArrowPress = 0 Then Return
         $ArrowPress = 1
      Case $ArrArrowBT[2]
         If $ArrowPress = 3 Then Return
         $ArrowPress = 2
      Case $ArrArrowBT[3]
         If $ArrowPress = 2 Then Return
         $ArrowPress = 3
      Case $ArrArrowBT[4]
         $Pause = True
   EndSwitch
EndFunc  ;==>_ArrowEvent

Func _InitGame()
   Local $ArrArrowAccel[5][2]
   For $x = 0 To 4
      $ArrArrowBT[$x] = GUICtrlCreateButton("", 641, 481)
      GUICtrlSetOnEvent(-1, "_ArrowEvent")
      GUICtrlSetState(-1, 128)
      $ArrArrowAccel[$x][1] = $ArrArrowBT[$x]
   Next
   $ArrArrowAccel[0][0] = "{UP}"
   $ArrArrowAccel[1][0] = "{DOWN}"
   $ArrArrowAccel[2][0] = "{LEFT}"
   $ArrArrowAccel[3][0] = "{RIGHT}"
   $ArrArrowAccel[4][0] = "{SPACE}"
   GUISetAccelerators($ArrArrowAccel)
   For $x = 0 To 39
      For $y = 0 To 29
         $ArrMapTable[$x][$y] = 0
         $ArrMapH[$x][$y] = GUICtrlCreateLabel("", $x * 16, $y * 16, 16, 16)
         GUICtrlSetBkColor(-1, 0x0000FF)
         GUICtrlSetState(-1, 128)
      Next
   Next
   $ArrMapSnake[0][0] = Random(0, 39, 1)
   $ArrMapSnake[0][1] = Random(0, 29, 1)
   $ArrMapTable[$ArrMapSnake[0][0]][$ArrMapSnake[0][1]] = 1
   GUICtrlSetBkColor($ArrMapH[$ArrMapSnake[0][0]][$ArrMapSnake[0][1]], 0xFF0000)
   Do
      $ArrFoodPos[0] = Random(0, 39, 1)
      $ArrFoodPos[1] = Random(0, 29, 1)
   Until $ArrMapTable[$ArrFoodPos[0]][$ArrFoodPos[1]] = 0
   $ArrMapTable[$ArrFoodPos[0]][$ArrFoodPos[1]] = 2
   GUICtrlSetBkColor($ArrMapH[$ArrFoodPos[0]][$ArrFoodPos[1]], 0xFFFF00)
EndFunc  ;==>_InitGame

Func _Gui_MoveSnake()
   Local $ArrSnakeHeadTmp[2] = [$ArrMapSnake[0][0], $ArrMapSnake[0][1]]
   Switch $ArrowPress
      Case 0
         $ArrSnakeHeadTmp[1] -= 1
      Case 1
         $ArrSnakeHeadTmp[1] += 1
      Case 2
         $ArrSnakeHeadTmp[0] -= 1
      Case 3
         $ArrSnakeHeadTmp[0] += 1
   EndSwitch
   If $ArrSnakeHeadTmp[0] * $ArrSnakeHeadTmp[1] < 0 Or $ArrSnakeHeadTmp[0] > 39 Or $ArrSnakeHeadTmp[1] > 29 Or $ArrMapTable[$ArrSnakeHeadTmp[0]][$ArrSnakeHeadTmp[1]] = 1 Then
      MsgBox(0, "Game Over", "Ðã chêt " & $SnakeLength)
      _Exit()
   EndIf
   GUICtrlSetBkColor($ArrMapH[$ArrSnakeHeadTmp[0]][$ArrSnakeHeadTmp[1]], 0xFF0000)
   If $ArrMapTable[$ArrSnakeHeadTmp[0]][$ArrSnakeHeadTmp[1]] = 2 Then
      Do
         $ArrFoodPos[0] = Random(0, 39, 1)
         $ArrFoodPos[1] = Random(0, 29, 1)
      Until $ArrMapTable[$ArrFoodPos[0]][$ArrFoodPos[1]] = 0
      $ArrMapTable[$ArrFoodPos[0]][$ArrFoodPos[1]] = 2
      GUICtrlSetBkColor($ArrMapH[$ArrFoodPos[0]][$ArrFoodPos[1]], 0xFFFF00)
      $SnakeLength += 1
      ReDim $ArrMapSnake[$SnakeLength + 1][3]
   Else
      GUICtrlSetBkColor($ArrMapH[$ArrMapSnake[$SnakeLength][0]][$ArrMapSnake[$SnakeLength][1]], 0x0000FF)
      $ArrMapTable[$ArrMapSnake[$SnakeLength][0]][$ArrMapSnake[$SnakeLength][1]] = 0
   EndIf
   $ArrMapTable[$ArrSnakeHeadTmp[0]][$ArrSnakeHeadTmp[1]] = 1
   For $i = $SnakeLength To 1 Step -1
      $ArrMapSnake[$i][0] = $ArrMapSnake[$i - 1][0]
      $ArrMapSnake[$i][1] = $ArrMapSnake[$i - 1][1]
   Next
   $ArrMapSnake[0][0] = $ArrSnakeHeadTmp[0]
   $ArrMapSnake[0][1] = $ArrSnakeHeadTmp[1]
EndFunc  ;==>_Gui_MoveSnake


Code2: ( hay hơn )

Code:
; Silver Shooter
    ; Khai báo thu vi?n thôi nhìn cái gì ?
    #include <Misc.au3>
    #Include <WinAPI.au3>
    #Include <WindowsConstants.au3>
   
    ; Nh?ng Function C?n thi?t
    Func Dot($mxo,$myo,$color,$size) ; Funcion d? h?a duy nh?t c?a game (don gi?n ch? là ch?m di?m ? v? trí t?a d? [$mxo,$myo]
    $hPen = _WinAPI_CreatePen($PS_DASH, $size, $color)              ; 2 còn l?i $size v?i $color tra t? di?n n?u k bi?t
    $obj_orig = _WinAPI_SelectObject($hDC, $hPen)
    _WinAPI_DrawLine($hDC, $mxo-1, $myo-1, $mxo, $myo)
    _WinAPI_SelectObject($hDC, $obj_orig)
    _WinAPI_DeleteObject($hPen)
    EndFunc
   
   
   
    Func _Exit() ; Thoát ra game cung ph?i t?t này n? dàng hoàng r?i m?i thoát
    DllClose($user32_dll)
    _WinAPI_ReleaseDC($hGUI, $hDC)
    Exit
    EndFunc
   
    ; Khai báo hot key
    HotKeySet("!q", "_Exit") ; Game nh? nên thoát ch? c?n phím t?t là d?
   
    ; Khai báo h?ng s? và nh?ng th? t?c t?o GUI màn hình trong su?t bla bla bla bla
    $dll = DllOpen("user32.dll")
    Global Const $pi = 3.14159265358979                                                    ; (không nên xem ... th?ng vi?t cái này cung ch?ng xem khúc này)
    Global Const $hFullScreen = WinGetHandle("Program Manager")
    Global Const $aFullScreen = WinGetPos($hFullScreen)
    Global Const $hGUI = GUICreate("", $aFullScreen[2], $aFullScreen[3], $aFullScreen[0], $aFullScreen[1], $WS_POPUP, BitOR($WS_EX_LAYERED,$WS_EX_TRANSPARENT))
    GuiSetBkColor(0xABCDEF) ; T?o màu n?n GUI trong su?t
    _WinAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF, 0xA0) ; Bi?t ch?t li?n hình nhu là set màu trong su?t là màu 0xABCDEF
    WinSetOnTop($hGUI, "", 1) ; Cái này d? dè n?n dó mà d? nó luôn n?m trên chuong trình khác
    GuiSetState() ; Dòng này r?t là quan tr?ng không có nó không v? dc và cung k bi?t vì sao ...
    Global Const $hDC = _WinAPI_GetWindowDC($hGUI) ; Th? t?c thôi
    Global Const $user32_dll = DllOpen("user32.dll") ; Th? t?c thôi
    Global $Snake [999999][3] ; C? cho con r?n m?y b?n choi dc t?i 999999 d?t di
                                                            ; Cái chi?u th? 2 có 3 dòng t?c là 2 t?a d? x và y c?a 999999 d?t
                                                            ; m?t dòng n?a là d? xác d?nh chi?u bò
    Global $Food [2] ; 2 giá tr? xác d?nh v? trí th?c an
    ;<======================================================================================> Ph?n chính
    $time = 0 ; Ch?n m?c th?i gian b?ng 0
    $Len = 8; M?i d?u cho con r?n dài 8 d?t
    For $i = 1 To $Len Step 1 ; Ð?t v? trí 8 d?t
            $Snake[$i][0] = 300 ; M?i d?u nó n?m d?c ? t?a d? x là 300
            $Snake[$i][1] = 300-$i*5 ; Tr?i dài theo chi?u d?c v?i kho?ng cách tiêu di?m c?a m?i d?t là 5 Pixel
            $Snake[$i][2] = "down"          ; Bò xu?ng
    Next
   
    $check = 0 ; Ki?m tra coi có th?c an không
    While 1
            If $Check = 0 Then
                    $Check = 1      ; Check dã có th?c an
                    $Food[0] = Random(20,$aFullScreen[2]-20) ; Cho th?c an random
                    $Food[1] = Random(20,$aFullScreen[3]-20)
            EndIf
            If sqrt(($Food[0] - $Snake[1][0])*($Food[0] - $Snake[1][0]) + ($Food[1] - $Snake[1][1])*($Food[1] - $Snake[1][1])) < 20 Then
                    $check = 0 ; N?u an du?c th?c an thì m?t th?c an dó
                    $Len = $Len + 8 ; Dài ra
            EndIf
         
            For $i = $Len to 2 Step -1                              ; Cho các d?t sau di chuy?n lên v? trí d?t tru?c dó
                    If ($Snake[$i][0] = $Snake[1][0]) and ($Snake[$i][1] = $Snake[1][1]) Then ; N?u c?n ph?i duôi
                            MsgBox(4096, "Snake", "Game over")
                            Exit
                    EndIf
                    $Snake[$i][0] = $Snake[$i - 1][0]
                    $Snake[$i][1] = $Snake[$i - 1][1]
                    $Snake[$i][2] = $Snake[$i - 1][2]
            Next
            If $Snake[$i][2] = "down" Then                  ; Ði?u khi?n d?t d?u
                    $Snake[$i][1] = $Snake[$i][1] + 5
            EndIf
            If $Snake[$i][2] = "up" Then
                    $Snake[$i][1] = $Snake[$i][1] - 5
            EndIf
            If $Snake[$i][2] = "right" Then
                    $Snake[$i][0] = $Snake[$i][0] + 5
            EndIf
            If $Snake[$i][2] = "left" Then
                    $Snake[$i][0] = $Snake[$i][0] - 5
            EndIf
            Select
            Case _IsPressed("26", $dll) and ($Snake[1][2] <> "down")
                    $Snake[1][2] = "up"
            Case _IsPressed("27", $dll) and ($Snake[1][2] <> "left")
                    $Snake[1][2] = "right"
            Case _IsPressed("28", $dll) and ($Snake[1][2] <> "up")
                    $Snake[1][2] = "down"
            Case _IsPressed("25", $dll) and ($Snake[1][2] <> "right")
                    $Snake[1][2] = "left"
            EndSelect
         
         
            If $Snake[1][0] > $aFullScreen[2] then $Snake[1][0] = 0 ;Bò ra d?u này xu?t hi?n d?u kia
            If $Snake[1][0] < 0 then $Snake[1][0] = $aFullScreen[2]
            If $Snake[1][1] > $aFullScreen[3] then $Snake[1][1] = 0
            If $Snake[1][1] < 0 then $Snake[1][1] = $aFullScreen[3]
   
    ;~              $x = 500 + 5*Cos($pi*$time + 0*$pi/4)          Ph?n này là công th?c dao d?ng Lý l?p 12 (x = A0 + A*cos(wt + phi))
    ;~      Dot($x,500,0xFF0000,10)
    ;~              $x = 500 + 5*Cos($pi*$time + 1*$pi/4)          V?i s? tr? pha pi/4 qua t?ng d?t ta du?c s? lu?n lu?n ?o ?o c?a sneak
    ;~      Dot($x,495,0xFF0000,10)
    ;~              $x = 500 + 5*Cos($pi*$time + 2*$pi/4)          Và v?i 1 chu kì t?c là 2*pi thì quay l?i ban d?u
    ;~      Dot($x,490,0xFF0000,10)
    ;~              $x = 500 + 5*Cos($pi*$time + 3*$pi/4)          V?y ta ch? c?n l?y s? d?t mod (chia l?y ph?n du) cho 8 là s? bi?t dc c?n
    ;~      Dot($x,485,0xFF0000,10)
    ;~              $x = 500 + 5*Cos($pi*$time + 4*$pi/4)          bao nhiêu pi/4
    ;~      Dot($x,480,0xFF0000,10)
    ;~              $x = 500 + 5*Cos($pi*$time + 5*$pi/4)
    ;~      Dot($x,475,0xFF0000,10)
    ;~              $x = 500 + 5*Cos($pi*$time + 6*$pi/4)
    ;~      Dot($x,470,0xFF0000,10)
    ;~              $x = 500 + 5*Cos($pi*$time + 7*$pi/4)
    ;~      Dot($x,465,0xFF0000,10)
    ;~              $x = 500 + 5*Cos($pi*$time + 0*$pi/4)
    ;~      Dot($x,460,0xFF0000,10)
   
            GuiSetBkColor(0xABCDEF) ; Clear màn hình r?i v? l?i li?n
            ; Cái thân
            For $i = 2 To $Len Step 1
                    If ($Snake[$i][2] = "up") or ($Snake[$i][2] = "down") Then ; N?u nhu lu?ng theo chi?u ngang
                            Dot($Snake[$i][0] + 5*Cos($pi*$time + Mod($i,8)*$pi/4),$Snake[$i][1],0x00FF00,10) ; Xem công th?c ph?n trên ...
                    Else ; N?u nhu lu?ng theo chi?u d?c
                            Dot($Snake[$i][0],$Snake[$i][1] + 5*Cos($pi*$time + Mod($i,8)*$pi/4),0x00FF00,10) ; Ð?i vai trò x và y trong h? tr?c Ð?-các
                    EndIf                                                                  ; + 5*Cos($pi*$time + Mod($i,8)*$pi/4) ph?n code này ch? dóng vai trò làm d?t dao d?ng
            Next
            ; Cái d?u d?c bi?t nên làm riêng
            If ($Snake[1][2] = "up") or ($Snake[1][2] = "down") Then  ; N?u nhu lu?ng theo chi?u ngang
                    Dot($Snake[1][0] + 7.5*Cos($pi*$time + 1*$pi/4),$Snake[1][1],0x0000FF,15) ; Xem công th?c ph?n trên ...
            Else ; N?u nhu lu?ng theo chi?u d?c
                    Dot($Snake[1][0],$Snake[1][1] + 7.5*Cos($pi*$time + 1*$pi/4),0x0000FF,15) ; Ð?i vai trò x và y trong h? tr?c Ð?-các
            EndIf                                                                  ; + 5*Cos($pi*$time + Mod($i,8)*$pi/4) ph?n code này ch? dóng vai trò làm d?t dao d?ng
            ; Th?c an
            Dot(INT($Food[0]),INT($Food[1]),0xFF0000,10)
            Sleep(33) ; T?i sao l?i là 33 h?? B?i vì n?u mu?n 30 FPS (30 khung hình trên giây là mu?t r?i) thì c?n
                                    ; m?i khung hình là 33.33(3) giây v?y an gian m?t 0.33(3) giây c?a ng` ta ?
                                    ; bình tinh ... 0.33(3) giây dó c? cho là th?i gian ch?y code di =)
            $time = $time + 1000/33 ; Ðúng th?i gian ng? + ch?y code nhé
    WEnd

Hãy cám ơn bài viết của Admin bằng cáh bấm vào "" nhe!!!

Về Đầu Trang Go down

Xem lý lịch thành viên http://haku.4rumer.com

Tiêu đề

Share code rắn săn mồi

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang
Trang 1 trong tổng số 1 trang
::.
Permissions in this forum:Bạn không có quyền trả lời bài viết
Forum Häkü Cộng Đồng Chém Gió :: CONG NGHE THONG TIN :: Thủ thuật-