{**************************************************************** ***************************************************************** ***************************************************************** Jyväskylän Yliopisto Tietotekniikan Laitos GKOSYKSY99 Harjoitustyö: Macho Myyrä ja Taistelu Silakka VIII -------------------------------------------------- AI.PAS ---------------- Ihan vaan passi, joka kertoo enemylle mihin suuntaan mennä Mukaan: AI.PAS AI.DCR Version: 0.1 By: Lasse Lilja Date: 29.11.1999 Comments: Kuhan kokeilin ja tein rungon 1) Seuraa suorissa 2) seuraa kulmissa ****************************************************************** ****************************************************************** ******************************************************************} unit AIX; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TAIX = class(TTimer) private FVaikeusAste:Integer; protected public function MinneMenna(sENE,xENE,yENE,xPLA,yPLA: Integer) :integer;virtual; function MuutaKoord(i:integer):integer;virtual; procedure SetVaikeusAste(i:integer); virtual; published property VaikeusAste: Integer read FVaikeusAste write SetVaikeusAste default 0; end; procedure Register; implementation const RUUTU=24; // Tama maarittelee koordinaattimuunnoksen modulon {suunnat} const VASEN=180; const OIKEA=0; const YLOS=270; const ALAS=90; const ONERAD=Pi/180; {*********************************************************************** * KOORMUUNNOS * ***********************************************************************} function TAIX.MuutaKoord(i:integer) :integer; begin Result:= Round( (i-(i mod RUUTU)) /RUUTU ); end; {**************************************************************************} procedure TAIX.SetVaikeusAste(i:integer); begin if ( i > 0 ) then FVaikeusAste :=0 else FVaikeusAste := i; end; //**************************************************************************** //Tassa tehdaan vihollisesta alykkaampi //**************************************************************************** function TAIX.MinneMenna(sENE,xENE,yENE,xPLA,yPLA: Integer) :integer; var // dist :integer; VihPaikka,PelPaikka :Tpoint; begin VihPaikka.x:= MuutaKoord(xENE); VihPaikka.y:= MuutaKoord(yENE); PelPaikka.x:= MuutaKoord(xPLA); PelPaikka.y:= MuutaKoord(yPLA); if ( abs(VihPaikka.x-PelPaikka.x) < abs(VihPaikka.y-PelPaikka.y) ) then begin if (VihPaikka.y