STEP in Funktionen benutzen?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Travis

Betreff: STEP in Funktionen benutzen?

BeitragDo, März 04, 2004 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte schon öfters das Problem, dass ich in einer Funktion einen Step-Befehl benötige. Dieser muss ja leider einen Konstanten Wert haben, und eine Variable als Konstant zu definieren geht leider nur aus dem Hauptprogramm heraus.

Ich brauche das z.Z. wieder für einen Mosaikeffekt für Bilder, denn ich einfach über eine Funktion ausführen.

Code: [AUSKLAPPEN]

Graphics 1024, 768, 16, 2

Global Bild = LoadImage("Harry.jpg")

; Mosaikeffekt anwenden
Const MosaikBreite = 5
Const MosaikHohe = 5
Mosaik(Bild)

; Bild zentrieren
PosX = 1024/2 - (ImageWidth(Bild)/2)
PosY = 768/2 - (ImageHeight(Bild)/2)

; Bild anzeigen
SetBuffer FrontBuffer()
DrawImage Bild, PosX, PosY

WaitKey
End


; ----- Mosaikeffekt -----
Function Mosaik(Bild)

SetBuffer ImageBuffer(Bild)
LockBuffer ImageBuffer(Bild)

For y = 0 To ImageHeight(Bild) Step MosaikHohe
 For x = 0 To ImageWidth(Bild) Step MosaikBreite
  rgb = ReadPixelFast(x, y)

  For mh = 0 To MosaikHohe-1
   For mb = 0 To Mosaikbreite-1
    WritePixelFast x+mb,y+mh,rgb
   Next
  Next

 Next
Next
   
UnlockBuffer ImageBuffer(Bild)
End Function
; ----- Mosaikeffekt -----


So muss ich ja immer zwei Variablen vor dem Funktionsaufruf definieren, anstatt sie direkt in die Funktion zu übergeben. Wie könnte man sowas lösen?
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Kryan

BeitragDo, März 04, 2004 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
step=3
For I=1 To 100
I=I+step-1
..hier kannst es verändern
Next
[edit] geht natürlich nicht mit dem namen step, nehme einfach Stufe oder sowas Wink
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!
 

OJay

BeitragDo, März 04, 2004 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst eine funktion mehr als einen parameter übergeben...

Travis

BeitragDo, März 04, 2004 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Kryan

Das funktioniert, danke. Ist zwar umständlich, aber jetzt kann ich alles bequem über eine Codezeile aufrufen.

Code: [AUSKLAPPEN]

Function Mosaik(Bild, MosaikBreite, MosaikHohe)

SetBuffer ImageBuffer(Bild)
LockBuffer ImageBuffer(Bild)

For y = 0 To ImageHeight(Bild)
 y = y + MosaikHohe-1
 For x = 0 To ImageWidth(Bild)
  x = x + MosaikBreite-1
 
  rgb = ReadPixelFast(x, y)

  For mh = 0 To MosaikHohe-1
   For mb = 0 To MosaikBreite-1
    WritePixelFast x+mb,y+mh,rgb
   Next
  Next

 Next
Next
   
UnlockBuffer ImageBuffer(Bild)
End Function


@ OJay
Klar, aber ich kann in einer Funktion keine Variablen als Konstant definieren. Die brauche ich aber für den Step-Befehl. Also hätte ich dies im Hauptprogramm machen müssen.
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group