Autor Beitrag
Darkscream
Hält's aus hier
Beiträge: 13

Win Vista/ win 7
Delphi 7
BeitragVerfasst: So 11.12.05 02:30 
Also ich hab damal nen Problem undzwar
versuche ich gerade eine überprüfung zu schreiben die mir überprüft ob das bild auf das ich geklickt habe das selbe Bild gespeichert hat wie eins nebendrann
Die bilder sind in einem Großen Quadrat angeordnet und zwar in 10x10 Bilder

da das ein Schiffeversenken werden soll soll halt abgefragt werden beim schiffe setzen ob man mebendrann schon ein schiff gesetzt hat, aber das funktioniert irgendwie nicht -.- immer wenn ich ein bild anklicke sagt mir meine eigene fehlermeldung das ich das Schiff da net setzen kann -.-
hier mal der Code

Beim onClick ereigniss

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
     Imagelist1.GetBitmap(1,bitmap);
        Image.Picture.Bitmap := bitmap ;
      if Check(Image,x,y) then
       begin
        image.Picture.Bitmap.TransparentColor := CLnone ;
        SetzenAN := SetzenAN - 1 ;
       end
      else
       begin
        Imagelist1.GetBitmap(3,bitmap);
        Image.Picture.Bitmap := Bitmap;
        MessageDlg('Du kannst hier Kein Schiff setzen'+inttostr(f)+','+xS+','+inttostr(y),MTinformation,[MbOk],0);
       end;


udn jetzt die Funktion

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
Function Check(Image:TImage;x,y:Integer):Boolean ;
var j,i : integer ;
Image2 : Timage;
begin
 For i := 1 to 10 do
  For j := 1 to 10 do
   begin
   image2 := Images[1,x,y] ;
    if x = i + 1 then
     begin
      if Image2.picture.bitmap = Image.picture.bitmap then
          Result := False
        else
          Result := True ;
     end;
    if x = i - 1 then
     begin
      if Image2.picture.bitmap = Image.picture.bitmap then
          Result := False
        else
          Result := True ;
     end;
    if y = j + 1 then
     begin
      if Image2.picture.bitmap = Image.picture.bitmap then
          Result := False
        else
          Result := True ;
     end;
    if y = j - 1 then
     begin
      if Image2.picture.bitmap = Image.picture.bitmap then
          Result := False
        else
          Result := True ;
     end;
   end;
end;
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 12.12.05 02:10 
Moin!

Du machst das konzeptionell total falsch... :wink:

Es ist völlig überflüssig (und mit Wasserstoffbomben auf Mikroben geschossen) die Bitmaps zu vergleichen (mal ganz abgesehen davon, dass das so gar nicht geht, wie du das vor hast). Du brauchst dir doch nur einen (weiteren) Wert für diese Imageposition zu merken (z.B. in der .Tag-Eigenschaft des Images), wo du z.B. 0 für frei, 1 für belegt und noch nicht getroffen, 2 für getroffen und noch nicht versenkt und 3 für getroffen und versenkt vermerkst.

cu
Narses
iX0r
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 34

Ubuntu
D6, Lazarus
BeitragVerfasst: Mo 12.12.05 09:29 
Oder du legst unter dein Bild ein zweidimensionales Array (im konzeptionellen Sinn).
Darkscream Threadstarter
Hält's aus hier
Beiträge: 13

Win Vista/ win 7
Delphi 7
BeitragVerfasst: Mi 14.12.05 23:11 
hmmm ich versuch mal die .tag variante und melde mich dann nochmal obs geklappt hat oder nicht ^^

edit: naja selber "fehler" -.- er sagt mir immernoch das ich das schiff da net setzen kann grrr -.-

ah aber ich glaube ich weiß woran das liegt kann schon sein, dass das programm result irgendwann mal auf true setzt aber dann wird es wieder überschrieben wenn es wieder nicht passt :/

edit2: hmm -.- naja gut so wie ichs versucht hab gings net -.- naja ich glaub ich setzt mich mal morgen nochmal drann mir wurde gerade über Chatprogramm mitgeteilt das ich morgen ne arbeit schreibe >_< ^^

edit3: hmmmkaydas mit dem 2d array hat geklappt vielen dank dafür ^^