Hallo,
hier mal wieder ein kleines Spiel um ein wenig Zeit zu überbrücken.
Es handelt sich Um Tunnel. Feedback und Kritik sind gerne gesehen.
Viel Spaß!
Tunnel
#include <GdiPlus.au3>
#include <Misc.au3>
_GDIPlus_Startup()
Opt("GUIOnEventMode", 1)
$hDLL = DllOpen("user32.dll")
$hGUI = GUICreate("Tunnel", 210, 386)
GUISetOnEvent(-3, "_Exit")
GUISetState(@SW_SHOW)
Local $iX = 105, $iY = 370, $iInc = 0, $iScore = 0, $iFrames = 0, $iDifficulty = InputBox("Difficulty", "1 to 4" & @CRLF & "1 very easy" & @CRLF & "4 hard")
Local $aBorders[386][2]
Local $lPoints[387][2], $rPoints = $lPoints
$lPoints[0][0] = 386
$rPoints[0][0] = 386
For $i = 7 To 385 Step 7
For $x = 1 To 7
$aBorders[$i - $x][0] = 75
$aBorders[$i - $x][1] = 135
Next
Next
AdlibRegister("_FPS", 1000)
[/autoit] [autoit][/autoit] [autoit]$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics(210, 386, $hGraphics)
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
Local $hPen = _GDIPlus_PenCreate(0xFFFEFEFE, 4)
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsFillRect($hGraphics, $iX, $iY, 5, 5)
[/autoit] [autoit][/autoit] [autoit]While 1
$iFrames += 1
$iScore += 1
$iInc = Random(-1, 1, 1) * $iDifficulty
$aBorder_Tmp = $aBorders
For $i = 1 To 385
$aBorders[$i][0] = $aBorder_Tmp[$i - 1][0]
$aBorders[$i][1] = $aBorder_Tmp[$i - 1][1]
Next
If $aBorders[0][0] + $iInc <= 1 or $aBorders[0][1] + $iInc >= 209 Then $iInc *= -1
[/autoit] [autoit][/autoit] [autoit]$aBorders[0][0] = $aBorders[0][0] + $iInc
$aBorders[0][1] = $aBorders[0][1] + $iInc
If _IsPressed(25, $hDLL) Then $iX -= 2
If _IsPressed(26, $hDLL) Then $iY -= 2
If _IsPressed(27, $hDLL) Then $iX += 2
If _IsPressed(28, $hDLL) Then $iY += 2
If $iY <= 14 Then $iY = 14
If $iY >= 370 Then $iY = 370
For $i = $iY - 14 To $iY + 14 Step 7
If $iX < $aBorders[$i][0] or $iX > $aBorders[$i][1] - 5 Then
MsgBox(48, "Oops!", "You crashed!" & @CRLF & "Score: " & $iScore)
_Exit()
EndIf
Next
For $i = 0 To 385; Step 5
$lPoints[$i+1][0] = $aBorders[$i][0]
$lPoints[$i+1][1] = $i
$rPoints[$i+1][0] = $aBorders[$i][1]
$rPoints[$i+1][1] = $i
Next
_GDIPlus_GraphicsDrawCurve($hBuffer, $lPoints, $hPen)
_GDIPlus_GraphicsDrawCurve($hBuffer, $rPoints, $hPen)
_GDIPlus_GraphicsFillRect($hBuffer, $iX, $iY, 7, 7)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, 210, 386)
_GDIPlus_GraphicsClear($hBuffer, 0xFF808080)
WEnd
Func _FPS()
WinSetTitle($hGUI, "", $iScore & "@" & $iFrames)
$iFrames = 0
EndFunc
Func _Exit()
_GDIPlus_ImageDispose($hBuffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_Shutdown()
AdlibUnRegister("_FPS")
DllClose($hDLL)
Exit
EndFunc