#include <graphics.h>  // initgraph, setcolor m.fl
#include <conio.h>     // kbhit, getch
#include <dos.h>       // delay, nosound
#include <stdlib.h>    // itoa
#include "worm.hpp"    // class Worm

void main(void)
{
  int gdriver=VGA, gmode=VGAHI;
  registerbgidriver(EGAVGA_driver);
  initgraph(&gdriver, &gmode, "");
  cleardevice();
  setcolor(MAGENTA);
  rectangle(0,10,639,469); rectangle(1,11,638,468);
  rectangle(2,12,637,467); rectangle(3,13,636,466);

  Worm Player(31, 47, right, YELLOW, 'W', 'Q');
  char ch = '\x0';
  int cnt=0;
  while (ch != '\x1b' && !Player.IsBuried())
  {
    ch = '\x0';
    if (kbhit()) // Kolla tangentbordet
      Player.CheckKeys(ch = getch());

    if (!Player.IsDead())
    {
      Player.CalcNewPos();      // R„kna ut ny position
      if (Player.Kollision(YELLOW,MAGENTA)) // Kolla efter krock
        Player.Kill();
      else
      {
        if (++cnt < 100 || cnt % 2 == 0)
        {
          Player.grow = true;
          Player.AddPoint(); // V„x med en punkt
          setfillstyle(SOLID_FILL, BLACK);
          bar(0,0,50,9);
          setcolor(YELLOW);
          char buf[10];
          outtextxy(0,0,itoa(Player.GetLength()-1, buf, 10));
        }
        Player.WormMove();     // Flytta sista f”rst
        delay(50);
      }
    }
    else {
      Player.Bury(true);   // Starta begravning av masken
      delay(10);
    }
  } // Tills krock eller ESC

  nosound();
  closegraph();
}
