Entwickler-Ecke
Sonstiges (Delphi) - Images überprüfen ob sie das selbe bild haben
Darkscream - So 11.12.05 02:30
Titel: Images überprüfen ob sie das selbe bild haben
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
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
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 - 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 - Mo 12.12.05 09:29
Oder du legst unter dein Bild ein zweidimensionales Array (im konzeptionellen Sinn).
Darkscream - 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 ^^
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!