Kinect test v3 joeur a alex kidd avec votre kinect

Description

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.

Codes Sources

A voir également

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.