AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Lösung für 2D Brett
Thema durchsuchen
Ansicht
Themen-Optionen

Lösung für 2D Brett

Offene Frage von "KahPee"
Ein Thema von KahPee · begonnen am 13. Mai 2009 · letzter Beitrag vom 18. Mai 2009
Antwort Antwort
Seite 3 von 4     123 4      
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#21

Re: Lösung für 2D Brett

  Alt 14. Mai 2009, 17:14
kannst du bitte mal noch deine ganzen variablen posten, damit wir genau wissen wie due deine sachen nun aufgebaut hast, das macht es einfacher, und du bekommst genau den tip den du brauchst!

Danke
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#22

Re: Lösung für 2D Brett

  Alt 14. Mai 2009, 17:23
jetzt weiß ich was du meinst:

also ich würde ein array erzeugen, was generell alle bilder enthält:

so z.b:

Delphi-Quellcode:
var AlleMeineBilder : array [0..xyz] of Bitmap;

// dann beim erzeugen der Form

AlleMeineBilder[0].bitmap.assign('Pfad der Datei');
...

// dann kannst du im code deinen Feldern ein Bild aus diesem Array zuweisen, je nach Bedingung die hast.
was dein "Problem" mit if else angeht, da kannst du zum beispiel einfach eine case Abfrage erstellen:

Delphi-Quellcode:
case feldarray[1].bildindex of
  0 : Feldarray[1].Loadfromfile(BildMitBildindex1);
  1 : Feldarray[1].Loadfromfile(BildMitBildindex2);
...
  end;
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#23

Re: Lösung für 2D Brett

  Alt 14. Mai 2009, 18:22
Die unten dargestellte Variante ist schon sehr gut, allerdings hat die noch einen Haken: Ich müsste das ganze für jedes der 49 Felder machen. Schöner wäre, wenn sich eine Prozedur entwickeln lässt, die für alle Felder funktioniert. Geht das evtl über ein dynamisches Array? (Feldarray ist übrigens ein zweidimendsionaler Array[x,y])

Die andere Alternative, die weiterhin ne ganze Ecke eintippen erfordert wäre eine Funktion bei der man Variablen für x und y beim Aufrufen der Funktion abfragen müsste, das geht zur Not auch wenn es keine elegantere Variante gibt.

________
abgesehen von der oberen Frage: Funktioniert folgendes?:

Delphi-Quellcode:
Feldarray[0..7][0..7].Loadfromfile(BildMitBildindex1);
Feldarray[4][4].Loadfromfile(BildMitBildindex2);
am Anfang müssen nämlich alle Felder ein Default-Bild zugewiesen bekommen. Alle bis auf das Feld (4,4) das kriegt eine andere Grafik zugewiesen. Aber im prinzip müsste das so klappen oder?
Wie kann ich die so erzeugten Grafiken nun noch An- und Ausschalten? Funktioniert das dann auch über: Feldarray[x,y].visible:=true/false?
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#24

Re: Lösung für 2D Brett

  Alt 15. Mai 2009, 14:19
Hallo, im Prinzip geht alles.

Du kannst alles auch mit dynamischen arrays machen, aber wenn es bei deinem Programm immer die selbe größe ist wäre es quatsch.

Wenn du dein Array am Anfang mit einer Default Bitmap füllen willst, kannst du das ganze ganz einfach über eine Schleife machen.

einfach so:

Delphi-Quellcode:
for i := 0 to 6 do
          for u := 0 to 6 do
            Feldarray[i,u].loadfromfile(BildMitBildindexDefault);
nun möchtest du garantiert wissen wo sich jedes bild befinedet, also di x, y koordinaten haben.
Aus diesem Grund würde ich dir raten das ganze jetzt entweder in ein Record zu packen und dann ein Array von diesem Record zu erzeugen, oder das ganze als nächster schritt dann in eine eigene Klasse.

Für Record würde ichs so machen:

Delphi-Quellcode:
type TMeinSpielFeld = record
       Bild : TBitmap;
       Left : Integer;
       Top : Integer;
       // Du kannst hier noch andere Parameter definieren die du brauchst
       // Wie zum Beispiel:
       BildIndex : Integer;
       end;

