[Code] PHP 2D lib (Einfache Spiele Programmierung mit PHP)

Dieses Thema im Forum "Projekte / Codes" wurde erstellt von FlowPX2, 25. Juni 2009 .

  1. 25. Juni 2009
    PHP 2D lib (Einfache Spiele Programmierung mit PHP)

    Hi hab es zwar schon in einem anderen PHP Forum vorgestellt, aber vielleicht gibt es hier auch den einen oder anderen User den es interessieren könnte.
    Daher stell ich es hier nochmal schnell vor.

    Würde mich freuen, wenn es verbesserungs Vorschläge gibt.
    Oder falls ihr was Probiert damit es hier berichtet.

    Flow.DLL:
    Ist eine Extension die es erlaubt normale Windows DLLs anzusprechen.
    Es unterstützt zur Zeit maximal 8 Parameter mit den Typen String und Long.
    Nutzen kann man es für alles Mögliche, um DLL anzusteuern welche Videos oder Audios convertieren usw.

    Flow.FX²:
    Ist eine kleine 2D Grafik Lib welche dank Flow.DLL unter PHP angesprochen werden kann. Flow.FX² ist auschließlich für eine Desktop Anwendung und läuft auf keinen Webserver!!! Man führt die PHP Skripte direkt mit dem PHP Interpreter aus.

    Das Paket:
    Flow.DLL und Flow.FX² Packet (Enthällt ein Minimales PHP + Extension und Demo). Ausführen lässt sich das mit der Start.bat im packet!
    http://www.netbook-check.com/download.php?id=3058925 ca. 2,5 MB

    Screenshots:
    {bild-down: http://www.netbook-check.com/bild01.png}


    {bild-down: http://www.netbook-check.com/bild02.png}


    {bild-down: http://www.netbook-check.com/bild03.png}


    Weitere Infos:
    Die Extension und die Flow.FX² Lib gibt es erstmal nur für Windows.
    Flow.FX² richtet sich nach den Keycodes wie Sie hier auf dieser Seite zufinden sind: Keycode Table

    Flow.DLL Beispiel Code:
    PHP:
    <? php
    include_once( 'dll_wrapper.php' );
    $dll  = new  Dll ( 'user32.dll' );
    $dll -> MessageBoxA ( 0 , "Meldung!" , "Titel" , 0 );
    ?> 
    Flow.FX² Beispiel Code:
    Dieses Beispiel ist nicht im Packet mit drin. Es ist ziemlich ähnlich nur das man hier die Wolken mit der Maus verschieben kann.

    PHP:
    <? php
    include_once( 'dll_wrapper.php' );

    //Lib laden und Screen öffnen
    $device2D  = new  Dll ( 'flow.fx².dll' );
    $device2D -> OpenScreen ( 1024 , 768 , 32 , "Spiel Titel" );

    //Transparenz Farbe
    $TransColor  $device2D -> RGB ( 0 , 255 , 255 );

    //Mauszeiger laden
    $id_cursor  1 ;
    $device2D -> LoadSprite ( $id_cursor , 'data/cursor.png' );
    $device2D -> SetSpriteTransparentColor ( $id_cursor , $TransColor );

    //Hingergrund laden
    $id_background  2 ;
    $device2D -> LoadSprite ( $id_background , 'data/background.png' );

    //Wolke laden
    $id_cloud  3 ;
    $device2D -> LoadSprite ( $id_cloud , 'data/cloud_1.png' );
    $device2D -> SetSpriteTransparentColor ( $id_cloud , $TransColor );


    //Vorder und Hintergrund farbe
    $device2D -> SetForegroundColor ( $device2D -> RGB ( 255 , 0 , 0 ));
    $device2D -> SetBackgroundColor ( $device2D -> RGB ( 0 , 255 , 0 ));


    //Drag Wolke
    $WolkeX [ 2 ] =  350 ;
    $WolkeY [ 2 ] =  300 ;
    $WolkeX [ 1 ] =  250 ;
    $WolkeY [ 1 ] =  300 ;
    $WolkeX [ 0 ] =  150 ;
    $WolkeY [ 0 ] =  300 ;
    $moveX  0 ;
    $moveY  0 ;
    $DragState  false ;
    $DragId  0 ;

    while(!
    $device2D -> IsKeyDown ( 1 ))
    {
        
    //Maus und Tastertur aktuallisieren
        
    $device2D -> UpdateMouse ();
        
    $device2D -> UpdateKeyboard ();
        
        
    // Hintergrund Bild zeichnen
        
    $device2D -> DrawSprite ( $id_background , 0 , 0 ); 

        
    //Mausbewegung Infos
        
    $mouseDeltaX  $device2D -> GetMouseDeltaX ();
        
    $mouseDeltaY  $device2D -> GetMouseDeltaY ();
        if(
    $device2D -> IsMousePressed ( 1 )){ $device2D -> DrawText ( 10 , 10 , "Linke Maustaste!" ); }
        if(
    $device2D -> IsMousePressed ( 2 )){ $device2D -> DrawText ( 10 , 25 , "Rechte Maustaste!" ); }
        if(
    $device2D -> IsMousePressed ( 3 )){ $device2D -> DrawText ( 10 , 40 , "Mittlere Maustaste!" ); }
        
    $device2D -> DrawText ( 10 , 55 , "Maus Delta: " . $mouseDeltaX . " x " . $mouseDeltaY );
        
    $device2D -> DrawText ( 10 , 70 , "Maus Position: " . $mouseX . " x " . $mouseY );

        
    //Text eingabe auf dem Bildschirm
        
    $keyCode  $device2D -> GetKeyCode ();
        if(
    $keyCode  !=  0 ){  $AusgabeText  .=  chr ( $keyCode ); }
        
    $device2D -> DrawText ( 10 , 100 , "Sie Tippen: " . $AusgabeText );
        
        
    //Wenn Linke und Rechte Maustaste gedrückt ändere Mausposition
        
    if( $device2D -> IsMousePressed ( 1 ) &&  $device2D -> IsMousePressed ( 2 )){  $device2D -> SetMousePosition ( 100 , 100 ); }
        
        
    // Zeichne 3 Wolken
        
    $device2D -> DrawSpriteOpacity ( $id_cloud , $WolkeX [ 0 ], $WolkeY [ 0 ], 50 );
        
    $device2D -> DrawSpriteOpacity ( $id_cloud , $WolkeX [ 1 ], $WolkeY [ 1 ], 128 );
        
    $device2D -> DrawSpriteOpacity ( $id_cloud , $WolkeX [ 2 ], $WolkeY [ 2 ], 255 );
        
        
    // Zeichne Mauszeiger
        
    $mouseX  $device2D -> GetMouseX ();
        
    $mouseY  $device2D -> GetMouseY ();
        
    $device2D -> DrawSprite ( $id_cursor , $mouseX , $mouseY ); 
        
        
    //Demo für Collision (sprite1, x1, y1, sprite2, x2, y2)
        
    if( $device2D -> SpriteCollision ( $id_cloud , $WolkeX [ 2 ], $WolkeY [ 2 ],   $id_cursor , $mouseX , $mouseY )) {
            
    $device2D -> DrawText ( 10 , 115 , "Maus Berührt Wolke 3" );
        } else if(
    $device2D -> SpriteCollision ( $id_cloud , $WolkeX [ 1 ], $WolkeY [ 1 ],   $id_cursor , $mouseX , $mouseY )) {
            
    $device2D -> DrawText ( 10 , 115 , "Maus Berührt Wolke 2" );
        } else if(
    $device2D -> SpriteCollision ( $id_cloud , $WolkeX [ 0 ], $WolkeY [ 0 ],   $id_cursor , $mouseX , $mouseY )) {
            
    $device2D -> DrawText ( 10 , 115 , "Maus Berührt Wolke 1" );
        }
        
        
    // Prüfe ob Mauszeiger eine Wolke berührt und Maustaste gedrückt ist
        
    if( $device2D -> IsMousePressed ( 1 ) &&  $device2D -> SpriteCollision ( $id_cloud , $WolkeX [ 2 ], $WolkeY [ 2 ],   $id_cursor , $mouseX , $mouseY )){
        if(
    $DragState  ==  false ){
            
    $DragState  true ;
            
    $DragId  2 ;
            
    $moveX  $mouseX  $WolkeX [ $DragId ];
            
    $moveY  $mouseY  $WolkeY [ $DragId ];
        }
        } else if(
    $device2D -> IsMousePressed ( 1 ) &&  $device2D -> SpriteCollision ( $id_cloud , $WolkeX [ 1 ], $WolkeY [ 1 ],   $id_cursor , $mouseX , $mouseY )){
        if(
    $DragState  ==  false ){
            
    $DragState  true ;
            
    $DragId  1 ;
            
    $moveX  $mouseX  $WolkeX [ $DragId ];
            
    $moveY  $mouseY  $WolkeY [ $DragId ];
        }
        } else if(
    $device2D -> IsMousePressed ( 1 ) &&  $device2D -> SpriteCollision ( $id_cloud , $WolkeX [ 0 ], $WolkeY [ 0 ],   $id_cursor , $mouseX , $mouseY )){
        if(
    $DragState  ==  false ){
            
    $DragState  true ;
            
    $DragId  0 ;
            
    $moveX  $mouseX  $WolkeX [ $DragId ];
            
    $moveY  $mouseY  $WolkeY [ $DragId ];
        }
        } else{
    $DragState  false ;}
        
        
    //Element verschieben
        
    if( $DragState  ==  true ){
            
    $WolkeX [ $DragId ] =  $mouseX  $moveX ;
            
    $WolkeY [ $DragId ] =  $mouseY  $moveY ;
        }
        
        
    // Screen neu zeichnen
        
    $device2D -> FlipBuffers (); 
        
    $device2D -> Delay ( 10 );
    }

    //Programm Ende
    $device2D -> Unload ();
    die();
    ?> 
    Mit freundlichen Grüßen
    FlowPX2
     
  2. 25. Juni 2009
    AW: PHP 2D lib (Einfache Spiele Programmierung mit PHP)

    cooles teil, echt.

    kleine verbesserung: in dll_wrapper.php
    PHP:
    function  __call ( $function $param ) {
        

        
        
    array_unshift ( $param $this -> id $function );
        return 
    call_user_func_array ( 'DLL_Call' $param );
    }
    erlaubt einem soviele parameter an die funktion weiter zu geben wie man will
     
  3. 25. Juni 2009
    AW: PHP 2D lib (Einfache Spiele Programmierung mit PHP)

    Ah ja danke. Aber die Extension (Flow.DLL) ist dafür noch icht ausgelegt, werde diese aufjedenfall noch verbessern und erweitern. Auch mehr Parameter werden in Zukunft unterstützt. Aber jetzt werd ich mich erstmal Linux widmen und versuchen ob ich die Extension dort zum laufen bekomme.
    Ach ja und Sound wäre nicht schlecht.

    Dann werd ich wohl schauen das ich ein kleines Spiel damit zustande bekomme.

    mfg.
    FlowPX2
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.