 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Crumbler
Anmeldungsdatum: 12.10.2005 Beiträge: 15
|
Verfasst am: 13.09.2007, 18:36 Titel: Sprite zerstört trotz Hintergrund-Array den Hintergrund |
|
|
Hallo!
HIER EIN RIESEN-POST FÜR EIN RIESEN PROBLEM VON MIR
Bitte gebt mir keine Antworten wie "Forensuche bemühen" oder "MonsterFAQ zu rate ziehen", hab ich heute alles schon hinter mir.
Ich versuche mich seit gestern in Sprites - leider nur mit halbem Erfolg.
Nach eingehender Studie des MonsterFAQ, verzweifelter Suche nach nem Forum, dass genau oder wenigstens fast genau mein Problem behandelt und mehrerer Stunden Nachgrübeln resigniere ich nun vor folgendem:
Ich Speichere ein einfaches Viereck (LINE (1,1)-(10,10), 4, BF) in einem Array.
Dann möchte ich es über einen einfachen blauen Hintergrund laufen lassen, das funktioniert aber nicht richtig, entweder es flimmert, oder aber es zerstört den Hintergrund.
Ich habe auch dazu die Beiträge aus'm MonsterFAQ und ein paar tuts studiert, blicke aber nicht durch...
Unbewegliches Sprite - kein Problem, aber sobald ich es bewegen will check ichs nicht mehr...
Ich poste einfach mal den Code:
PS: ICH KANN MIR JA SCHON WENN ICH MEINEN CODE ANGUCKE DENKEN, DASS DAS FLIMMERN MUSS. ICH LEGE JA ZWEI UNTRANSPARENTE SPRITES UNMITTELBAR HINTEREINANDER IMMER WIEDER IM WECHSEL ÜBEREINANDER, ABER ICH WEIß ECHT NICHT, WIE ICH DAS UMFORMEN MUSS DAMIT ES FUNZT!!!
--------------------------------------------------------------------------------------
'Arrays festlegen
DIM hintergrund%(200)
DIM viereck%(200)
CLS
SCREEN 12
'Viereck generieren und ins Array abspeichern
LINE (1, 1)-(10, 10), 4, BF
GET (1, 1)-(10, 10), viereck%
CLS
' Hintergrund generieren
PAINT (639, 479), 9
'Bewegungs-Schleife
FOR bewegung% = 1 TO 400
'Brems-Schleife
FOR stopp% = 1 TO 32000: NEXT stopp%
'Hintergrund ins Array speichern
GET (1, 1)-(10, 10), hintergrund%
'Beide Arrays ins Bild einfgen
'Hab auch schon (blindlinks) alle m”glichen Kombinationen von AND, OR, XOR ausprobiert...
PUT (bewegung%, 1), viereck%, PSET
PUT (bewegung%, 1), hintergrund%, PSET
NEXT bewegung%
--------------------------------------------------------------------------------------
Danke schon mal im Voraus! |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 13.09.2007, 18:51 Titel: |
|
|
Der Grund ist recht einfach... frueher waren die rechner etwas langsamer, da haette man die problematik praktisch beobachten koennen
diese beiden Zeilen:
Code: |
PUT (bewegung%, 1), viereck%, PSET
PUT (bewegung%, 1), hintergrund%, PSET |
die erste setzt das kleine viereck, die naechste loescht es aber sofort wieder....
du braucht noch zweil weitere variablen, die eine ALTE Position, des zuletzt gespeicherten hintergrunds festhalten... und der wird dann BEVOR du das kleine viereck anzeigst gesetzt....
musste es leider etwas anpassen
Code: |
'--------------------------------------------------------------------------------------
'Arrays festlegen
DIM hintergrund(200) as byte
DIM viereck(200) as byte
CLS
SCREEN 12
'Viereck generieren und ins Array abspeichern
LINE (1, 1)-(10, 10), 4, BF
GET (1, 1)-(10, 10), viereck
CLS
' Hintergrund generieren
PAINT (639, 479), 9
'Bewegungs-Schleife
GET (1, 1)-(10, 10), hintergrund
dim bewegungalt as integer=1
FOR bewegung as integer = 1 TO 400
'Brems-Schleife
'FOR stopp as integer = 1 TO 32000: NEXT stopp
sleep (10)
'Hintergrund ins Array speichern
'Beide Arrays ins Bild einfgen
'Hab auch schon (blindlinks) alle m”glichen Kombinationen von AND, OR, XOR ausprobiert...
PUT (bewegungalt, 1), hintergrund, PSET
GET (bewegung, 1)-(bewegung+10, 10), hintergrund
PUT (bewegung, 1), viereck, PSET
bewegungalt=bewegung
NEXT bewegung
sleep
|
_________________
 |
|
Nach oben |
|
 |