var MeinSpielFeld : array [0..6,0..6] of TMeinSpielFeld;
Somit hättest du jetzt den Vorteil dass du ein Array hast, welches zu jedem Bitmap auch noch die Koordinaten beinhaltet und alle anderen Sachen die du dann noch Brauchst.

Jetzt kannst du auch einfach die x ( Left) und y (Top) Koordinaten abfragen:

Delphi-Quellcode:
x := MeinSpielFeld[0,0].Left;
y := MeinSpielFeld[0,0].Top;

//usw.

Das ganze als nächsten Schritt in eine Klasse zu packen ist aufwendiger, aber am Ende doch noch mehr von Vorteil. Aber das kannst du später alles immernoch machen.
Versuch das ganze ruhig ersteinmal so hinzubekommen.
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#25

Re: Lösung für 2D Brett

  Alt 15. Mai 2009, 16:22
Nochmal vielen Dank für deine Hilfen, genau so hatte ich mir das inzwischen auch überlegt. Ich glaube, dass ich jetzt die Vorraussetzung für meine Programm zusammen habe. ich werde jetzt mal gucken wie weit ich komme...

mfg Kahpee
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#26

Re: Lösung für 2D Brett

  Alt 15. Mai 2009, 16:33
Bitte, bei fragen einfach wieder melden!
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#27

Re: Lösung für 2D Brett

  Alt 15. Mai 2009, 18:28
So jetzt kommt das erste Problem:
ich habe einen Array für die Bilderliste erstellt:

piclist: array[0..11] of Tbitmap;
nun wollte ich jeder Variable von piclist ein Bild zuweisen:piclist[0].assign(pictures/bildname.bmp); allerdings bekomme ich da immer einen Fehler ausgegeben:
[Fehler] Unit1.pas(152): Undefinierter Bezeichner: 'pictures'

pictures/bildname.bmp ist der Pfad von dem Ort wo die exe das ganze Programm liegt ausgehend. also die exe das Projekt liegt in dem gleichen Ordner wie der Ordner pictures in welchem die Datei Bildname.bmp liegt.


was ist falsch? Muss das Bild vorher schon erzeugt werden mit: piclist[0].create? (was in meinem Programm eher hinderlich als hilfreich wäre...

mfg Kahpee
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#28

Re: Lösung für 2D Brett

  Alt 15. Mai 2009, 18:44
Hallo, also ersteinmal ist der Pfad den du übergibst ein String, d.h. du musst Ihn in Anführungszeichen schreiben.

piclist[0].assign('pictures/bildname.bmp'); desweiteren musst du auch einen vollständigen Pfad angeben, bsp:

piclist[0].assign('C:\pictures\Bildname.bmp');
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#29

Re: Lösung für 2D Brett

  Alt 15. Mai 2009, 18:59
mh das ist ja eigentlich blöd, da so bei dem kopieren des Programms an einen Ort sich der Pfad auf einem anderen PC ja ändert, falls ich das Programm mal weitergeben will.
Außerdem kriege ich jetzt ne Fehlermeldung:

  piclist[0].assign('pictures/bild.bmp'); ([Fehler] Unit1.pas(153): Inkompatible Typen: 'TPersistent' und 'String')



Nächstes Problem bei der konkreten Zuweisung:


ich habe einen Record deklariert in dem dann die Variable Feld.pic: Tbitmap vorkommt. Wie weise ich das nun zu:
Feld.pic.Loadfromfile(piclist[0]); funktioniert nicht. ([Fehler] Unit1.pas(171): Inkompatible Typen: 'String' und 'TBitmap')

Und auch die Positionsangaben dazu funktionieren nicht:

Delphi-Quellcode:
Feld.pic.left:=x;
Feld.pic.top:=y;
[Fehler] Unit1.pas(172): Undefinierter Bezeichner: 'top'


Sorry, dass ich soviel Fragen stelle, ich bin noch in der Lernphase

Vielen Dank im voraus Kahpee
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#30

Re: Lösung für 2D Brett

  Alt 15. Mai 2009, 19:10
kleinen moment:

also das mit dem pfad ist einfach, das löst du so:
... assign(ExtractFilePath(ParamStr(0)) + '\pictures\Bild.bmp');
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 20:19 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