Type+WritePixelFast = Error !?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ToeB

Betreff: Type+WritePixelFast = Error !?

BeitragMi, März 14, 2007 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu dem Spiel "FireWorkCreator" ( Ich wollte es schneller machen mit WritePixelFast(x,y,color) stat Plot x,y. Klappt auch soweit, aber wenn es mehr als 2-5 Punkte sind ( Punkte = Explosionen ) dann meint der immer "Illigal Memory Adress" und hängt sich auf. Woran könnte das liegen ?

Code: [AUSKLAPPEN]

Type p
Field x#
Field y#
Field ri#
Field s#
Field dis#
Field gr#
Field col
End Type


;Schleife usw. ...

For ra.ra = Each ra :andera Type ....
If ra\bomp = True Then
StopChannel(ra\ch)
PlaySound Explo
For i = 10 To Rand(minP,maxP)
p.p = New p
p\x = ra\x+5
p\y = ra\zy+5
p\col = 255*$1000000 + ra\r*$10000 + ra\g*$100 + ra\b
p\ri = Rand(0,359)
p\s# = Rnd(0.0,1.0)
p\dis = 128
Next
Delete ra.ra
Delete f.f
EndIf

Dann die For Schleife mit "p.p" :

For p.p = Each p
If p.p <> Null
LockBuffer BackBuffer()
WritePixelFast(p\x,p\y,p\col)
UnlockBuffer BackBuffer()

p\dis = p\dis - 2
p\x# = p\x# + Sin(p\ri#)*(p\s#)
p\y# = p\y# + Cos(p\ri#)*(p\s#)+p\gr#
p\gr# = p\gr# + 0.02
If p\dis# < -128 Then
Racket = False
Delete p.p
Bomp = False
EndIf
Particle = Particle + 1
EndIf
Next

Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMi, März 14, 2007 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Wahrscheinlich schreibt Writepixelfast ausserhalb des Buffers!
Versuch es mal mit Writepixel, da ist die Überprüfung mit drin
[BB2D | BB3D | BB+]

ToeB

BeitragMi, März 14, 2007 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
hey danke ! Jaetzt gets !
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

Dreamora

BeitragMi, März 14, 2007 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
2 Dinge:

1. Mach das Lockbuffer vor und nach der Schleife. Wenn du das in der schleife machst wird es 100 bis 10000 mal langsamer als Plot

2. Ich sehe da nirgends einen check der garantiert das p\x und p\y nicht <0 werden können noch das sie grösser als graphicsheight() -1 bzw. graphicswidth() - 1 werden können. Wenn du jedoch versuchst da rein zu zeichnen wirds nen crash geben.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Silver_Knee

Betreff: Fragen und anregungen

BeitragMi, März 14, 2007 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Zusätzlich:

1. an deinem Code Fehlt ein Next Wink
2. wo ist denn dein IMA mach mal den debug an...

ToeB

BeitragMi, März 14, 2007 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei "WritePixelFast" Wink ...



~Edit~

Wie mache ich das bei WritePixel(p\x,p\y,p\col) dass die farbe imma dunkler wird, z.b.:
1...2...3...4... usw...

Eingeproggt

BeitragMi, März 14, 2007 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
p\col verändern.
die Farbe für die WritePixel-Befehle sind EINE Integer-Zahl, die folgender massen aufgebaut ist:
Code: [AUSKLAPPEN]
col=r*256*256+g*256+b

und man kann diese Formel auch schneller machen, indem man so rechnet:
Code: [AUSKLAPPEN]
col=r Shl 16 + g Shl 8 + b

Zum Verdunkeln einfach die Werte rgb runtersetzen.
Alle Angaben ohne Gewähr! Hab ich grad aus dem Gedächtnis geschrieben.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group