Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Tuliefekti ja mustat viivat

kayttaja-3842 [25.06.2007 14:18:32]

#

Joo eli tekasi tuon tuli effecti oppaan avulla oman tuli effecti. Tuli toimii muuten todella hyvin, mutta jostain syystä tulessa on joka toisessa rivissä musta viiva. Mistä tämä voisi johtua?

Lumpio [25.06.2007 14:36:29]

#

Sori, tällä hetkellä on vähän hankala vastata kun kristallipallo on huollossa. Mitäs jos näyttäisit vähän esim. koodias?

kayttaja-3842 [25.06.2007 16:43:01]

#

Lumpio kirjoitti:

Sori, tällä hetkellä on vähän hankala vastata kun kristallipallo on huollossa. Mitäs jos näyttäisit vähän esim. koodias?

Ainiin tosiaankin, koodi unohtu pastee. :D

Noh tässä on main.cpp, jossa luulen vian sijaitsevan. Koittakaa saada selvää.

main.cpp

#include <SDL/SDL.h>
#include <math.h>
#include "funktiot.h"

enum{
NLEVEYS = 640,
NKORKEUS = 480
};

int puskuri1[NLEVEYS][NKORKEUS];
int puskuri2[NLEVEYS][NKORKEUS];

int kylmakohta = 0;

int main(int argc,char * argv[]){

if(!alustaSDL()){
 SDL_Quit();
 return 0;
}

SDL_Surface *kkartta = SDL_LoadBMP("kylmennys.bmp");

SDL_Surface *kylma;

kylma = SDL_CreateRGBSurface(SDL_SWSURFACE, kkartta->w, kkartta->h, 32, 0, 0, 0, 0);

    bool pois = false;

    SDL_Event tapahtuma;



    while(!pois){
      SDL_PollEvent (&tapahtuma);
      piirrakuva(kylma,kkartta,0,0);

          for (int i = 0; i < 640; i++)
{
    puskuri1[i][NKORKEUS-1] = 255;
    puskuri1[i][NKORKEUS-1] = 255;
}

  lukitsepinta(naytto);

      for (int x = 1; x < NLEVEYS-1; x++)
{
    for (int y = 1; y < NKORKEUS-1; y++)
    {

int c1 = puskuri1[x+1][y+1];
int c2 = puskuri1[x-1][y-1];
int c3 = puskuri1[x-1][y+1];
int c4 = puskuri1[x+1][y-1];

int uusivari = (c1 + c2 + c3 + c4) / 4;

Uint32 c;

//puskuri2[x][y-1] = uusivari;



if (y - kylmakohta >= 0){
c = OtaPixelivari(kylma,x,y - kylmakohta);
}else{
c = OtaPixelivari(kylma,x,NKORKEUS + y - kylmakohta);
}

uusivari -= ((c >> 16) & 0xff);

if (uusivari < 0){ uusivari = 0; }

puskuri2[x][y-1] = uusivari;

    }
}


    for (int x=1;x<NLEVEYS-1;x++)
        for (int y=1;y<NKORKEUS-1;y++)
      {
            piirrapixeli(naytto,x,y,paletti[puskuri2[x][y]]);

            puskuri1[x][y] = puskuri2[x][y];
        }


    kylmakohta += 5;
    if (kylmakohta >= NKORKEUS){ kylmakohta = 0; }

      avaapinta(naytto);

      SDL_Flip(naytto);
                 }

 SDL_Quit();
 return 0;
    }

kayttaja-3842 [25.06.2007 18:27:06]

#

Sain koodin toimimaan kun paransin fileteriä. Eli otin myös ylä ala vasen ja oikee reunojen väri arvot.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta