[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
#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