Snake [QuickDraw]

  • [Blockierte Grafik: http://www8.pic-upload.de/14.09.11/wzwbwcha5zxg.png]
    DOWNLOAD v1.0

    Beschreibung

    ich weiß das schon fast jeder hier im forum snake gemacht hat nun wollte ich es jetzt auch einmal machen ich glaube erklären brauche ich das spiel nicht

    Script v1.0
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=Snake.ico
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <QuickDraw.au3>
    If Not FileExists("QuickDraw.dll") Then FileInstall("QuickDraw.dll", "QuickDraw.dll")
    If Not FileExists("FreeImage.dll") Then FileInstall("FreeImage.dll", "FreeImage.dll")
    If Not FileExists("Punkte.ini") Then FileInstall("Punkte.ini", "Punkte.ini")
    If Not FileExists("Snake.au3") Then FileInstall("Snake.au3", "Snake.au3")
    If Not FileExists("QuickDraw.au3") Then FileInstall("QuickDraw.au3", "QuickDraw.au3")
    If Not FileExists("Snake.ico") Then FileInstall("Snake.ico", "Snake.ico")
    Dim $Schlange[1][2]
    Dim $Punkt[1][2]
    Dim $Status[4][3]
    Dim $Punkte[10]
    Global $Titel = "Snake"
    Global $Breite = 800
    Global $Hoehe = 800
    Global $Richtung = "Rechts"
    Global $Laenge = 2
    Global $Schleife = 0
    _QuickDraw_Enable($Titel, $Breite, $Hoehe, 0, 0, False)
    _QuickDraw_SetLineWidth(2)
    Global $Schrift = _QuickDraw_CreateFont("Courier New")
    WinMove($Titel, "", @DesktopWidth / 2 - $Breite / 2, @DesktopHeight / 2 - $Hoehe / 2)
    _Spiel()
    Func _Spiel()
    $Status[0][0] = +40
    $Status[0][1] = 0
    $Status[0][2] = "Links"
    $Status[1][0] = -40
    $Status[1][1] = 0
    $Status[1][2] = "Rechts"
    $Status[2][0] = 0
    $Status[2][1] = -40
    $Status[2][2] = "Unten"
    $Status[3][0] = 0
    $Status[3][1] = +40
    $Status[3][2] = "Oben"
    $Schlange[0][0] = 0
    $Schlange[0][1] = 0
    _PunktZufall()
    HotKeySet("{RIGHT}", "_Rechts")
    HotKeySet("{LEFT}", "_Links")
    HotKeySet("{UP}", "_Oben")
    HotKeySet("{DOWN}", "_Unten")
    HotKeySet("{n}", "_Neustart")
    While ( _QuickDraw_Running() And (GUIGetMsg() <> -16))
    _QuickDraw_ClearBuffer(0xFFFFFFFF)
    _Hintergrund()
    _Kollision()
    _Richtung()
    _PunktSammeln()
    _ZeigeLaenge()
    _QuickDraw_Rect($Punkt[0][0], $Punkt[0][1], 40, 40, $Draw_Fill, 0xFF666666)
    For $i = 0 To UBound($Schlange) - 1
    _QuickDraw_Rect($Schlange[$i][0], $Schlange[$i][1], 40, 40, $Draw_Line, 0xFF666666)
    Next
    _QuickDraw_SwapBuffers()
    Sleep(100)
    WEnd
    _Ende()
    EndFunc ;==>_Spiel
    Func _Hintergrund()
    $Variable = 20
    For $i = 0 To 40
    _QuickDraw_Line($Variable, 0, $Variable, $Hoehe, 0xFFCCCCCC)
    $Variable = $Variable + 20
    Next
    $Variable = 20
    For $i = 0 To 40
    _QuickDraw_Line(0, $Variable, $Breite, $Variable, 0xFFCCCCCC)
    $Variable = $Variable + 20
    Next
    EndFunc ;==>_Hintergrund
    Func _Richtung()
    If $Richtung = "Rechts" Then $Schlange[0][0] = $Schlange[0][0] + 40
    If $Richtung = "Links" Then $Schlange[0][0] = $Schlange[0][0] - 40
    If $Richtung = "Oben" Then $Schlange[0][1] = $Schlange[0][1] - 40
    If $Richtung = "Unten" Then $Schlange[0][1] = $Schlange[0][1] + 40
    If $Schlange[0][0] = -40 Then $Schlange[0][0] = $Breite - 40
    If $Schlange[0][0] = $Breite Then $Schlange[0][0] = 0
    If $Schlange[0][1] = -40 Then $Schlange[0][1] = $Hoehe - 40
    If $Schlange[0][1] = $Hoehe Then $Schlange[0][1] = 0
    $i = UBound($Schlange)
    If $i <> 1 Then
    Do
    $i = $i - 1
    $Schlange[$i][0] = $Schlange[$i - 1][0]
    $Schlange[$i][1] = $Schlange[$i - 1][1]
    Until $i = 1
    EndIf
    EndFunc ;==>_Richtung
    Func _Kollision()
    For $i = 0 To UBound($Status) - 1
    For $i2 = 1 To UBound($Schlange) - 1
    If $Richtung = $Status[$i][2] Then
    If $Schlange[0][0] = $Schlange[$i2][0] + $Status[$i][0] And $Schlange[0][1] = $Schlange[$i2][1] + $Status[$i][1] Then
    $Schleife = 0
    _Verloren()
    EndIf
    EndIf
    Next
    Next
    EndFunc ;==>_Kollision
    Func _PunktSammeln()
    If $Schlange[0][0] = $Punkt[0][0] And $Schlange[0][1] = $Punkt[0][1] Then
    $Laenge = $Laenge + 1
    ReDim $Schlange[$Laenge][2]
    $Schlange[$Laenge - 1][0] = $Punkt[0][0]
    $Schlange[$Laenge - 1][1] = $Punkt[0][1]
    _PunktZufall()
    EndIf
    EndFunc ;==>_PunktSammeln
    Func _ZeigeLaenge()
    _QuickDraw_Text(3, 15, $Laenge * 10 - 20, 22, $Schrift, $Draw_Fill, 0xFF666666)
    EndFunc ;==>_ZeigeLaenge
    Func _PunktZufall()
    $Punkt[0][0] = Round(Random(0, 19)) * 40
    $Punkt[0][1] = Round(Random(0, 19)) * 40
    For $i = 0 To UBound($Schlange) - 1
    If $Punkt[0][0] = $Schlange[$i][0] And $Punkt[0][1] = $Schlange[$i][1] Then _PunktZufall()
    Next
    EndFunc ;==>_PunktZufall
    Func _Verloren()
    _PunkteLesen()
    _PunktSetzen()
    _PunkteSchreiben()
    If $Schleife <> 1 Then
    Do
    If Not _QuickDraw_Running() And GUIGetMsg() <> -16 Then _Ende()
    _QuickDraw_ClearBuffer(0xFFFFFFFF)
    _Hintergrund()
    _QuickDraw_Text($Breite / 2 - 80, 200, "Verloren", 40, $Schrift, $Draw_Fill, 0xFF666666)
    _QuickDraw_Text(3, 15, "'n' drücken zum Neustarten", 22, $Schrift, $Draw_Fill, 0xFF666666)
    _ZeigePunkte()
    _QuickDraw_SwapBuffers()
    Until $Schleife = 1
    EndIf
    $Richtung = "Rechts"
    $Laenge = 2
    Dim $Schlange[1][2]
    $Schlange[0][0] = 0
    $Schlange[0][1] = 0
    _PunktZufall()
    EndFunc ;==>_Verloren
    Func _Rechts()
    If $Richtung <> "Links" Or $Laenge = 2 Then $Richtung = "Rechts"
    EndFunc ;==>_Rechts
    Func _Links()
    If $Richtung <> "Rechts" Or $Laenge = 2 Then $Richtung = "Links"
    EndFunc ;==>_Links
    Func _Oben()
    If $Richtung <> "Unten" Or $Laenge = 2 Then $Richtung = "Oben"
    EndFunc ;==>_Oben
    Func _Unten()
    If $Richtung <> "Oben" Or $Laenge = 2 Then $Richtung = "Unten"
    EndFunc ;==>_Unten
    Func _ZeigePunkte()
    $Variable = 217
    For $i = 0 To 9
    $Variable = $Variable + 40
    _QuickDraw_Text($Breite / 2 - 40, $Variable, $i + 1 & " : " & $Punkte[$i], 25, $Schrift, $Draw_Fill, 0xFF666666)
    Next
    EndFunc ;==>_ZeigePunkte
    Func _PunkteLesen()
    For $i = 0 To 9
    $Punkte[$i] = IniRead("Punkte.ini", "Punkte", $i + 1, 0)
    Next
    EndFunc ;==>_PunkteLesen
    Func _PunkteSchreiben()
    For $i = 0 To 9
    IniWrite("Punkte.ini", "Punkte", $i + 1, $Punkte[$i])
    Next
    EndFunc ;==>_PunkteSchreiben
    Func _PunktSetzen()
    $Variable = True
    For $i = 0 To 9
    If $Variable <> False Then
    If $Laenge * 10 - 20 > $Punkte[$i] Then
    $PunktStatus = 9
    Do
    $Punkte[$PunktStatus] = $Punkte[$PunktStatus - 1]
    $PunktStatus = $PunktStatus - 1
    Until $PunktStatus = $i
    $Punkte[$i] = $Laenge * 10 - 20
    $Variable = False
    EndIf
    EndIf
    Next
    EndFunc ;==>_PunktSetzen
    Func _Ende()
    _QuickDraw_FreeFont($Schrift)
    _QuickDraw_Disable()
    Exit
    EndFunc ;==>_Ende
    Func _Neustart()
    $Schleife = 1
    _Verloren()
    EndFunc ;==>_Neustart

    [/autoit]