Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   images bewegen mit maus delphi (https://www.delphipraxis.net/168785-images-bewegen-mit-maus-delphi.html)

infofreak23 11. Jun 2012 11:40

images bewegen mit maus delphi
 
hey meine programmierfreunde,

ich habe ein kleines problem:cry: :
ich bin gerade dabei schach zu programmieren.
ich habe mein schachfeld fertig und die figuren habe ich mit images gemacht.
mein problem ist jetzt dass ich nicht weiß wie ich diese nun bewegen kann.

könnt ihr mir helfen :?:
wäre echt nett von euch ist wichtig :lol:
danke im voraus :thumb:

Bummi 11. Jun 2012 11:53

AW: images bewegen mit maus delphi
 
Der Ansatz mit mehreren Images scheint mir nicht optimal gewählt, aber wenn Du es so versuchen willst

Delphi-Quellcode:
unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls;

type
  TForm5 = class(TForm)
    Image1: TImage;
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  private
    { Private-Deklarationen }
    FMDX,FMDY:Integer;
  public
    { Public-Deklarationen }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}

procedure TForm5.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
   FMDX := X;
   FMDY := Y;
end;

procedure TForm5.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
   if ssLeft in Shift then
      begin
        TImage(Sender).Left := TImage(Sender).Left + X - FMDX;
        TImage(Sender).Top := TImage(Sender).Top + Y - FMDY;
      end;
end;

end.

infofreak23 11. Jun 2012 13:00

AW: images bewegen mit maus delphi
 
danke schonmal für deine antwort.
was wäre denn deiner meinung nach besser geeignet anstelle von den images?

Bummi 11. Jun 2012 13:18

AW: images bewegen mit maus delphi
 
Ich würde entweder eine Komponente von TGraphicControl ableiten, oder wenn es kurz un schmerzlos gehen soll Feld und Figuren im OnPaint einer Paintbox (notfalls auch des Forms) malen, die Verwaltungsinformationen in einem Array vorhalten und Mousedown/move etc. der Paintbox/Komponete auswerten.

bernhard_LA 11. Jun 2012 15:37

AW: images bewegen mit maus delphi
 
als Ergänzung der anderen Posts :

er reicht ein TImage, in diesem Bild kannst Du Deine Figuren (sprites) über verschiedenen Funktionen ( Canvas.Paint, BitBlt, ....)
direkt zeichnen lassen. Schau dir mal folgendes Tutorial an :

http://delphi.about.com/od/gameprogr...rogramming.htm

Popov 11. Jun 2012 17:04

AW: images bewegen mit maus delphi
 
Liste der Anhänge anzeigen (Anzahl: 2)
Anbei ein kleines Beispiel wie man das Problem nur mit Bitmaps lösen kann. Es ist nichts besonderes, es sind nur fünf Bitmap-Kisten die auf einer Untegrund-Bitmap mit gedrückter Maus verschoben werden können. Alles wurde mit TBitmaps gelöst. Es ist nur etwas Rechnen nötig.

infofreak23 12. Jun 2012 13:13

AW: images bewegen mit maus delphi
 
soo vielen dank erstmal für eure antworten :)

ich habe allerdings noch ein paar fragen die noch nicht ganz verstehe.

zuerst eine frage an bummi: kann ich den quellcode den du mir geschrieben hast so wie er da steht in meinen quelltext kopieren oder muss ich da noch was ändern und wenn ja was?

außerdem frage ich mich, wie ich dass dann machen soll wenn ich möchte, dass z.B. ein turm nur auf bestimmte felder ziehen kann und wie ich die felder überhaupt einteilen kann. habe das spielfeld mit moveto und lineto auf ein TImage gemalt und die felder mit brush gefärbt.

auch wenn das vlt nicht die beste lösung ist wäre es nett wenn ihr mir schreiben könntet wie ich das umsetzen kann OHNE großartig was zu verändern sprich mit den images als spielfiguren und dem spielfeld so wie ich es oben geschrieben habe, denn mir rennt leider die zeit davon kann nur noch freitag daran arbeiten :pale:

Bummi 12. Jun 2012 13:28

AW: images bewegen mit maus delphi
 
Du musst im Objektinspektor die Ereignisse OnMouseMove und OnMouseDown versorgen.
Du kannst für alle Images dieselben Routinen verwenden, weitergehende Entscheidungen kannst Du über z.B. über
Delphi-Quellcode:
if Sender=ImageTurm then
realisieren.
Die Gültigkeit der Züge musst Du über Top / Left verifizieren, ich würde hierfür wie gesagt ein Array anlegen.
z.B.
Delphi-Quellcode:
type
TMyFieldInfo=Record
 Farbe:TColor;
 AktuelleFigur:Integer;
 //was auch immer noch
end;

TFieldArray=Array[0..7,0..7] of TMyFieldInfo;

infofreak23 12. Jun 2012 13:34

AW: images bewegen mit maus delphi
 
okay danke werds mal so versuchen

Popov 12. Jun 2012 13:43

AW: images bewegen mit maus delphi
 
Du gleitest vielleicht etwas von dem Problem ab. Du möchtest einen Kuchen backen, fragst aber gerade wie du das Wasser aus dem Wasserhahn in den Messbecher kriegst?

Ich denke du hast dir am Anfang ein großes (Grafik) Hindernis gesetzt das erst überwunden werden muß. Du hast zwei "Probleme", ein Schachspiel programmieren und umgang mit Grafik verstehen.Vielleicht ein Tipp, lass das mit der Grafik-Bewegung. Du willst den Springer bewegen, dann blinke mit ihm drei mal am Position A (jetzt) und B (gleich), dann Figur aus Position A löschen und bei B setzten. So hat man früher auch gemacht. Das ist simpler und das Grafik-Hindernis ist weg.

Wie gesagt, nur ein Tipp, spart aber etwas Zeit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:49 Uhr.
Seite 1 von 2  1 2      

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