Ir ao conteúdo

como se utiliza a funçao IntersectRect ()?


Cambalinho

Posts recomendados

Postado

esta funçao verifica o contacto\colisao entre 2 rectangulos. mas como se usa?

eis a declaraçao:

RECT player;
RECT rectangule;
LPRECT inter;
BOOL colision;
//............
Rectangle(a,100,0,150,50);
rectangule.left =100;
rectangule.top =0;
rectangule.bottom =rectangule.top+150;
rectangule.right =rectangule.left+150;
//..........................
player.left =x;
player.top =y;
player.bottom =player.top+100;
player.right =player.left+100;

if (IntersectRect(inter,player,rectangule)==0) printf ("Colisao");
//................

porque recebo este erro?

"--------------------Configuration: test - Win32 Debug--------------------

Compiling...

test.cpp

C:\test\test\test.cpp(73) : error C2664: 'IntersectRect' : cannot convert parameter 2 from 'struct tagRECT' to 'const struct tagRECT *'

No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

Error executing cl.exe.

test.exe - 1 error(s), 0 warning(s)"

Postado
esta funçao verifica o contacto\colisao entre 2 rectangulos. mas como se usa?

eis a declaraçao:

RECT player;
RECT rectangule;
LPRECT inter;
BOOL colision;
//............
Rectangle(a,100,0,150,50);
rectangule.left =100;
rectangule.top =0;
rectangule.bottom =rectangule.top+150;
rectangule.right =rectangule.left+150;
//..........................
player.left =x;
player.top =y;
player.bottom =player.top+100;
player.right =player.left+100;

if (IntersectRect(inter,player,rectangule)==0) printf ("Colisao");
//................

porque recebo este erro?

"--------------------Configuration: test - Win32 Debug--------------------

Compiling...

test.cpp

C:\test\test\test.cpp(73) : error C2664: 'IntersectRect' : cannot convert parameter 2 from 'struct tagRECT' to 'const struct tagRECT *'

No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

Error executing cl.exe.

test.exe - 1 error(s), 0 warning(s)"

if (IntersectRect(inter, &player, &rectangule)==0) printf ("Colisao");

é necessario colocar o & antes da variavel.

Postado
if (IntersectRect(inter, &player, &rectangule)==0) printf ("Colisao");

é necessario colocar o & antes da variavel.

obrigadoe ja vi que é só o 2º e 3º argumento;)

olha 1 coisa: achas que a minha condiçao esta correcta?

é que estou a receber resultados incorrectos e nao sei se é do 'if' ou disto:

player.left =x;
player.top =y;
player.bottom =player.top+100;
player.right =player.left+100;

e

Rectangle(a,100,0,150,50); 
rectangule.left =100;
rectangule.top =0;
rectangule.bottom =rectangule.top+150;
rectangule.right =rectangule.left+150;

o que estou a perguntar é: como calcula-se o bottom e o right?

Postado

ja consegui meter a funçao a funcionar mas nao foi fácil:

RECT player;
RECT rectangule;
RECT rcTemp;

//......................
DrawTransparentBitmap(a,"C:\\test\\Bleu Battle.bmp",x,y,100,100, -1);
SetRect(&player,x,y,x+100,y+100);
//....................
Rectangle(a,100,0,150,50);
SetRect(&rectangule,100,0,100+150,0+50);
//.........................
if (IntersectRect(&rcTemp, &player, &rectangule))
printf ("Colisao");
else
printf ("Sem Colisao");

a funçao setrect() é que facilita a alteraçao da estrutura RECT.

mais umas dicas:

- width = rect.right-rect.left ou rect.right= width +rect.left.

- height = rect.bottom-rect.top ou rect.bottom=rect.top+height.

obrigado por tudo amigos.

aceito sugestoes

  • Moderador
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!