szachy w allegro...

0

Witam. Potrzebuje pomocy! Robie szachy w c++ w użyciem allegro. Problem tkwi w strukturze z wykorzystaniem funkcji design2, która wyświetla odpowiedni obrazek w odpowiednim miejscu. Pisze pod winem w visualu. Pozdrawiam.

enum ChessMans //mój typ wykorzystywany w strukturze 
{
	null,
	Bp, 
	Bw,Bl,Bs,Bking,Bqueen,
	Cp,
	Cw,Cl,Cs,Cking,Cqueen
};
struct pole_all
{
	int x;
	int y;
	ChessMans figura;
};
int main()
{
	int A = 301;
	int int1 = 451;
	
	pole_all A1={
		A,
		int1,
		Bw
	};
	  BITMAP *Bpion = NULL;//deklaracja wskaźnika na strukturę bitmap z allegro
	 design2(A1, *Bpion);//moja funkcja która ma wyświetlać bitmape w odpowiednim miejscu na ekranie (kod jej poniżej)
	 destroy_bitmap(Bpion);//zwalnianie miejsca w pamięci – sprzątanie ;p

  return(0);
}

//Plik design.h poprzez #include "design.h"

#include <allegro.h>

//funkcja renderingu odpowiednich figur
bool design2(pole_all A1, BITMAP *Bpion)
{
	if(A1.figura!=null)
	{
		if (A1.figura==Bpion)
		{
			masked_blit(Bpion, screen, 0,0, A1.x,A1.y, Bpion->w, Bpion->h);//wyświetlenie bitmapy
		}
		if(A1.figura==Bpion)
		{
			masked_blit(Bpion, screen, 0,0, A1.x,A1.y, Bpion->w, Bpion->h);
		}
	}//if(A11.figura!=null)
	return true;
}
0
 
BITMAP *Bpion = NULL;//deklaracja wskaźnika na strukturę bitmap z allegro
...
masked_blit(Bpion, screen, 0,0, A1.x,A1.y, Bpion->w, Bpion->h);//wyświetlenie bitmapy

Wyswietlasz...nic. Wczytaj obrazek zanim go wyswietlisz ;)

0

tak zapomniałem. nie tylko o wczytaniu bitmap. ale i o inicjacji allegro i wyłączeniu silnika.

