Spiel über TCP

  • 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
    [autoit]


    ;Mit GDI+!!! Bilder im Ordner Bilder

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)
    OnAutoItExitRegister("_Exit") ;es geht mit GUIOnEventMode schneller!

    [/autoit] [autoit][/autoit] [autoit]

    _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)

    [/autoit] [autoit][/autoit] [autoit]

    $hFormat = _GDIPlus_StringFormatCreate()
    $hBrush = _GDIPlus_BrushCreateSolid(0xFF00007F)
    $punkte = 5
    $loli = 0

    [/autoit] [autoit][/autoit] [autoit]

    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)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $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()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _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)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $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

    [/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)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(2000)
    MsgBox(0, "Verloren", "Verloren")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _Exit()
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $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)

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; 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)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(2000)
    GUIDelete($hGUI)
    MsgBox(0, "Verloren", "Verloren")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _Exit()
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $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)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]

    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.

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

    Einmal editiert, zuletzt von BadBunny (22. Oktober 2010 um 18:46)

  • Ich hab mich NOCH NIE mit php beschäftigt^^. Aber ich bin auf das hier gestoßen


    Zitat

    Wenn er sich mt Dir verbindet geht es, da ja nur auf die eigens initierte Anfrage geantwortet wird.
    Du musst ja auch nicht Port 80 von außen zugänglich machen um surfen zu können.

    Also musst Du den Server betreiben und einen Port bei Dir umleiten auf den PC wo dein Programm läuft.

    Nun, wie leite ich denn den Port um, das er auf meinen Computer geht??? Und wie kann ich einen Server betreiben?^^ Ich hab ne inet seite, jedoch keine mit php ...

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • Kollege das ist mein Skript..
    WIe wärs wenn du wenigstens meinen Namen aus der GUI nimmst..

  • Edit: @PokerFace, jtz verstehe ich den Zusammenhang!

    Zitat

    Ein Spiel gespielt um GDI+ zu lernen

    Hat mich auch verwirrt :D

    @topic:
    Ist das mit PHP nicht viel zu langsam?
    Senden, auswerten, in Datei schreiben, Daten aus Datei lesen, Zeichnen...
    Oder ist PHP ne Überraschung in Sachen Speed?
    (Kenn mich nur bissl mim PHP aus..)

    [autoit]


    While $Life = True
    $nMSG = BrainGetMsg()
    Switch $nMSG
    Case $Idea
    _Convert_Idea2Code()
    EndSwitch
    WEnd

    [/autoit]
  • Ok ich korrigiere mich ich hab ein kleines Spiel GESCCHRIEBEN um gdi+ zu lernen ;)
    Aber die Frage WIE man sowas macht wurde immer noch nicht beantwortet. ^^
    OO sry PokerFace, ich habd as falsche script reingestellt X( ich wollt das was du da geschrieben hattest mal verushcne ob ichs lösen kann (was ich nicht geschafft habe, (war klar^^)) und hab dann das falsche kopiert... Nunja ich ha auf jeden fall das richtige script mal eingefügt^^ jetzt ist dieses "spiel" drin.
    Das ist deshalb passiert weil ich meistens mehrere Tabs in scite offen hab und eins davon war dann halt deins... sry.

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • Php kann ich dir hierfür nicht empfehlen da jeder "nur" 5 sekunden Zeit hat wofür sicherlich 1-3 Sekunden für das aktualiesieren der Daten drauf geht. An deiner Stelle würd ich es mit TCP versuchen, einer spielt den Server der andere Verbindet sich und der Server schickt immer die $schnur_y an den Client um das Bild aktuell zu halten. Ansonsten könntest du es ja mal mit nen Datastream probiern wenn man das mit AutoIt überhaupt aufbauen kann weis ich grade nicht.

  • Ich hatte mir auch überlegt das mit TCP zu machen, da man aber immer soviel umsellen muss im ruter Portfreigabe etc hat jemand mal gesagt man könnte den server auf einer Inet seite legen. Hab das Zitat im ersten Post, ich habs so verstanden. Wie mach ich das denn?

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • Und nocheinmal


    -#####--#--------#--######---#-----#
    -#-----#--#-------#--#-----------#-----#
    -#####--#-------#--######---#####
    -#--------#-------#-----------#--#-----#
    -#--------######--#######--#-----#

    Bitte sagt mir mal jemand wie das gehen soll???? Was soll ich senden? Wie soll ich das verarbeiten... Nocheinmal Push ich nichtmehr :D

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake