JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=d85cd5a1353b217c904b2688c6b42c64Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Mit der Mouse im ColorKey Bereich
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
peterbub
JLI'ler



Anmeldedatum: 24.07.2005
Beiträge: 109

Medaillen: Keine

BeitragVerfasst am: 11.08.2005, 17:28    Titel: Mit der Mouse im ColorKey Bereich Antworten mit Zitat

Ich möchte mit der Mouse auf ein Spirte drücken, worauf ich eine Antwort (z.B. true) bekomme.
Wie kann ich es schaffen, dass der ColorKey Bereich (Rand oder Mitte) nicht mit dazu gezählt wird.
Beispiel : ich möchte ein Donut mit der Mouse abschiessen,
will aber nicht , dass der innere Bereich (Loch (Colorkeybereich)), als Treffer (true) zählt.

Ich bräuchte so eine Art Pixel - Position - Color - Information eines Spirtes

was kann ich tun Shocked
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Maxim
Senior JLI'ler



Anmeldedatum: 28.03.2004
Beiträge: 249

Medaillen: Keine

BeitragVerfasst am: 11.08.2005, 18:12    Titel: Antworten mit Zitat

vielleicht:

wenn die Farbe des angeklickten Pixels nicht der Colorkey-Farbe entspricht, dann wird true zuzückgegeben
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Blubb-Tec
JLI'ler


Alter: 33
Anmeldedatum: 29.03.2005
Beiträge: 171
Wohnort: Düsseldorf
Medaillen: Keine

BeitragVerfasst am: 11.08.2005, 18:17    Titel: Antworten mit Zitat

oder auch umgekehrt:

wenn die Farbe des Angeklickten Pixels der ColorKey-Farbe entspricht, dann wird flase zurückgegeben
_________________
www.planlos.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 11.08.2005, 18:20    Titel: Antworten mit Zitat

das ist eigentlich nicht schwer.
du hast 2 probleme zu lösen.

1. Errechnen der mauskoordinaten auf dem bild

2. Zugriff auf die farbe an der koordinate

zu 1:
Das ist natürlich erstmal davon abhängig wie du dein koordinatensystem aufgebaut hast. normalerweise du hast die koordinaten der maus und die koordinaten der obreen rechten linken deines bildes. ziehst du von den maus koordinaten die der oberen linken ecke des bildes ab erhältst du die koordinaten der maus relativ zum bild.

zu 2:
Ich würde dir raten eine kopie des bildes im arbeitsspeicher zu speichern. sprich ein 2D array aus farbwerten. sonst gibt es sicher performance probleme, wenn du auf die bildinformationen im grafikspeicher zugreifen willst.
Also solltest du beim laden des bildes eine kopie speichern. in dieser kannst du dann die koordinaten einsetzen und erhälst die farbe des pixels.
die farbe musst du nur noch mit deinem color key vergleichen


ich hoffe ich konnte dir helfen, hab schon lange kein direct x mehr benutzt, vielleicht geht es ja einfacher Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
peterbub
JLI'ler



Anmeldedatum: 24.07.2005
Beiträge: 109

Medaillen: Keine

BeitragVerfasst am: 11.08.2005, 18:31    Titel: Antworten mit Zitat

Was wäre den das für eine DDraw oder sonstige Funktion , mit der ich Pixelinformation bekomme ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Blubb-Tec
JLI'ler


Alter: 33
Anmeldedatum: 29.03.2005
Beiträge: 171
Wohnort: Düsseldorf
Medaillen: Keine

BeitragVerfasst am: 11.08.2005, 18:48    Titel: Antworten mit Zitat

mhmh.... am besten mit Lock(kA) das gesamte Surface sperren, dann kannste auf jeden pixel zugreifen, und dann einfach den der mauspos. nehmen
_________________
www.planlos.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
peterbub
JLI'ler



Anmeldedatum: 24.07.2005
Beiträge: 109

Medaillen: Keine

BeitragVerfasst am: 11.08.2005, 18:52    Titel: Antworten mit Zitat

selbst wenn ich das gesamte Surface sperren , ich auch nicht weiss wie,

gibt es denn irgendeine funktion wie GetPixelColor(posX,posY).
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Maxim
Senior JLI'ler



Anmeldedatum: 28.03.2004
Beiträge: 249

Medaillen: Keine

BeitragVerfasst am: 11.08.2005, 18:56    Titel: Antworten mit Zitat

Ich bin jetzt nicht zu hause und kann in das Buch nicht reinschauen, aber ich glaub in dem Kapitel über Starfield solltest du was darüber finden.

