AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Kartenspiel dynamische liste
Thema durchsuchen
Ansicht
Themen-Optionen

Kartenspiel dynamische liste

Ein Thema von simonko · begonnen am 16. Jul 2005 · letzter Beitrag vom 17. Jul 2005
Antwort Antwort
simonko

Registriert seit: 2. Jun 2005
125 Beiträge
 
#1

Kartenspiel dynamische liste

  Alt 16. Jul 2005, 23:21
Ich mach grad ein kartenspiel und ich hab eine dynamische liste mit den karten für
spieler,computer und stapel; nun mein problem ist eigentlich nur das anzeigen der karten;
ich geh jetzt die liste sequentiell durch und möchte die karten anzeigen. ich hab diese image komponente und in einen ordner meine karten als jpg. wie kann ich die karten aber anzeigen?

image1.picture:= ?????? //wie kann ich den pfad angeben wo die karten liegen?

dann müßte ich auch wissen ob man zur laufzeit neue image komponenten erstellen kann und plazieren kann.
das wäre auch besser und leichter als schon im voraus plazierte images zu haben.

ich bitte um hilfe
danke im voraus

MFG
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Kartenspiel dynamische liste

  Alt 16. Jul 2005, 23:25
Du könntest ein dynamisches Array aus TImage-Komponenten machen und das dann bei Bedarf vergrößern.

Wenn du die Karten-Bilder als JPEG vorliegen hast, dann binde die Unit JPEG in die uses ein und schreib
ImageArray[index].Picture.LoadFromFile(Dateiname);
Julian J. Pracht
  Mit Zitat antworten Zitat
simonko

Registriert seit: 2. Jun 2005
125 Beiträge
 
#3

Re: Kartenspiel dynamische liste

  Alt 17. Jul 2005, 05:17
ich hab das jetzt versucht aber ich seh kein bild. es kommt keines.
hab das so gemacht:

Delphi-Quellcode:
procedure ausgeben;
var
   kortn : Timage;
begin
  kortn:= TImage.Create(form1);
  kortn.Parent:=form1;
  kortn.Left:=100;
  kortn.Top:=100;
  kortn.Width:=100;
  kortn.Height:=50;
  kortn.Picture.LoadFromFile('C:\bild005.bmp');
end;
kann ich als Pfad auch irgendsowas wählen dass er das bild im ornder sucht wo das program läuft`?

[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Kartenspiel dynamische liste

  Alt 17. Jul 2005, 06:29
Zitat von simonko:
... kann ich als Pfad auch irgendsowas wählen dass er das bild im ornder sucht wo das program läuft`?
Hai simonko,

jedem Delphiprogramm wird als erster Parameter der Pfad inkl. des Namens der Exe übergeben. Daraus kannst Du dann den Pfad extrahieren.
Das ganze kann z.B. so aussehen:
Delphi-Quellcode:
function GetAppPath : String;
begin
  result := ExtractFilePath(ParamStr(0));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  s : string;
begin
  s := GetAppPath;
  ShowMessage(s);
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#5

Re: Kartenspiel dynamische liste

  Alt 17. Jul 2005, 09:06
in deinem beispiel ist kortn eine lokale variable, die nach beenden der procedure "im nirvana" verschwindet...

du musst sie global deklarieren, dann solte es genau so funktionieren, tuts bei mir.

ich hab einfach nur die deklaration in den private teil der form getan...

der vollständigkeit halber:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    kortn : TImage;
  public
    { Public-Deklarationen }
  end;

//#######

procedure TForm1.Button1Click(Sender: TObject);
begin
  kortn:= TImage.Create(form1);
  kortn.Parent:=form1;
  kortn.Left:=100;
  kortn.Top:=100;
  kortn.Width:=100;
  kortn.Height:=50;
  kortn.Picture.LoadFromFile('C:\StartLogo.bmp');
  Button1.Enabled:=False;//Kein doppeltes Create, musst du anders realisieren
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  kortn.Free; //Freigeben!!!
end;
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
simonko

Registriert seit: 2. Jun 2005
125 Beiträge
 
#6

Re: Kartenspiel dynamische liste

  Alt 17. Jul 2005, 11:48
es geht immer noch nicht:
ich poste mal was ich biser alles geschrieben hab.


Delphi-Quellcode:
type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Button1: TButton;
    Edit1: TEdit;
    Image1: TImage;
    Image2: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
     kortn : Timage;
  public
    { Public declarations }
  end;
  Tforb = (herz,oachel,lupsn,schell);
  Tschlog = (siebmor,ochtor,neiner,zehner,
              unter,ober,kinig,ass);
  Tzeiger = ^Tkortn;
  Tkortn = record
    forb : Tforb;
    schlog : Tschlog;
    next : Tzeiger;
  end;

var
  Form1: TForm1;
  spieler : Tzeiger; // Kortn fan spieler
  computer : Tzeiger; // Kortn fan pc
  stapel : Tzeiger; // Kortn in Stapel
  spiel : Tzeiger; // oiglege kortn
  stapelanz : integer; // verbleibende kortn



implementation

{$R *.dfm}

procedure initstapel;
var
  neu : Tzeiger;
    i : Tforb;
    j : Tschlog;
begin
  stapel:=nil;
  for i:=herz to schell do
   for j:=siebmor to ass do
    begin
      new(neu);
      neu^.next:=nil;
      neu^.forb:=i;
      neu^.schlog:=j;
      if (stapel=nil) then
        stapel:=neu
      else
        begin
          neu^.next:=stapel;
          stapel:=neu;
        end;
    end;
  stapelanz:=32;
end;

procedure sortieren;
var
  i,j,k : integer;
  p,hilf : Tzeiger;
begin
 randomize;
 p:=stapel;
 for i:=1 to 99999 do
   begin
     j:=random(30)+1;
     for k:=1 to j do
       begin
         hilf:=p;
         p:=p^.next;
       end;
     hilf^.next:=p^.next;
     p^.next:=p^.next^.next;
     hilf^.next^.next:=p;
     p:=stapel;
   end;
end;

procedure ausgeben;
begin
  if stapelanz>0 then
    form1.image2.Picture.LoadFromFile('C:\lol.jpg')
  else
    form1.image2.Picture.LoadFromFile('C:\lol2.jpg');
  form1.kortn:= TImage.Create(form1);
  form1.kortn.Parent:=form1;
  form1.kortn.Left:=100;
  form1.kortn.Top:=100;
  form1.kortn.Width:=100;
  form1.kortn.Height:=50;
  form1.kortn.Picture.LoadFromFile('C:\bild005.jpg');
end;

procedure kortengeben(var liste : Tzeiger;anz : integer);
var
  i : integer;
  p : Tzeiger;
begin
  liste:=stapel;
  p:=stapel;
  for i:=1 to anz do
    stapel:=stapel^.next;
  for i:=1 to (anz-1) do
    p:=p^.next;
  p^.next:=nil;
  stapelanz:=stapelanz-anz;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  initstapel;
  sortieren;
  kortengeben(spieler,5);
  kortengeben(computer,5);
  kortengeben(spiel,1);
  ausgeben;
end;

end.
  Mit Zitat antworten Zitat
simonko

Registriert seit: 2. Jun 2005
125 Beiträge
 
#7

Re: Kartenspiel dynamische liste

  Alt 17. Jul 2005, 14:07
ich hab den fehler gefunden ich hatte so ein schei*** group box davor der das alles verdeckte
  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 23:27 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