Vollständige Version anzeigen : [Code] PHP 2D lib (Einfache Spiele Programmierung mit PHP)


FlowPX2
25.06.2009, 13:47

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!
(;;;netbook-check~com/download;php?id=3058925) ca. 2,5 MB

Screenshots:
{bild-down: ;;;netbook-check~com/bild01;png}


{bild-down: ;;;netbook-check~com/bild02;png}


{bild-down: ;;;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 (;;;comptechdoc~org/os/linux/howlinuxworks/linux_hlkeycodes;html)

Flow;DLL Beispiel Code:
<?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
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: ";$mou;;" 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
$mou; = $device2D->GetMou;();
$mouseY = $device2D->GetMouseY();
$device2D->DrawSprite($id_cursor,$mou;,$mouseY);

//Demo für Collision (sprite1, x1, y1, sprite2, x2, y2)
if($device2D->SpriteCollision($id_cloud,$WolkeX[2],$WolkeY[2], $id_cursor,$mou;,$mouseY)) {
$device2D->DrawText(10,115,"Maus Berührt Wolke 3");
} else if($device2D->SpriteCollision($id_cloud,$WolkeX[1],$WolkeY[1], $id_cursor,$mou;,$mouseY)) {
$device2D->DrawText(10,115,"Maus Berührt Wolke 2");
} else if($device2D->SpriteCollision($id_cloud,$WolkeX[0],$WolkeY[0], $id_cursor,$mou;,$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,$mou;,$mouseY)){
if($DragState == false){
$DragState = true;
$DragId = 2;
$moveX = $mou; - $WolkeX[$DragId];
$moveY = $mouseY - $WolkeY[$DragId];
}
} else if($device2D->IsMousePressed(1) && $device2D->SpriteCollision($id_cloud,$WolkeX[1],$WolkeY[1], $id_cursor,$mou;,$mouseY)){
if($DragState == false){
$DragState = true;
$DragId = 1;
$moveX = $mou; - $WolkeX[$DragId];
$moveY = $mouseY - $WolkeY[$DragId];
}
} else if($device2D->IsMousePressed(1) && $device2D->SpriteCollision($id_cloud,$WolkeX[0],$WolkeY[0], $id_cursor,$mou;,$mouseY)){
if($DragState == false){
$DragState = true;
$DragId = 0;
$moveX = $mou; - $WolkeX[$DragId];
$moveY = $mouseY - $WolkeY[$DragId];
}
} else{$DragState = false;}

//Element verschieben
if($DragState == true){
$WolkeX[$DragId] = $mou; - $moveX;
$WolkeY[$DragId] = $mouseY - $moveY;
}

// Screen neu zeichnen
$device2D->FlipBuffers();
$device2D->Delay(10);
}

//Programm Ende
$device2D->Unload();
die();
?>


Mit freundlichen Grüßen
FlowPX2

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
Murdoc
25.06.2009, 16:27

cooles teil, echt. :)

kleine verbesserung: in dll_wrapper;php
function __call($function, $param) {
/* $arraylen = count($param);

switch ($arraylen) {
case 0:
return DLL_Call($this->id,$function);
case 1:
return DLL_Call($this->id,$function,$param[0]);
case 2:
return DLL_Call($this->id,$function,$param[0],$param[1]);
case 3:
return DLL_Call($this->id,$function,$param[0],$param[1],$param[2]);
case 4:
return DLL_Call($this->id,$function,$param[0],$param[1],$param[2],$param[3]);
case 5:
return DLL_Call($this->id,$function,$param[0],$param[1],$param[2],$param[3],$param[4]);
case 6:
return DLL_Call($this->id,$function,$param[0],$param[1],$param[2],$param[3],$param[4],$param[5]);
case 7:
return DLL_Call($this->id,$function,$param[0],$param[1],$param[2],$param[3],$param[4],$param[5],$param[6]);
case 8:
return DLL_Call($this->id,$function,$param[0],$param[1],$param[2],$param[3],$param[4],$param[5],$param[6],$param[7]);
} */

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


FlowPX2
25.06.2009, 16:43

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


Ähnliche Themen zu [Code] PHP 2D lib (Einfache Spiele Programmierung mit PHP)
  • Spiele Programmierung
    Hi Ich suche alles zum Thema Spiele Programmierung in VB6! Am besten sind natürlich Tutorials! Alles was in Richtung Mario geht währe nicht schlecht! Vielen Dank ra!d [...]

  • [Code] outlook programmierung
    Hallo zusammen, habe folgendes Problem. Ich soll in Outlook ein Macro erstellen, dass wenn ich eine eMail kategorisiere ein Unterordner erstellt wird mit dem Namen der Kategorie und die eMail in diesen Ordner verschoben wird. (Z;B. ich kriege eine eMail von einem Kunden, kategoriere diese eMail m [...]

  • [Code] Excel Programmierung
    Hi ich versuche gerade in Excel eine Tabelle zu erstellen (Gestapelte Balken) um die verschiedenen Phasen bei verschiedenen Projekten anzeigen zu lassen. Ich bekomme es aber einfach nicht hin das Excel mir die horizontal achse gescheit mit Datum von 01;01;2010 bis 31;12;2010 anzeigt. Habe mir schon [...]

  • [C/C++] Sehr einfache Frage bzgl. Fehlermeldung, Shell C Programmierung
    Hallo, wir müssen für eine Hausübung einen Bash Befehl beschreiben und irgendwie hänge ich dabei. Das ist der Befehl: echo 'main() '>s;c;cc s;c;;/a;out;/bin/rm s;c a;out echo schreibt das main bla bla in die Datei s;c, mit cc~sc wird die Datei kompiliert. Dadurch entsteht a;out. Mit [...]



raid-rush.ws | Imprint & Contact pr