Flammeneffekt (für kalte Winterabende)

Previous topic - Next topic

Quentin

mich interessiert, wie man ohne Sprite mehr oder minder realistische Flammeneffekte auf dem Bildschirm zaubern kann.
Das hier habe ich bei

http://www.blitzbase.de/quellcode/feuer.bb

abgekupfert, wobei ich zugeben muss, daß ich weder den Ablauf gänzlich verstehe noch mit dem Ergebnis sonderlich zufrieden bin. Aber immerhin ein Anfang.

Code (glbasic) Select
// --------------------------------- //
// Project: fire
// Start: Wednesday, January 02, 2008
// IDE Version: 5.110


height = 100
width = 100
startx = 270
starty = 190


DIM fire[width][height]
maxcolor = 127

FOR i = 0 TO width - 1
  fire[i][height-1] = 70
NEXT

WHILE TRUE
  Kamin()
  FOR i = 0 TO height - 2
    FOR k = 0 TO width - 1
      fire[k][i] = fire[k][i+1] - 2
      IF fire[k][i] > 0 THEN SETPIXEL startx + k, starty + i, fire[k][i]
    NEXT
  NEXT
  FOR i = 0 TO width - 1
    INC fire[i][height-1], RND(20) - 10
  NEXT
  FOR i = 1 TO width - 2
    fire[i][height-1] = (fire[i-1][height-1] + fire[i][height-1] * 3 + fire[i+1][height-1]) / 5
  NEXT
  FOR i = 0 TO width - 1
    IF fire[i][height-1] > maxcolor THEN fire[i][height-1] = maxcolor
    IF fire[i][height-1] > 0 THEN SETPIXEL startx + i, starty + height-1 * 2, fire[i][height-1]
  NEXT
  SHOWSCREEN
WEND


// ------------------------------------------------------------- //
// ---  KAMIN  ---
// ------------------------------------------------------------- //
FUNCTION Kamin:
 
  DRAWRECT 0, 0, 680, 480, RGB(255, 255, 255)
  DRAWRECT 260, 180, 120, 200, RGB(0, 0, 255)
  DRAWRECT startx, starty, width, height, RGB(0, 0, 0)

ENDFUNCTION // KAMIN

Kitty Hello

Minion hat mal Feuer gemacht in seinem SpaceInvaders (GLInvaders - im Showroom)

Quentin

habs gesehen. Sehr schöner Effekt. Ich vermute mal ein Partikelsystem dahinter. Für größere Flammenbereiche eignet sich dieses Gepixle auch sicherlich nicht.