AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Projektarbeit Adventure - DelphiX

Ein Thema von cmos · begonnen am 24. Jan 2008
Antwort Antwort
cmos

Registriert seit: 7. Nov 2007
Ort: Niedersachsen
3 Beiträge
 
#1

Projektarbeit Adventure - DelphiX

  Alt 24. Jan 2008, 12:24
Wir haben ein kleines Problemchen undzwar wollen wir ein Spiel mit DelphiX programmieren.

Der Punkt ist, dass wir nur ein Formular haben mit der ersten Spielumgebung.(MAP)
Nur wir können keine zweites Formular einbinden, da dies anscheinend nicht mit DelphiX möglich ist.

Da wir nicht weiter wissen, aber bald Abgabe haben, bitten wir um Hilfe, wie dieses doch realisierbar ist.


Hier kommt schonmal der Quellcode den wir bis jetzt haben.

Delphi-Quellcode:
unit DX4;
// Olley geht in die Tiefe

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, DXClass, DXDraws, DXInput, DXSprite, Wave, DXSounds;

type

  TFigur = class (TImageSprite)
  private
    Nr, xDiff, yDiff: Integer;
    procedure ResizeImage (Faktor: Single; Grenze: Integer);
  public
    constructor Create (AParent: TSprite); override;
    procedure DoDraw; override;
    procedure DoMove (MoveCount: Integer); override;
  end;

  TForm1 = class(TDXForm)
    DXDraw1: TDXDraw;
    DXImageList1: TDXImageList;
    DXTimer1: TDXTimer;
    DXSpriteEngine1: TDXSpriteEngine;
    DXInput1: TDXInput;
    DXWaveList1: TDXWaveList;
    DXSound1: TDXSound;
    procedure FormCreate(Sender: TObject);
    procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);
  private
    { Private-Deklarationen }
    Figur1: TFigur;
  public
    { Public-Deklarationen }
  end;

const ZFaktor = 1.1;
var
  Form1: TForm1;
  bagopen : boolean;

implementation

uses Unit2;

{$R *.DFM}

constructor TFigur.Create (AParent: TSprite);
begin
  inherited Create (AParent);
  Image := Form1.DXImageList1.Items[0];
  Width := Image.Width;
  Height := Image.Height;
  AnimStart := 0;
  AnimCount := 0;
  AnimLooped := true;
  AnimSpeed := 1/20;
  Nr := 0; xDiff := 20; yDiff := 10;
end;

procedure TFigur.ResizeImage (Faktor: Single; Grenze: Integer);
begin
  if Faktor < 0 then exit;
  // Verkleinern
  if Faktor < 1 then
  begin
    if Width > Image.Width div Grenze then
      Width := Round(Width * Faktor);
    if Height > Image.Height div Grenze then
      Height := Round(Height * Faktor);
  end
  // Vergrößern
  else if Faktor > 1 then
  begin
    if Width < Image.Width * Grenze then
      Width := Round(Width * Faktor);
    if Height < Image.Height * Grenze then
      Height := Round(Height * Faktor);
  end;
end;

procedure TFigur.DoDraw;
var
  Nr: Integer; Bereich: TRect;
begin
  Nr := AnimStart + Trunc(AnimPos);
  Bereich := BoundsRect;
  OffsetRect (Bereich,
    (Image.Width-Width) div 2, (Image.Height-Height) div 2);
  Image.StretchDraw (Engine.Surface, Bereich, Nr);
(*OffsetRect (Bereich,
    (Width-Image.Width) div 2, (Height-Image.Height) div 2);
  Image.Draw (Engine.Surface, Bereich.Left, Bereich.Top, Nr);*)

end;


procedure TFigur.DoMove (MoveCount: Integer);
var fMoved: Boolean;
begin
  inherited DoMove(MoveCount);
  // Mit Esc beenden
  if isButton3 in Form1.DXInput1.States then Form1.Close;



  // Abfrage der Pfeiltasten
  fMoved := false;
  if isLeft in Form1.DXInput1.States then
  begin X := X - xDiff; Nr := 3; fMoved := true; end;
  if isRight in Form1.DXInput1.States then
  begin X := X + xDiff; Nr := 2; fMoved := true; end;
  if isUp in Form1.DXInput1.States then
  begin
    Y := Y - yDiff; ResizeImage (1/ZFaktor, 3);
    Nr := 1; fMoved := true;
  end;
  if isDown in Form1.DXInput1.States then
  begin
    Y := Y + yDiff; ResizeImage (ZFaktor, 2);
    Nr := 0; fMoved := true;
  end;
  Image := Form1.DXImageList1.Items[Nr];
  // Stehen oder Bewegen?
  if fMoved then
    AnimCount := Image.PatternCount
  else
  begin AnimCount := 0; Nr := Nr; end;
  // Spielfeld ggf. scrollen
  // Engine.X := -X + (Engine.Width - Width) div 2;
  // Engine.Y := -Y + (Engine.Height - Height) div 2;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin


  if isButton4 in Form1.DXInput1.States then
  begin
  Form2.show;
  bagopen := true
  end ;



  DxWaveList1.Items.Find('output.wav').Play(True);
  randomize;
  // Hintergrund einsetzen
  with TBackgroundSprite.Create (DXSpriteEngine1.Engine) do
  begin
    Tile := true;
    SetMapSize (1, 1);
    Image := DXImageList1.Items[4];
    Z := -1;
  end;
  // Figur erzeugen und positionieren
  Figur1 := TFigur.Create (DXSpriteEngine1.Engine);
  with Figur1 do
  begin
    Nr := 1;
    X := (ClientWidth - 100) div 2;
    Y := (ClientHeight - (-300)) div 3;
    Z := 1;

  end;
end;

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
  DXInput1.Update;
  DXDraw1.Surface.Fill(clBlack);
  DXSpriteEngine1.Draw;
  DXSpriteEngine1.Move(20);
  DXDraw1.Flip;
end;

end.

Wir danken schonmal im voraus.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz