Function muito simples mais não sei pq ta errado
olha só fiz um procedure pra verificar colisão ele é o seguinte
essa primeira parte funcionou belezinha mais eu queria usar um function e puz assim
Complia mais não funciona o q está errado?
Procedure verifica; var x : byte; begin x:= 0; if form1.BT1.Left > form1.BT2.Left + 75 then x:= 1; if form1.BT1.Top > form1.BT2.Top + 25 then x:= 1; if form1.BT1.Left + 75 < form1.BT2.Left then x:= 1; if form1.BT1.Top + 25 < form1.BT2.Top then x:= 1; if x = 0 then form1.Canvas.TextOut(10,10,´colidiu´) else form1.Canvas.TextOut(10,10,´ ´); //ou seja ele cercou o objeto e testa se eles não se tocam // se todos os testes falharem é pq eles colidiram end; e um timer pra mover um coponente procedure TForm1.Timer1Timer(Sender: TObject); begin if getkeystate(vk_left)<0 then bt1.Left:=bt1.Left-2 ; if getkeystate(vk_Right)<0 then bt1.Left:=bt1.Left+2; if getkeystate(vk_up)<0 then bt1.top:=bt1.top-2; if getkeystate(vk_down)<0 then bt1.top:=bt1.top+2; verifica; end;
essa primeira parte funcionou belezinha mais eu queria usar um function e puz assim
function verifica: boolean; begin if (form1.BT1.Left > form1.BT2.Left + 75) and (form1.BT1.Left + 75 < form1.BT2.Left) and (form1.BT1.Top + 25 < form1.BT2.Top ) and (form1.BT1.Top > form1.BT2.Top + 25) then result:= false; end; e pra chamar procedure TForm1.Timer1Timer(Sender: TObject); begin if getkeystate(vk_left)<0 then bt1.Left:=bt1.Left-2 ; if getkeystate(vk_Right)<0 then bt1.Left:=bt1.Left+2; if getkeystate(vk_up)<0 then bt1.top:=bt1.top-2; if getkeystate(vk_down)<0 then bt1.top:=bt1.top+2; verifica; if verifica = false showmessage(´colidiu´); end;
Complia mais não funciona o q está errado?
Robotizar
Curtidas 0
Respostas
Josecarlosjr_atc
31/05/2003
Boa tarde,
Você está com um problema e acho que sei resolver.
Primeiro tente retirar todas as condicionais AND e colocar condicionais OR,pois o procedimento só irá funcionar com apenas uma condicional.
Resumindo, com condicionais AND, só se todas as possibilidades forem possivéis de uma só vez que ele executará, enquanto que com condicionais OR, só pelo menos uma delas for verdadeira ele executa o procedimento.
Aviso!!! Eu não estudei seu procedimento, más consegui resolver algo semelhante dessa maneira.
Valeu cara,
José Carlos Jr.
Você está com um problema e acho que sei resolver.
Primeiro tente retirar todas as condicionais AND e colocar condicionais OR,pois o procedimento só irá funcionar com apenas uma condicional.
Resumindo, com condicionais AND, só se todas as possibilidades forem possivéis de uma só vez que ele executará, enquanto que com condicionais OR, só pelo menos uma delas for verdadeira ele executa o procedimento.
Aviso!!! Eu não estudei seu procedimento, más consegui resolver algo semelhante dessa maneira.
Valeu cara,
José Carlos Jr.
GOSTEI 0