Crumbler
Anmeldungsdatum: 12.10.2005 Beiträge: 15
|
Verfasst am: 13.09.2007, 19:07 Titel: |
|
|
Danke für die schnelle Antwort, aber...
So ganz check ich das immer noch nicht, mit den ZWEI variablen...
Kennst du vielleicht ein Tutorial das sich mit dem Thema der sich bewegenden Sprites die den Hintergrund zerstören beschäftigt und das du mir empfehlen könntest???
Wäre echt nett wenn du mir da was nennen könntest!
Mfg
Crumbler |
|
Nach oben |
|
 |
Crumbler
Anmeldungsdatum: 12.10.2005 Beiträge: 15
|
Verfasst am: 13.09.2007, 19:08 Titel: KOMANDO ZURÜCK! |
|
|
Hatte die zweite antwort nicht gesehen...
Sorry... |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 13.09.2007, 19:13 Titel: |
|
|
das mit den Zwei Variablen meinte ich fuer die X und die Y Position (hatte Dein Beispiel bis dahin nicht ganz durchgesehen) in deinem Beispiel reichte ja auch eine Alte Position...
Ein Tutorial kann ich leider nicht empfehlen (vielleicht jemand anders hier)
Aber das Prinzip ist relativ einfach... der Hintergrund muss gespeichert werden, bevor das Sprite gesetzt wird... soweit so gut...
anschliessend wird das sprite gesetzt.....
beim naechsten mal muss zuerst der alte hintergrund gesetzt werden, dann muessen wir den neuen hintergrund speichern und dann wieder das sprite _________________
 |
|
Nach oben |
|
 |
Crumbler
Anmeldungsdatum: 12.10.2005 Beiträge: 15
|
Verfasst am: 13.09.2007, 19:35 Titel: |
|
|
Danke!
Auf ne ähnliche Lösung war ich heute Vormittag auch gekommen.
Hab das jetz so durchlaufen lassen wie du es modifiziert hast, flimmert aber immer noch extrem.
(Ich hab das Viereck mal vergrößert, da sieht man es ganz stark)
Kennst du vielleicht doch noch n tutorial wo ich mir das ganze nochmal anschauen kann?
Ich hab vor längerer Zeit mal eins gesehen, find jetz wo ichs brauch aber kein einziges!
Danke nochmal! |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 13.09.2007, 19:46 Titel: |
|
|
ganz korrekt kriegt man Transparente SPrites mit einer kombination aus AND und XOR hin...
wenn ich mich recht erinnere, geht's sorum:
Code: |
PUT(x,y), maske, AND
Put(x,y), Sprite, XOR
|
dabei hat das Sprite einen schwarzen hintergrund. dort, wo im Sprite Pixel (ungleich scwharz) sind, ist die Maske Schwarz, dort wo das Sprite ist, ist die Maske Weiß. Somit bekommst du einen Transparenten Hintergrund. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 13.09.2007, 19:52 Titel: |
|
|
muss ein recht 'langsamer' rechner sein
denn diese methode war bisher immer 'ausreichend'
es gaebe da noch zwei weitere moeglichkeiten...
die eine waere... das du einen buffer benutzt der die gesamte groesse ueberbruckt, zwischen der alten position und der neuen position und dann das gesammte auf den screen bringst... das sollte das flimmern erst einmal vermeiden.. allerdings kann man damit im wahrsten sinne keine grossen spruenge machen, da die 640k grenze recht schnell erreicht ist... die andere Methode waere sehr viel einfacher falls QB das unterstuetzt... Page Flipping, ein arbeiten auf mehreren Bildschirmseiten.....
dazu muesste aber mehr in der QB hilfe oder referenz stehen, oder es moege sich ein QBler dazu aeussern  _________________
 |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 13.09.2007, 19:59 Titel: |
|
|
Ich weiß, dass das jetzt alles wieder nur ermahnend ist...
Aber bitte poste im richtigen Forum und mit angemessener Formatierung.
Hunderte Frage- und Ausrufezeichen und ewige Fett- und Großschreibung ist einfach nur unnötig und hebt nicht mehr hervor, dass dein Problem wichtiger ist, als Andere!
Danke für diese kleine Spende... _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Crumbler
Anmeldungsdatum: 12.10.2005 Beiträge: 15
|
Verfasst am: 13.09.2007, 20:23 Titel: |
|
|
@ Mao:
Sorry, ist erst mein dritter Post (überhaupt in einem Forum). Ich wusste nicht, dass man das nach Forenthema sortiert posten kann. Und mit der Fettschrift und so:Ich geb ja zu, war im Eifer des Gefechts ein bisschen viel.
@Eternal_pain:
Der Rechner sollte für QBasic mit 2,8Ghz eigentlich ausreichen, denke ich.
@Jojo:
Wenn das Sprite still steht, funktioniert das auch recht gut mit der Transparenz, aber eben wenn es sich über den Hintergrund bewegen soll nicht... |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
|
Nach oben |
|
 |
|
|
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.
|
|