teraz kod trochę poprawiony. ale nadal się wysypuje. :(

oto kod poprawiony:

int main()
{
	allegro_init();
	install_keyboard();
	set_color_depth(16);
	set_gfx_mode(GFX_AUTODETECT_WINDOWED,800,600,0,0);
	clear_to_color(screen, makecol(128,128,128));

	int A = 301;
	int int1 = 451;	

	pole_all A1={	
		A,
		int1,
		Bw
	};	
	BITMAP *Bpion = NULL;
	Bpion = load_bmp("01.bmp",default_palette);
	if (!Bpion)
	{
		set_gfx_mode(GFX_TEXT,0,0,0,0);
		allegro_message("nie mogę załadować obrazka Bpion !");
		allegro_exit();
		return 0;
	}  
	//wczytanie obrazka
	design2(A1, *Bpion);
	destroy_bitmap(Bpion);
        allegro_exit();
        return 0;
}
END_OF_MAIN();
0

dodaje te błędy jest ich 10 może to pomoże...

'pole_all' : undeclared identifier
syntax error : missing ')' before identifier 'A1'
syntax error : ')'
syntax error : missing ';' before '{'
'{' : missing function header (old-style formal list?)
syntax error : missing ';' before identifier 'A1'
'A1' : undeclared identifier
syntax error : '{'
syntax error : missing ';' before '{'
syntax error : missing ';' before '}'

0

co do tych bledow to wyraznie pisze co jest zle. Chociazby to:
'pole_all' : undeclared identifier
nie deklarujesz nigdzie struktury pole_all.
Wrzucasz za malo kodu, tylko jedna funkcje main. Zobacz sobie czy masz dobrze zaimplementowana strukture pole_all

0

dzięki z pomoc. poradziłem sobie. jak bym miał jeszcze jakieś problemy z czymś innym napisze. pozdrawiam.

0

funkcja i jej implementacja:

bool design(pole A1, BITMAP *Bpion, BITMAP *Bcastle, BITMAP *Bskoczek, BITMAP *Bbiskup, BITMAP *BBking, BITMAP *Bquen, BITMAP *pion, BITMAP *castle, BITMAP *skoczek, BITMAP *biskup, BITMAP *king, BITMAP *quen)
{
	if(A1.figura!=null)
	{
		if(A1.figura=Bp)
		{
			masked_blit(Bpion, screen, 0,0, A1.x,A1.y, Bpion->w, Bpion->h);		
		}
		if(A1.figura=Bw)
		{
			masked_blit(Bcastle, screen, 0,0, A1.x,A1.y, Bcastle->w, Bcastle->h);
		}
		if(A1.figura=Bl)
		{
			masked_blit(Bbiskup, screen, 0,0, A1.x,A1.y, Bbiskup->w, Bbiskup->h);
		}
		if(A1.figura=Bs)
		{
			masked_blit(Bskoczek, screen, 0,0, A1.x,A1.y, Bskoczek->w, Bskoczek->h);
		}
		if(A1.figura=Bking)
		{
			masked_blit(BBking, screen, 0,0, A1.x,A1.y, BBking->w, BBking->h);
		}
		if(A1.figura=Bqueen)
		{
			masked_blit(Bquen, screen, 0,0, A1.x,A1.y, Bquen->w, Bquen->h);
		}
		if(A1.figura=Cp)
		{
			masked_blit(pion, screen, 0,0, A1.x,A1.y, pion->w, pion->h);
		}
		if(A1.figura=Cw)
		{
			masked_blit(castle, screen, 0,0, A1.x,A1.y, castle->w, castle->h);
		}
		if(A1.figura=Cl)
		{
			masked_blit(biskup, screen, 0,0, A1.x,A1.y, biskup->w, biskup->h);
		}
		if(A1.figura=Cs)
		{
			masked_blit(skoczek, screen, 0,0, A1.x,A1.y, skoczek->w, skoczek->h);
		}
		if(A1.figura=Cking)
		{
			masked_blit(king, screen, 0,0, A1.x,A1.y, king->w, king->h);
		}
		if(A1.figura=Cqueen)
		{
			masked_blit(quen, screen, 0,0, A1.x,A1.y, quen->w, quen->h);
		}
		return true;
	}//if(A1.figura!=null)
	else 
		return false;
}

void destroybmp()
{
	destroy_bitmap(Bpion);	
	destroy_bitmap(Bcastle);
	destroy_bitmap(Bskoczek);
	destroy_bitmap(Bbiskup);
	destroy_bitmap(BBking);
	destroy_bitmap(Bquen);
	destroy_bitmap(pion);
	destroy_bitmap(castle);
	destroy_bitmap(skoczek);
	destroy_bitmap(biskup);
	destroy_bitmap(king);
	destroy_bitmap(quen);
}

dekleracja bitmap:

BITMAP *Bpion = NULL;  
BITMAP *Bcastle = NULL; 
BITMAP *Bskoczek = NULL; 
BITMAP *Bbiskup = NULL;
BITMAP *BBking = NULL; 
BITMAP *Bquen = NULL; 
BITMAP *pion = NULL;  
BITMAP *castle = NULL; 
BITMAP *skoczek = NULL; 
BITMAP *biskup = NULL;
BITMAP *king = NULL; 
BITMAP *quen = NULL; 

design(A1, *Bpion, *Bcastle, *Bskoczek, *Bbiskup, *BBking, *Bquen, *pion, *castle, *skoczek, *biskup, *king, *quen);//pisze że nie można przekonwerterować 2 paramertu z BITMAP na wspaźnik bitmapy

destroybmp();
0

Funkcja design przyjmuje wskaznik na strukture BITMAP, natomiast w tym miejscu:

 
design(A1, *Bpion, *Bcastle, *Bskoczek, *Bbiskup, *BBking, *Bquen, *pion, *castle, *skoczek, *biskup, *king, *quen);

przekazujesz jej wyluskane wskazniki (bo Bpion... sa wskaznikami).
Usun gwiazdki w tej linii i powinno byc dobrze

1 użytkowników online, w tym zalogowanych: 0, gości: 1