Zuletzt bearbeitet von Maxim am 11.08.2005, 18:59, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Blubb-Tec
JLI'ler


Alter: 33
Anmeldedatum: 29.03.2005
Beiträge: 171
Wohnort: Düsseldorf
Medaillen: Keine

BeitragVerfasst am: 11.08.2005, 18:57    Titel: Antworten mit Zitat

jau, da drin findest du was dadrüber, da in dem Kapitel(zumindestens im ersten Buch) die Pixel der Oberfläche direkt bearbeitet werden, da sollte das stehen Wink
_________________
www.planlos.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
peterbub
JLI'ler



Anmeldedatum: 24.07.2005
Beiträge: 109

Medaillen: Keine

BeitragVerfasst am: 11.08.2005, 19:01    Titel: Antworten mit Zitat

nun da werde ich mal gucken

Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
peterbub
JLI'ler



Anmeldedatum: 24.07.2005
Beiträge: 109

Medaillen: Keine

BeitragVerfasst am: 11.08.2005, 21:14    Titel: Antworten mit Zitat

So ich hab es ausprobiert. Kann aber nur die Farben der sichtbaren Sprite anzeigen lassen , bin ich im Bereich des Colorkeys, wird mir die Farbe des Hintergrunds angezeigt. Das bekomme ich auch mit der Mouseposition color Funktion.

was muss ich noch beachten
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 11.08.2005, 22:15    Titel: Antworten mit Zitat

Du könntest vielleicht folgendes versuchen. Es ist schwierig zu erklären.

1. Du ermittelst die Mausposition relativ zum Ursprung (oben Links) des Clientbereichs deines Fensters. Oder hast du Vollbild? (Naja, das hast du ja offesnichtlich schon geschafft)

2. Du ermittelst die Position des Donut-Sprite auf der Spielfläche. (Also beispielsweise x: 5 | y: 5. Auch hier ist die obere linke Ecke der Sprite die Position)

3. Du legst vorher (beim Starten des Programms) eine Maske deiner Donut Sprite an.(am besten im systemspeicher) Die brauch nur schwarz und weiß zu enthalten.

4. Und jetzt errechnest du dir Cursorposition relativ zum Ursprung der Sprite.
An dieser Position überprüfst du die Farbe deiner Maske.

Ist der Pixel an dieser Stelle z.B. schwarz, hast du exakt den Donut angeklickt.


Zuletzt bearbeitet von KI am 11.08.2005, 22:20, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 11.08.2005, 22:17    Titel: Antworten mit Zitat

Hmm, dann hast du wahrscheinlich einfach den Backbuffer(in dem du nachher die gesamte Szene hast) gesperrt und ausgelesen.
Du solltest aber wie xardias es schon beschrieben hat das Surface des Sprites selbst sperren, das du auf Kollision testen willst.
Damit das in einigermaßen erträglicher Geschwindigkeit abläuft, solltest du zu jedem Sprite, das du später testen willst, eine Kopie im Systemspeicher anlegen(siehe xardias Wink ). Am einfachsten geht das allerdings, wenn du beim erstellen des Surfaces statt ...VIDEOMEMORY einfach ...SYSTEMMEMORY angibst(ich weiß gerade nicht den genauen Wortlaut der Konstanten).

Wenn du das so mit der Starfieldmethode machst, dann sollte er dir trotz Colorkey die richtige Farbe zurückgeben Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
peterbub
JLI'ler



Anmeldedatum: 24.07.2005
Beiträge: 109

Medaillen: Keine

BeitragVerfasst am: 12.08.2005, 00:12    Titel: Antworten mit Zitat

also ich habe jetzt die surface de einzelnen Sprites gesperrt. Krieg aber am rand oder in der mitte immernoch die hintergrund farbe.
diese surface information scheint sich nur auf den sichtbaren bereich zu beschränken.

2.mögl. eine Copy machen :
wo soll ich die den darstellen lassen ?
soll die immer mit dem orginal mit geführt werden ?
wenn sichtbar dann auch mit colorkey ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OLiver
Super JLI'ler


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 12.08.2005, 07:40    Titel: Antworten mit Zitat

Zitat:

wo soll ich die den darstellen lassen ?
soll die immer mit dem orginal mit geführt werden ?
wenn sichtbar dann auch mit colorkey ?


Nein, die soll nie dargestellt werden, sondern nur zur Kollisionserkennung dienen.
_________________
http://www.sieder25.org/ (Siedler 2 - Remake)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum