Witam. W ramach ćwiczeń postanowiłem napisać sobie program wczytujący cyfry z pliku a nastepnie wyswietlający bitmapy jeżeli cyfra to 1 i nic nie robiacy jezeli to cyfra 0 (biblioteka allegro). Wszystko szło gładko gdy stworzyłem tablice jednowymiarową i wczytałem dane tylko z jednej lini pliku. Jednak problemy przywitaly sie ze mną gdy postanowilem poszerzyc swoja tablice o jeden wymiar. Tylko jakie problemy ? Tego nie wiem bo kompilator uważa, że z kodem wszystko w porządku jednak sam windows próboje mnie namówić na wysłanie raportu o jego błędach, czytałem go ze 100 razy próbowałem znaleźć błąd ale nie moge jakoś na niego wpaść, może wy mi w tym pomożecie ?
#include <cstdlib>
#include <iostream>
#include <allegro.h>
#include <fstream>
#include <string>
#include <stdlib.h>
volatile long speed = 0;
void increment_speed()
{
speed++;
}
END_OF_FUNCTION(increment_speed);
LOCK_VARIABLE(speed);
LOCK_FUNCTION(increment_speed);
class cBrick
{
public:
int x,y;
int szerokosc; //poki co zamiast podawac zmienna dlugosci na sztywno ja wpisywalem
BITMAP *bBrick;
void show(BITMAP *bufor,int x,int y)
{ masked_blit(bBrick, bufor, 0,0, x, y, bBrick->w, bBrick->h);}
};
void ruch(int x, int y);
using namespace std;
int main()
{
allegro_init();
install_keyboard();
set_color_depth(32);
set_gfx_mode(GFX_AUTODETECT,1280,1024,0,0);
//deklaracje zmiennych
install_timer();
install_int_ex(increment_speed, BPS_TO_TIMER(100));
BITMAP *bufor = NULL;
int map[20][5],ilosc[20],all=0,o=0;
string tekst;
fstream plik;
//definicje zmiennych
plik.open("mapa.txt", ios::in | ios::binary);
bufor = create_bitmap(1280,1024);
while(!plik.eof())
{
getline(plik,tekst);
for(int i=0;i<tekst.length();i++)
{
if(tekst[i] == '1'){map[i][o]=1;ilosc[o]++;all++;} //ilosc[o] czyli ilosc cyfr w jednej lini i all czyli laczna ilosc cyfr
if(tekst[i] == '0'){map[i][o]=0;ilosc[o]++;all++;}
}
o++;
}
cBrick *brick= new cBrick[all]; //tworze tyle brick'ow ile jest cyfr a nie ile jedynek ale to rozwiaze potem
for(int z=0;z<=o;z++)
{
for(int i=0;i<=ilosc[z];i++)
{
if(map[i][z]==1)
{
brick[i].bBrick = load_bmp("brick.bmp",default_palette);
brick[i].szerokosc=72;
brick[i].x=i*brick[i].szerokosc;brick[i].y=70*z; //70*z liczba lini czyli 0,70,140 itp
}
}
}
while( !key[KEY_ESC])
{
while( speed > 0)
{
speed--;
}
clear_to_color(bufor, makecol(0,0,0));
for(int z=0;z<=o;z++)
{
for(int i=0;i<=ilosc[z];i++)
{
if(map[i][z]==1)brick[i].show(bufor,brick[i].x,brick[i].y);
}
}
blit( bufor, screen, 0,0,0,0,1280,1024);
}
remove_int(increment_speed);
destroy_bitmap(bufor);
allegro_exit();
return 0;
}
END_OF_MAIN();