Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

pixelgenaue kollisionen a la c64?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Off-Topic-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
mkfezzo



Anmeldungsdatum: 16.08.2007
Beiträge: 25

BeitragVerfasst am: 07.02.2009, 11:33    Titel: pixelgenaue kollisionen a la c64? Antworten mit Zitat

Hallo zusammen!

Mich beschäftigt mal wieder das thema pixelgenaue kollisionen von grafiken und habe natürlich auch schon ne menge ideen vermurkst und wieder fallen gelassen. Mit anderen worten: ich kriegs net auf die reihe. geht vermutlich einigen (forumbeiträge natürlich gelesen zwinkern)) so. Möchte aber mal eine frage geklärt wissen, bei der mir erst recht der nötige hintergrund fehlt. Habe damals am c64 mit basic angefangen (ja ich bin alt genug) zwinkern. Der c64 hatte damals nen VIC (so hiess damals glaub ich der grafikchip) mit folgenden vorzügen: man konnte anhand eines registers feststellen, ob zb. ein sprite (verschiebbares grafikobjekt) mit einem anderen sprite oder gar dem hintergrund schnittstellen hatte. das funzte meines erachtens soger wenn nur ein pixel überlappte. Kann man soetwas "nachbauen" also programmiertechnisch? Irgendwie find ich, das diese kiste damals echt ihrer zeit voraus war zwinkern)))) -verglichen mit den sehr komplizierten kollisionsabfragen die man sonst so verstehen soll. Ist es machbar soetwas selbst zu basteln? Also ich meine mit profiwissen, was hier ja genügend vorhanden ist? Danke für eure anregungen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 07.02.2009, 12:30    Titel: Antworten mit Zitat

Eine gute Frage. Evtl. noch mitteilen, ob QB oder FreeBasic, dann verschiebe ich es ins entsprechende Forum.

Sonst von mir ein geeigneter Ansatz in QB skizziert: Dort würde ich von beiden Sprites AND-Masken erstellen, welche mittels PUT auf eine nicht angezeigte Bildschirmseite (=> SCREEN 7 empfohlen!) im korrekten relativen Abstand gezeichnet werden (übrigens nur nötig, falls Rechteckbereiche sich grundsätzlich überlappen). => Umriss des kleineren Sprites mit POINT() abtasten, ob es gesetzte Pixel (=haben 1 AND 1=1 beim PUT-Zeichnen bewirkt!) gibt.

Lässt sich mit etwas Geschick in eine FUNCTION-Prozedur packen, die als Rückgabewert -1 (True, d.h. Kollision=Ja) bzw. 0 (False, d.h. nicht kollidierend) zurückgibt.

Übrigens kenne ich diese Hardware-Kollisionsabfrage vom C 64 und später auch Amiga ebenfalls noch bestens. :-)

/edit: Inzwischen in QB ein dem obigen Konzept entsprechendes Demoprogramm erstellt:

http://beilagen.dreael.ch/QB/KOLLDEMO.BAS

Enthält nun exakt eine derartige FUNCTION-Prozedur => man muss ihr also eine "Sudel"-Bildschirmseite zur Verfügung stellen, wo im Bedarfsfall (Überlappung festgestellt) beide AND-Masken übereinandergezeichnet wird (man beachte die OR-Verknüpfung, wo wegen 0 OR 0 = 0 [=beide Figuren haben hier Pixel und damit Kollision!]). Ausserdem wird optimierenderweise nur das effektiv überlappende Teilrechteck mit POINT() abgescannt.

Die beiden Sprites können dort mit den Pfeiltasten bewegt werden. Ausserdem enthält dieses Beispiel die Bildschirmseitentechniken aus dem Animationsartikel.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
isiprimax



Anmeldungsdatum: 02.01.2009
Beiträge: 77

BeitragVerfasst am: 10.02.2009, 15:20    Titel: Antworten mit Zitat

Hab mir eine kollisons abfrage in FB programmiert. Wen du interesse hast geb ich sie dir gerne.

mfg
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Off-Topic-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
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.

 Impressum :: Datenschutz