Hey ich hab ein kleines Spiel gespielt, um GDI+ zu lernen.
Ich wollte es nun aber auch mal mit Freunden spielen... doch ich hab sogut wie keine Ahnung von TCP!
Also das hier ist das script:
Spoiler anzeigen
;Mit GDI+!!! Bilder im Ordner Bilder
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
OnAutoItExitRegister("_Exit") ;es geht mit GUIOnEventMode schneller!
_GDIPlus_Startup()
$GUI_Back_Color = 0xFF000000 + 0xF0F0F0
$bombe_x = 110
$schnur_y = 120
$schnur_x = 157
$hGUI = GUICreate("Testspiel", 400, 400, -1, -1, -1, $WS_EX_TOPMOST)
$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) ; Benutzt die GUI als "Unterlage" für unsere Bilder
$hBitmap = _GDIPlus_BitmapCreateFromGraphics(400, 400, $hGraphics) ; Bitmap-Objekt mit bezug auf unsere Grafik erstellen
$hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap) ; Grafik-Kontext holen.
$hFamily = _GDIPlus_FontFamilyCreate("Times")
$hFont = _GDIPlus_FontCreate($hFamily, 12, 2)
$tLayout = _GDIPlus_RectFCreate(350, 3, 100, 100)
$hFormat = _GDIPlus_StringFormatCreate()
$hBrush = _GDIPlus_BrushCreateSolid(0xFF00007F)
$punkte = 5
$loli = 0
GUISetOnEvent(-3, "_Exit")
[/autoit] [autoit][/autoit] [autoit]GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Bombe = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\Bilder\Bombe.png")
Global $schnur = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\Bilder\zündschnur.png")
$weiss = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\Bilder\weiss.png")
$boom = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\Bilder\Boom.png")
$pustebild = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\Bilder\pusten.png")
$hintergrund = _GDIPlus_GraphicsDrawImageRect($hBackbuffer, $weiss, 0, 0, 400, 400)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $schnur, 157, $schnur_y, 100, 50)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $Bombe, 110, 120, 200, 160)
_GDIPlus_GraphicsDrawStringEx($hBackbuffer, "Zeit: " & $punkte, $hFont, $tLayout, $hFormat, $hBrush)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, 400, 400)
$timer = TimerInit()
[/autoit] [autoit][/autoit] [autoit]While Sleep(100)
$mouse = GUIGetCursorInfo()
If $loli = 1 Then
If $loli = 1 Then
If $loli = 1 Then
$schi = 1
While Sleep(1) And $schi = 1
$bombe_x += 10
$schnur_x += 10
$timer = TimerInit()
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $weiss, 0, 0, 400, 400)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDrawStringEx($hBackbuffer, "Zeit: " & $punkte, $hFont, $tLayout, $hFormat, $hBrush)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $schnur, $schnur_x, $schnur_y, 100, 50)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $Bombe, $bombe_x, 120, 200, 160)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $pustebild, 345, 30, 55, 50)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, 400, 400)
If $schnur_x >= 437 Then $schnur_x = -83
If $bombe_x >= 400 Then $bombe_x = -120
If $bombe_x = 110 Then
$punkte = 5
$loli = 0
$schi = 0
EndIf
WEnd
[/autoit] [autoit][/autoit] [autoit]EndIf
EndIf
EndIf
$pusten = GUIGetCursorInfo($hGUI)
If IsArray($pusten) Then
If $pusten[2] = 1 Then
If $pusten[0] > 350 And $mouse[1] > 30 And $mouse[1] < 70 And $mouse[0] < 400 Then
If TimerDiff($timer) >= 6000 Then $loli = 1
If TimerDiff($timer) >= 1000 Then $punkte = 4
If TimerDiff($timer) >= 2000 Then $punkte = 3
If TimerDiff($timer) >= 3000 Then $punkte = 2
If TimerDiff($timer) >= 4000 Then $punkte = 1
If TimerDiff($timer) >= 5000 Then $punkte = 0
If $schnur_y = 153 Then
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $weiss, 0, 0, 400, 400)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $boom, 110, 130, 170, 170)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, 400, 400)
Sleep(2000)
MsgBox(0, "Verloren", "Verloren")
_Exit()
EndIf
$schnur_y += 0.4
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $weiss, 0, 0, 400, 400)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDrawStringEx($hBackbuffer, "Zeit: " & $punkte, $hFont, $tLayout, $hFormat, $hBrush)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $schnur, $schnur_x, $schnur_y, 100, 50)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $Bombe, $bombe_x, 120, 200, 160)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $pustebild, 345, 30, 55, 50)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, 400, 400)
EndIf
EndIf
EndIf
; Super Radierer benutzen um alten Backbuffer zu löschen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]If TimerDiff($timer) >= 6000 Then $loli = 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]If TimerDiff($timer) >= 1000 Then $punkte = 4
If TimerDiff($timer) >= 2000 Then $punkte = 3
If TimerDiff($timer) >= 3000 Then $punkte = 2
If TimerDiff($timer) >= 4000 Then $punkte = 1
If TimerDiff($timer) >= 5000 Then $punkte = 0
If $schnur_y >= 153 Then
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $weiss, 0, 0, 400, 400)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $boom, 110, 130, 170, 170)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, 400, 400)
Sleep(2000)
GUIDelete($hGUI)
MsgBox(0, "Verloren", "Verloren")
_Exit()
EndIf
$schnur_y += 0.2
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $weiss, 0, 0, 400, 400)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDrawStringEx($hBackbuffer, "Zeit: " & $punkte, $hFont, $tLayout, $hFormat, $hBrush)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $schnur, $schnur_x, $schnur_y, 100, 50)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $Bombe, $bombe_x, 120, 200, 160)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $pustebild, 345, 30, 55, 50)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, 400, 400)
WEnd
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _Exit()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDispose($hGraphics) ;schließt Die unterlage ;(Gui)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>_Exit
Bilder unten im Anhang.
Also das Problem ist, ich würde gerne eine Verbindung zwichen den beiden Spielen aufbauen, und diese dann immer die Bombe wechseln lassen zu dem anderen.
Da ich aber, um eine TCP verbindung mit server und client eine Portfreischaltung brauche, und diese im Ruter umstellen müsste, woltle ich fragen wie ich Dies über den Port 80 einer Internet seite machen kann.
Wäre es dann auch möglich, das ich beide Spiele als Client benutzen kann, und einen Externen server (der einfach auf z.b. meinem PC läuft) zu benutzen, da sonst immer einer den server haben muss und man muss dann so viel umschreiben etc.
Ich hoffe (und glaube^^) ihr könnt mir helfen. Wenn ich das probelm zu kompliziert oder zu wenig beschrieben habe, bitte bescheid sagen.