Hungry Worm BC++ 3.1:lle ja DJGPP 2:lle
Copyright (c) Mika "PLOTSO" Tolvanen 1997

!  Voit levitt tt pakettia kunhan     !
!  et muuta paketin sislt.             !

!  Voit tehd lhdekoodeilla mit haluat. !
!  Sit voit kopioida, muuttaa, poistaa,  !
!  mutta tee se _omalla vastuullasi_!     !
---

Tekijn yhteystiedot:
---------------------
Kaikenlaiset kommentit, bugiraportit yms ovat
tervetulleita!
E-mail:
        mika.janne.tolvanen@mbnet.fi

---
Hungry Worm -peli:
------------------
Tm on pieni ja yksinkertainen matopeli.
(Tmkin on joku kauan sitten tekemni peli, mik lytyi kovalevyltni
 samaan aikaan kun tetris-kloonini (SHITRIS.ZIP). 
 Muutin tmn vain toimimaan MTROUT -rutiineillani
 (BC++ 3.1 verssu MTROUT12.ZIP, DJGPP v2 verssu MTROUTDJ.ZIP)
 kokeillakseni miten ne toimii.)

Tmn paketin mukana tulee parit kuvat, lhdekoodit ja BC++ 3.1:ll
knnetty .EXE. Lhdekoodit on _aika_ hyvin kommentoitu, joten
jos kiinnostaa tutkia niin sit on helpotettu jonkin verran.

Peli vaatii vhintn 386 -koneen, VGA nytnohjaimen ja jonkin verran 
muistia.
Pelin voit knt Borland C++ 3.1:ll (.OBJ:t on sill tehty, eli ei
 varmaan toimi muilla kntjill) tai DJGPP v2:lla (.O:t on sill tehty,
 _voi_ toimia uudemmilla DJGPP:ll).

---

Vhn sorsista
--------------
Pelin alussa on trke kutsua initmath(); -funktiota
mik sin/cos taulukot (tm tehdn nopeuden vuoksi).

Tiedt varmaan ett sin on tllainen
  +
        /--\
0 \----/----\
   \__/
  - 

ja cos:
  +
      /--\
0  --/----\--
   -/      \-
  - 

Noita taulukoita kytetn kun halutaan ett
mato menee kulman osoittamaan suuntaan.
<- ja -> nuolinppimist kulmaa muutetaan.

  wm[len].x=x+=sintbl[angle];
  wm[len].y=y+=costbl[angle];

Nuo 2 rivi siirt madon pt uuteen paikkaan.
_Jos_ teet ennen noita rivej vaikka
 if(key[KEY_UP]) {
ja noitten jlkeen } merkki tietysti,
niin silloin mato ei liiku mihinkn ennenkuin painetaan
ylspin -nappia.

Mutta tmhn antaa hienoja ideoita (ainakin minulle :) :
 Liikutetaan vaikka ukkoa ruudulla. Se ei tietysti liiku
 kokoajan niinkuin mato, eli katsotaan painetaanko ylspin.
 Jos painetaan, suoritetaan 
        
        ukon_x+=sintbl[angle];
        ukon_y+=sintbl[angle];
 
 rivit (ukon_x ja ukon_y pit olla fixed (eli long) tyyppi)
 (sitten ne tytyy muuttaa integereiks kun ne annetaan piirtofunktiolle
  parametreina (eli fix2int(ukon_x) ja fix2int(ukon_y) 
  (nuo inlinefunktiot palauttaa longin 16 ylint bitti (kokonaisluku
   osan) mit piirtofunktioiden x&y haluaa!)

 Ja anglea listn/vhennetn jos painetaan <- tai -> nuolinppimi.
 anglen tytyy olla tyyppi unsigned char, niin ei tarvitse
 tehd vertailuja ett meneek angle taulukon rajojen yli.

 ...no, mits muita ideoita on? No ideoi itse!

 
 Peliin on ohjelmoitu 2 moodia: 
  mode joka odottaa vertical retracea, 
  ja mode joka menee halutulla nopeudella.

 F1  vertical retrace mode
 F2  haluttu nopeus mode 

 Kun F2 painetaan, + ja - merkkien rmpyttely vaikuttaa pelin 
 nopeuteen.


 Peli kytt kahta isoa bitmappia
   bck:ta  ja  check:i
 
 bck: tss on tausta
 check: thn piirretn mato (kytt: katsotaan koko ajan ett
   meneek mato itsens plle (l. syk itsens))


---

Pelin kntminen
-----------------
WORM.PRJ on BC++ 3.1:n projektifile, eli lataat sen
idess ja run, niin pitisi toimia (voi olla, ett joudut
 muuttamaan hakemistoja ym).
Ellet kyt ide, niin linkkaa BC\ hakemistossa olevat .OBJ:t
WORM.CPP:n kanssa, pitisi toimia.

DJGPP:t kyttess kirjoita MAKE_DJ, mik on .BAT -filu,
tai jos omistat RHIDEn niin WORM.GPR on sen projektifile.
---

-PLOTSO-
