//************************************************************************** //************************************************************************** //************************************************************************** {**************************************************************************** SpaceTesti Projekti Jöllä testään silliä by: Lasse Lilja Version 0.1 13.11.1999 ****************************************************************************} unit SpaceTesti; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Sprite, StdCtrls, MPlayer; {****************************************************************************} type TTheAvaruus = class(TForm) {PALAT} ButtonEXIT: TButton; Tausta: TPanel; Pelaaja: TSprite; {LABELIT} Label2: TLabel; Labelx: TLabel; Label4: TLabel; Labely: TLabel; Label5: TLabel; Labelt: TLabel; Labels: TLabel; Label3: TLabel; Labelv: TLabel; Label1: TLabel; Label8: TLabel; Labelmaara: TLabel; Musa: TMediaPlayer; {FORMIN} procedure FormKeyPress(Sender: TObject; var Key: Char); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure ButtonEXITClick(Sender: TObject); {Pelaajaa} procedure PelaajaSpriteMove(sender: TObject; x, y: Integer); procedure PelaajaMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure PelaajaMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private cruisers : TList; procedure NewCruiser; procedure CheckCollisions(sender: TObject; x, y: integer); public end;//TYPE {****************************************************************************} var TheAvaruus: TTheAvaruus; implementation {$R *.DFM} {****************************************************************************} procedure TTheAvaruus.FormKeyPress(Sender: TObject; var Key: Char); begin pelaaja.MikaNappain(key); end; {****************************************************************************} procedure TTheAvaruus.PelaajaSpriteMove(sender: TObject; x, y: Integer); begin pelaaja.OnSpriteMove:=checkcollisions; end; //************************************************************************** // FORMCREATE //************************************************************************** procedure TTheAvaruus.FormCreate(Sender: TObject); Var i:integer; begin {Muistia} Tausta.DoubleBuffered:=true; Randomize; {PELAAJA} Pelaaja.Vauhti:=random(20)+1; Pelaaja.Suunta:=random(360); Pelaaja.Top:=random(Height); Pelaaja.Left:=random(width); {vihulaiset} Cruisers:=TList.Create; For i:=1 to Random(6)+1 Do begin NewCruiser; labelmaara.caption:= IntTostr(StrToInt(labelmaara.caption)+1); end; {MUSA} Musa.play; end; //************************************************************************** // Destruktori //************************************************************************** procedure TTheAvaruus.FormDestroy(Sender: TObject); begin If Assigned(Cruisers) then Cruisers.Free; pelaaja.free; musa.free; end; //************************************************************************** // SpriteJEN TÖRMÄILYT //************************************************************************** procedure TTheAvaruus.CheckCollisions(sender: TObject; x, y: integer); Var SpriteJ,SpriteI:TSprite; j : integer; RectI,RectJ,RectIntr : TRect; lutussa : boolean; begin If cruisers.Count=0 then Exit; if ( not ( Sender is TSprite ) ) then exit; SpriteI :=Sender as TSprite; RectI.Left:=x; RectI.Top:=y; RectI.Right:=x+SpriteI.Width; RectI.Bottom:=y+SpriteI.Height; lutussa := false; for j:=cruisers.Count-1 downto 0 do begin SpriteJ:=cruisers.Items[j]; if SpriteJ = SpriteI then Continue; RectJ.Left:=SpriteJ.Left; RectJ.Top:=SpriteJ.Top; RectJ.Right:=SpriteJ.Left+SpriteJ.Width; RectJ.Bottom:=SpriteJ.Top+SpriteJ.Height; if (IntersectRect(RectIntr,RectI,RectJ))then begin lutussa:= true; SpriteI.vauhti:=SpriteI.vauhti+random(2)+1; end;//if end;//for Tausta.caption:='';//INFO RUUTU labelx.caption:=IntToStr(pelaaja.left); labely.caption:=IntToStr(pelaaja.top); labels.caption:=IntToStr(pelaaja.suunta); labelv.caption:=IntToStr(pelaaja.vauhti); labelt.caption:=IntToStr(pelaaja.tila); if ( lutussa ) then begin case spritej.tila of 0..3: spritej.tila:=4; 4: spritej.tila:=5; 5: begin cruisers.Remove(spritej); spritej.Kuole; labelmaara.caption:= IntToStr(StrToInt(Labelmaara.caption)-1); {INFO RUUTUA} if (spriteI=pelaaja)then tausta.caption:='You Just Scratched One!'; if (labelmaara.caption='0') then tausta.caption:=' Sinä Vänskä Voitit!!!'; end//begin end;//case end;//if end;//procedure //************************************************************************** // UUSI CRUISER //************************************************************************** procedure TTheAvaruus.NewCruiser; Var Sprite:TSprite; begin Sprite:=TSprite.Create(Self); cruisers.Add(Sprite); Sprite.Parent:=Tausta; {TIEDOstot} Sprite.SpritenPALAAKuva:='.\kuvia\happo_mies_vuotaa.bmp'; Sprite.SpritenKUOLIKuva:='.\kuvia\happo_mies_kuoli.bmp'; Sprite.SpritenVERKuva:='.\kuvia\happo_miesy.bmp'; Sprite.SpritenHORKuva:='.\kuvia\happo_mies.bmp'; Sprite.KuolemaMusa:='.\aania\pam2.wav'; Sprite.Left:=40+Random(Width-80); Sprite.Top:=40+Random(Height-80); Sprite.Tila:=0; Sprite.Vauhti:=5+Random(20); Sprite.Suunta:=Random(360); Sprite.OnSpriteMove:=CheckCollisions; end; //************************************************************************** procedure TTheAvaruus.ButtonEXITClick(Sender: TObject); begin close; end; //************************************************************************** procedure TTheAvaruus.PelaajaMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin pelaaja.tila:=5; end; //************************************************************************** procedure TTheAvaruus.PelaajaMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin pelaaja.BeforeDestruction; TheAvaruus.close; end; //************************************************************************** //************************************************************************** //************************************************************************** end.