donc voila une petit source encore avec le kinect elle vous permet de jouer a des jeu par exemple master système avec un emulateur donc dans mon exemple j'ai pris alex kidd
on peu avancer reculer se baiser sauter et taper avec le point pause j ai régler les commande comme tel
avancer on se met a droite de la caméra et sa correspond niveau emulateur la touche "L"
reculer on se met a gauche de la caméra et sa correspond niveau emulateur la touche "J"
baisser on s'accroupi un peu et sa correspond niveau emulateur la touche "K"
Haut et sauter on saute un peu et sa correspond niveau emulateur la touche "I" pour haut et "S" pour sauter
Taper on avance la main un peu et sa correspond niveau emulateur la touche "D"
pause on se recul un peu pour sortir de la caméra et sa correspond niveau emulateur la touche "espace"
pour sortir de la pause on avance la main et ensuite on se recule
voila il y a tout bon se n'est pas encore trop trop précis il y a beaucoup de chose a améliorer si il y a des personne qui se sente motiver a corriger certaine partie que j'ai fait il y a pas de soucis bien au contraire vos commentaire son les bienvenue
pour utiliser le programme lancer votre emulateur mètre votre jeu en route et ensuite lancer le logiciel kinect et des qu il sera charger vous pouvez joueur
pour les personne qui connaissez alex kidd je suis arriver jusqu'à l'eau vila
cordialement FFcast
Source / Exemple :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, Kinect;
type
TForm1 = class(TForm)
CamReglage: TTrackBar;
Label1: TLabel;
Label5: TLabel;
Label6: TLabel;
Depth: TImage;
Timer2: TTimer;
Atente: TTimer;
Statu: TLabel;
Couper: TButton;
ColorPixel: TPanel;
DepthZN: TMemo;
DepthZ: TMemo;
Lancer: TButton;
Emplacement_Z: TLabel;
Depth_filtre: TImage;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label8: TLabel;
Label9: TLabel;
Label2: TLabel;
Image1: TImage;
Label3: TLabel;
Label4: TLabel;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure CamReglageChange(Sender: TObject);
procedure RienClick(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure AtenteTimer(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure CouperClick(Sender: TObject);
procedure LancerClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
Moteur: CLNUIMotor;
Camera: CLNUICamera;
tableDepth: CLNUIDepth;
tableColor: CLNUIcolor;
BMP: TBitmap;
table: array [1 .. 17000000] of integer;
implementation
{$R *.dfm}
procedure TForm1.CouperClick(Sender: TObject);
begin
Timer2.Enabled := false;
Timer1.Enabled := false;
DepthZN.Visible := true;
end;
procedure TForm1.LancerClick(Sender: TObject);
var
value1: integer;
i, k: integer;
begin
k := 0;
if DepthZ.Lines.Text = '' then
begin
Timer2.Enabled := true;
exit;
end;
for i := low(table) to high(table) - 1 do
table[i] := 0;
for i := 0 to DepthZ.Lines.Count - 1 do
begin
inc(k);
value1 := strtoint(DepthZ.Lines.Strings[i]);
table[value1] := k;
end;
Timer2.Enabled := true;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Kinect.DestroyNUICamera(Camera);
DestroyNUIMotor(Moteur);
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
StopNUICamera(Camera);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.DoubleBuffered := true;
BMP := TBitmap.Create;
BMP.Width := 640;
BMP.Height := 480;
BMP.PixelFormat := pf32bit;
Depth_filtre.Picture.Bitmap.Assign(BMP);
end;
procedure TForm1.RienClick(Sender: TObject);
begin
SetNUIMotorLED(Moteur,
TRadioButton(Form1.FindComponent(TComponent(Sender).Name)).Tag);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := false;
if Label3.Caption = 'point' then
begin
keybd_event(68, 0, 0, 0);
keybd_event(32, 0, KEYEVENTF_KEYUP, 0);
end
else if Label3.Caption = 'pause' then
begin
keybd_event(32, 0, 0, 0);
keybd_event(68, 0, KEYEVENTF_KEYUP, 0);
end;
if Label2.Caption = 'guauche' then
begin
keybd_event(74, 0, 0, 0);
keybd_event(76, 0, KEYEVENTF_KEYUP, 0);
end
else if Label2.Caption = 'droite' then
begin
keybd_event(76, 0, 0, 0);
keybd_event(74, 0, KEYEVENTF_KEYUP, 0);
end
else
begin
keybd_event(76, 0, KEYEVENTF_KEYUP, 0);
keybd_event(74, 0, KEYEVENTF_KEYUP, 0);
end;
if Label4.Caption = 'bas' then
begin
keybd_event(75, 0, 0, 0);
keybd_event(83, 0, KEYEVENTF_KEYUP, 0);
keybd_event(73, 0, KEYEVENTF_KEYUP, 0);
end
else if Label4.Caption = 'Sauter et haut' then
begin
keybd_event(83, 0, 0, 0);
keybd_event(73, 0, 0, 0);
keybd_event(75, 0, KEYEVENTF_KEYUP, 0);
end
else
begin
keybd_event(83, 0, KEYEVENTF_KEYUP, 0);
keybd_event(73, 0, KEYEVENTF_KEYUP, 0);
keybd_event(75, 0, KEYEVENTF_KEYUP, 0);
end;
sleep(20);
keybd_event(68, 0, KEYEVENTF_KEYUP, 0);
end;
procedure TForm1.Timer2Timer(Sender: TObject);
var
X, y, z: short;
couleur_emplacement: Tcolor;
i, VNOMBRE: integer;
test1: pLigScan;
Coleur: Tcolor;
begin
GetNUIMotorAccelerometer(Moteur, X, y, z);
Statu.Visible := false;
GetNUICameraDepthFrameRGB32(Camera, tableDepth, 100);
BytesArrayToBitmapDepth(tableDepth, 640, 480, Depth.Picture.Bitmap);
RotationPicture(Depth.Picture, Depth.Picture);
couleur_emplacement := Depth.Canvas.Pixels[320, 240];
Form1.ColorPixel.Color := couleur_emplacement;
BmpCopierSauf(Depth.Picture, 65535, 16777215, Depth_filtre.Picture);
BmpCopierSauf(Depth.Picture, 16777215, 0, Image1.Picture);
if ((table[couleur_emplacement] = 0) and (couleur_emplacement <> 0)) then
DepthZN.Lines.Add(inttostr(couleur_emplacement))
else
Emplacement_Z.Caption := inttostr(table[couleur_emplacement]);
VNOMBRE := 0;
for i := 0 to 40000 do
begin
if VNOMBRE >= 3500 then
break;
X := Random(640);
y := Random(480);
test1 := Image1.Picture.Bitmap.ScanLine[y];
Coleur := RGB(test1[X].rgbtRed, test1[X].rgbtGreen, test1[X].rgbtBlue);
if Coleur <> 0 then
inc(VNOMBRE);
end;
if VNOMBRE >= 3500 then
Label3.Caption := 'point'
else
Label3.Caption := '';
VNOMBRE := 0;
for i := 0 to 20000 do
begin
X := Random(640);
y := Random(160);
test1 := Depth_filtre.Picture.Bitmap.ScanLine[y];
Coleur := RGB(test1[X].rgbtRed, test1[X].rgbtGreen, test1[X].rgbtBlue);
if Coleur <> 0 then
if y < 90 then
begin
VNOMBRE := 1;
break;
end
else if ((y < 160)and (y>90) )then
begin
VNOMBRE := 2;
break;
end
end;
if VNOMBRE = 0 then
Label4.Caption := 'bas'
else if VNOMBRE = 1 then
Label4.Caption := 'Sauter et haut'
else if VNOMBRE = 2 then
Label4.Caption := 'Rien';
for i := 0 to 1500 do
begin
X := Random(640);
y := Random(480);
test1 := Depth_filtre.Picture.Bitmap.ScanLine[y];
Coleur := RGB(test1[X].rgbtRed, test1[X].rgbtGreen, test1[X].rgbtBlue);
if Coleur <> 0 then
begin
Label8.Caption := inttostr(X);
Label9.Caption := inttostr(y);
break;
end
else
begin
Label8.Caption := inttostr(0);
Label9.Caption := inttostr(0);
end;
end;
if strtoint(Label8.Caption) <> 0 then
begin
if strtoint(Label8.Caption) <= 100 then
Label2.Caption := 'guauche'
else if strtoint(Label8.Caption) <= 540 then
Label2.Caption := 'normal'
else if strtoint(Label8.Caption) >= 100 then
Label2.Caption := 'droite';
end
else
Label3.Caption := 'pause';
Timer1.Enabled := true;
end;
procedure TForm1.AtenteTimer(Sender: TObject);
var
value1: integer;
i, k: integer;
begin
Atente.Enabled := false;
Moteur := CreateNUIMotor;
Camera := CreateNUICamera;
StartNUICamera(Camera);
Label1.Caption := string(GetNUIMotorSerial(Moteur));
SetNUIMotorPosition(Moteur, -Form1.CamReglage.Position + 8000);
SetNUIMotorLED(Moteur, 4);
k := 0;
if DepthZ.Lines.Text = '' then
begin
Timer2.Enabled := true;
exit;
end;
for i := low(table) to high(table) - 1 do
table[i] := 0;
for i := 0 to DepthZ.Lines.Count - 1 do
begin
inc(k);
value1 := strtoint(DepthZ.Lines.Strings[i]);
table[value1] := k;
end;
Timer2.Enabled := true;
end;
procedure TForm1.CamReglageChange(Sender: TObject);
begin
SetNUIMotorPosition(Moteur, -Form1.CamReglage.Position + 8000);
end;
end.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.