Eine Frage zu Front/BackBuffer

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Julz

Betreff: Eine Frage zu Front/BackBuffer

BeitragSo, Dez 14, 2003 11:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Also meine Frage ist muss der Befehl setbuffer Backbuffer() in die hauptschleife des spiels oder irgendwo da vor ??? hier z.B.

Code: [AUSKLAPPEN]

APPTITLE "Sinus Kurve"
graphics 640, 480
setbuffer backbuffer()

monster = loadimage("monster.bmp")
player = loadimage("player.bmp")

pos_y = 10
x = 300
y = 300
rechts = 205
links = 203
hoch = 200
runter = 208

repeat
cls
hoehe = 100   ;<---------------------- Die Variable
i = i + 1
pos_y = pos_y + 1
sin_w = sin(i) * hoehe
drawimage monster, sin_w + 200, pos_y
if i = 641 then i = 1

if keydown(rechts) then x = x + 2
if keydown(links) then x = x - 2
if keydown(hoch) then y = y - 2
if keydown(runter) then y = y + 2
drawimage player, x, y


flip
until keydown(1)


und noch eine frage:
Wenn ich die varibale hoehe in der hauptschleife auf rnd(300) setzte dann flakert das image so rum. Ich will aber das die kurve pro durchlauf immer verschieden groß ist Question

THX schon mal
 

morszeck

Gast

BeitragSo, Dez 14, 2003 11:25
Antworten mit Zitat
Der befehl SetBuffer BackBuffer() muss nur am Anfang hin! Nicht in die Hauptschleife!

Julz

BeitragSo, Dez 14, 2003 11:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Axo ok aber warum ich will den buffer doch am anfang jeden durchlaufs auf backbuffer setzten um da rein zu malen/schreiben sonst was und am ende wird er gezeigt also geflipt

und was ist mit der anderen frage auch ne idee ???

bruZard

BeitragSo, Dez 14, 2003 11:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn Du am Anfang Backbuffer() setzt, verwenden alle Grafikbefehle _immer_ den Backbuffer zum zeichnen, da musst Du Dich nicht drum kümmern.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Julz

BeitragSo, Dez 14, 2003 11:34
Antworten mit Zitat
Benutzer-Profile anzeigen
axo ok danke und hätte vielleicht jemand auch ne antwort auf meine zweite frage steht ganz unten in meinem ersten text

Hubsi

BeitragSo, Dez 14, 2003 12:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Pseudo:
Code: [AUSKLAPPEN]
hoehe=hoehe+speed
if hoehe=min_hoehe then speed=rand(1,3)
if hoehe=max_hoehe then speeed=rand(-3,-1)

So oder so ähnlich Smile
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

hamZta

Administrator

Betreff: hm

BeitragSo, Dez 14, 2003 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
ja klar es flackert rum weil du jeden durchlauf die hoehe neu veränderst
1 Durchlauf = Das Bild wird 1 mal gezeichnet

veränder die variable nich jeden durchlauf!
Blog.

Julz

BeitragSo, Dez 14, 2003 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
@hamZta wie oft soll ich dann die variable ändern ???

hamZta

Administrator

Betreff: ok

BeitragSo, Dez 14, 2003 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn ich dich recht verstehe soll dein monster im kreis laufen!
speichere dir die Startposition.
du überprüfst die aktuelle position mit der gespeicherten.
Wenn sie übereinstimmen dann berechnest du die hoehe mit Rnd neu.

ich hoffe ich hab dich richtig verstanden
Blog.

Julz

BeitragSo, Dez 14, 2003 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn ich das richtig verstanden hab dann meinst du das so

Code: [AUSKLAPPEN]

APPTITLE "Sinus Kurve"
graphics 640, 480
setbuffer backbuffer()

monster = loadimage("monster.bmp")
player = loadimage("car.bmp")

hoehe = 300
dim bumm(20,2)
pos_y = 10
x = 300
y = 300
rechts = 205
links = 203
hoch = 200
runter = 208

repeat

cls


if keydown(rechts) then x = x + 2
if keydown(links) then x = x - 2
if keydown(hoch) then y = y - 2
if keydown(runter) then y = y + 2
drawimage player, x, y

if keyhit(57) then
schuss = schuss + 1
if schuss = 21 then schuss = 1
bumm(schuss,0) = 1
bumm(schuss,1) = x
bumm(schuss,2) = y
endif

for l = 1 to 20
if bumm(l,0) = 1 then
plot bumm(l,1), bumm(l,2)
bumm(l,2) = bumm(l,2) - 20
endif
next

i = i + 1
pos_y = pos_y + 1
sin_w = sin(i) * hoehe
drawimage monster, sin_w + 200, pos_y
if i = 641 then                  ; Hier ist die stelle
i = 1                               ; allerdings funst
hoehe = rnd(300)            ; das nicht so ganz
endif                              ; ka warum


flip
until keydown(1)


und wie kann ich den die genaue position des monsters ermitteln um eine kollision zu erstellen ???

WEBLink

BeitragDi, Dez 16, 2003 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst du den Code bitte ein paar Komentare hinzufügen? Hab grad kein BB ums zu probieren.
 

Torix

Gast

BeitragMi, Dez 17, 2003 10:32
Antworten mit Zitat
hi.
merke dir nach dem setzen deiner grafik die position.
beim nächsten durchlauf fragst du vor dem setzen der
grafik einfach mit if ab ob der wert sich um 1 + oder -
verändert hat.wenn ja setzen.wenn nicht......
und das flackern ist weg. Exclamation

dann würde ich nicht jedes mal den wert sin nicht neu errechnen lassen.
sondern aus einer tabelle erfragen welche ich am anfang meines prg´s
1x erzeugt habe.ist schneller. Exclamation

dann schleppe nicht sooooo viele komma stellen mit dir rum.die brauchst du ja nicht wiklich zum setzen auf dem bildschirm.
bringt auch noch mal geschwindigkeit. Exclamation

das die ganze sache nicht flackert bau eine dyna. warte schleife ein.
z.b. über den timerbefehl. damit dein spiel wenn es fertig ist auf jedem rechner gleich schnell läuft. Exclamation

gruß torix

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group