home *** CD-ROM | disk | FTP | other *** search
- //----------------------------------------------------------------------------
- //Borland C++Builder
- //Copyright (c) 1987, 1997 Borland International Inc. All Rights Reserved.
- //----------------------------------------------------------------------------
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #pragma hdrstop
-
- #include <vcl/mmsystem.hpp>
- #include "footmain.h"
- #include "instr.h"
- //---------------------------------------------------------------------------
- #pragma resource "*.dfm"
- TForm1 *Form1;
- char numbuf[10];
- //---------------------------------------------------------------------------
- __fastcall TForm1::TForm1(TComponent* Owner)
- : TForm(Owner)
- {
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::MoveForward(TObject *Sender)
- {
- if ((OnOffSwitch->Position == 2) || (LastSack != NULL))
- return;
-
- if (!running)
- TogglePlay(true);
-
- if (Runningback->Left < TACKLEROW3 - 2)
- {
- if (field[rbx+1][rby].player != NULL)
- {
- Sacked(field[rbx+1][rby].player);
- return;
- }
- field[rbx][rby].player = NULL;
- field[rbx][rby].rb = false;
- Runningback->Left += 22;
- rbx++;
- }
- else
- {
- if (field[0][rby].player != NULL)
- {
- Sacked(field[0][rby].player);
- return;
- }
- field[rbx][rby].player = NULL;
- field[rbx][rby].rb = false;
- Runningback->Left = RBLEFT;
- rbx = 0;
- }
-
- YardsToGo--;
- FieldPosition++;
- if (FieldPosition == 100)
- {
- sndPlaySound("td.wav", SND_SYNC);
- running = false;
- ShowField(false);
- Home+=7;
- HomeDisplay->Caption = itoa(Home, numbuf, 10);
- FieldPosition=80; // Starting position for visitor
- Down = 1;
- YardsToGo = 10;
- Computer->Visible = true;
- return;
- }
- field[rbx][rby].player = Runningback;
- field[rbx][rby].rb = true;
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::MoveUp(TObject *Sender)
- {
- if ((OnOffSwitch->Position == 2) || (LastSack != NULL))
- return;
-
- if (!running)
- TogglePlay(true);
-
- if (Runningback->Top == RBTOP)
- return; // already as up as it gets
-
- if (field[rbx][rby-1].player != NULL)
- {
- Sacked(field[rbx][rby-1].player);
- return;
- }
-
- if (Runningback->Top == RBBOTTOM)
- Runningback->Top = RBMIDDLE;
- else if (Runningback->Top == RBMIDDLE)
- Runningback->Top = RBTOP;
-
- field[rbx][rby].player = NULL;
- field[rbx][rby].rb = false;
- rby--;
- field[rbx][rby].player = Runningback;
- field[rbx][rby].rb = true;
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::MoveDown(TObject *Sender)
- {
- if ((OnOffSwitch->Position == 2) || (LastSack != NULL))
- return;
-
- if (!running)
- TogglePlay(true);
-
- if (Runningback->Top == RBBOTTOM)
- return; // already as down as it gets
-
- if (field[rbx][rby+1].player != NULL)
- {
- Sacked(field[rbx][rby+1].player);
- return;
- }
-
- if (Runningback->Top == RBTOP)
- Runningback->Top = RBMIDDLE;
- else if (Runningback->Top == RBMIDDLE)
- Runningback->Top = RBBOTTOM;
-
- field[rbx][rby].player = NULL;
- field[rbx][rby].rb = false;
- rby++;
- field[rbx][rby].player = Runningback;
- field[rbx][rby].rb = true;
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::Switched(TObject *Sender)
- {
- switch (OnOffSwitch->Position)
- {
- case 1: {
- Timer->Interval = 250;
- HomeDisplay->Visible = true;
- VisitorDisplay->Visible = true;
- TimeDisplay->Visible = true;
- ResetGame(NULL);
- break;
- }
- case 2: {
- ShowField(false);
- HomeDisplay->Visible = false;
- VisitorDisplay->Visible = false;
- TimeDisplay->Visible = false;
- break;
- }
- case 3: {
- Timer->Interval = 100;
- HomeDisplay->Visible = true;
- VisitorDisplay->Visible = true;
- TimeDisplay->Visible = true;
- ResetGame(NULL);
- break;
- }
- }
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::ShowField(bool visible)
- {
- Runningback->Visible = visible;
- Tackler1->Visible = visible;
- Tackler2->Visible = visible;
- Tackler3->Visible = visible;
- Tackler4->Visible = visible;
- Tackler5->Visible = visible;
-
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::TimerTimer(TObject *Sender)
- {
- int x, y, newx, newy, direction;
-
- newy = y = random(3);
- newx = x = random(10);
- direction = random(2); // 0 is for x, 1 is for y
-
- if (!running)
- {
- if (LastSack != NULL)
- LastSack->Visible = !LastSack->Visible;
- return;
- }
-
- if (field[x][y].rb == true)
- return; // can't move the runningback!
-
- if (field[x][y].player == NULL)
- return; // no tacker at this spot
-
- if (field[x][y].player->Left <= RBLEFT)
- return; // already at the endzone
-
- if (direction == 0) // we're moving horizontal
- {
- if (x < rbx)
- newx = x +1;
- else if (x > rbx)
- newx = x -1;
- else return;
- // we're already horizontally lined up with rb
- }
- else if (direction == 1) // we're moving vertical
- {
- if (y < rby)
- newy = y +1;
- else if (y > rby)
- newy = y -1;
- else return;
- // we're already vertically lined up with rb
- }
-
- if (field[newx][newy].rb == true) // got him!
- {
- Sacked(field[x][y].player);
- return;
- }
-
- if (field[newx][newy].player == NULL) // not blocked
- {
- field[x][y].player->Left -= (22 * (x - newx));
- field[x][y].player->Top -= (16 * (y - newy));
- field[newx][newy].player = field[x][y].player;
- field[x][y].player = NULL;
- return;
- }
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::Sacked(TLabel *player)
- {
- sndPlaySound("whistle.wav", SND_SYNC);
- running = false;
- LastSack = player;
- if (YardsToGo <=0)
- {
- Down = 1;
- YardsToGo = 10;
- }
- else
- {
- Down++;
- if (Down > 4)
- {
- sndPlaySound("whistle.wav", SND_SYNC);
- Down = 1; // First down for visitor
- YardsToGo = 10;
- Computer->Visible = true;
- }
- }
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::ResetGame(TObject *Sender)
- {
- YardsToGo=10;
- Down=1;
- FieldPosition=20;
- Home=0;
- Visitor=0;
- Quarter = 1;
- TimeLeft=15;
- TimeDisplay->Caption = FloatToStrF(TimeLeft, ffGeneral, 4, 4);
- HomeDisplay->Caption = itoa(Home, numbuf, 10);
- VisitorDisplay->Caption = itoa(Visitor, numbuf, 10);
- randomize;
- ResetField();
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::ResetField()
- {
- TogglePlay(false);
- LastSack = NULL;
-
- // empty the field
- for (int y=0; y<3; y++)
- for (int x=0; x<10; x++)
- {
- field[x][y].player = NULL;
- field[x][y].rb = false;
- }
-
- // initial locations of players
- field[0][1].player=Runningback;
- field[0][1].rb=true;
- rbx = 0;
- rby = 1;
- field[3][0].player=Tackler1;
- field[3][1].player=Tackler2;
- field[3][2].player=Tackler3;
- field[5][1].player=Tackler4;
- field[9][1].player=Tackler5;
-
- Runningback->Left = RBLEFT;
- Runningback->Top = RBMIDDLE;
- Tackler1->Left = TACKLEROW1;
- Tackler1->Top = TACKLETOP;
- Tackler2->Left = TACKLEROW1;
- Tackler2->Top = TACKLEMIDDLE;
- Tackler3->Left = TACKLEROW1;
- Tackler3->Top = TACKLEBOTTOM;
- Tackler4->Left = TACKLEROW2;
- Tackler4->Top = TACKLEMIDDLE;
- Tackler5->Left = TACKLEROW3;
- Tackler5->Top = TACKLEMIDDLE;
-
- ShowField(true);
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::Exit1Click(TObject *Sender)
- {
- Application->Terminate();
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::About1Click(TObject *Sender)
- {
- About->ShowModal();
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::ShowStats(TObject *Sender, TMouseButton Button,
- TShiftState Shift, int X, int Y)
- {
- if ((OnOffSwitch->Position == 2) || (running))
- return;
-
- if (Quarter == 5)
- return;
-
- YTGDisplay->Caption = itoa(YardsToGo, numbuf, 10);
-
- if (FieldPosition <= 50)
- {
- itoa(FieldPosition, numbuf, 10);
- strcat(numbuf, " <");
- }
- else
- {
- strcpy(numbuf, "> ");
- itoa(100 - FieldPosition, numbuf + 2, 10);
- }
- FieldPosDisplay->Caption = numbuf;
-
- DownDisplay->Caption = itoa(Down, numbuf, 10);
-
- ShowField(false);
- ShowDisplay(true);
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::HideStats(TObject *Sender, TMouseButton Button,
- TShiftState Shift, int X, int Y)
- {
- if ((OnOffSwitch->Position == 2) || (running))
- return;
-
- ShowDisplay(false);
- if (!Computer->Visible)
- ResetField();
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::ShowDisplay(bool visible)
- {
- DownLabel->Visible = visible;
- FieldPosLabel->Visible = visible;
- YTGLabel->Visible = visible;
- DownDisplay->Visible = visible;
- FieldPosDisplay->Visible = visible;
- YTGDisplay->Visible = visible;
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::Kick(TObject *Sender)
- {
- if ((running) || (Down != 4))
- return; // button only valid just before fourth down
-
- ShowField(false);
- FieldPosition += random(100);
- if (FieldPosition >= 100)
- {
- sndPlaySound("td.wav", SND_SYNC);
- Home+=3;
- HomeDisplay->Caption = itoa(Home, numbuf, 10);
- FieldPosition=80; // Starting position for visitor
- }
- else
- {
- sndPlaySound("whistle.wav", SND_SYNC);
- sndPlaySound("whistle.wav", SND_SYNC);
- }
- Down = 1; // first down for visitor
- YardsToGo = 10;
- Computer->Visible = true;
- LastSack = Runningback; // hack to keep movement keys disabled
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::ClockTick(TObject *Sender)
- {
- if (!running)
- return;
-
- sndPlaySound("tick.wav", SND_ASYNC);
- TimeLeft -= 0.1;
- TimeDisplay->Caption = FloatToStrF(TimeLeft, ffGeneral, 4, 4);
-
- if (TimeLeft <= 0)
- {
- Quarter++;
- TimeLeft = 15;
- }
- if (Quarter >= 5)
- {
- // game over
- sndPlaySound("whistle.wav", SND_SYNC);
- sndPlaySound("whistle.wav", SND_SYNC);
- LastSack = Runningback; // hack to keep movement keys disabled
- TogglePlay(false);
- ShowField(false);
- ShowDisplay(true);
- }
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::TogglePlay(bool toggle)
- {
- running = toggle;
- Timer->Enabled = toggle;
- Clock->Enabled = toggle;
- }
- //---------------------------------------------------------------------
- void __fastcall TForm1::ComputerClick(TObject *Sender)
- {
-
- ShowField(false);
- FieldPosition -= random(100);
- if (FieldPosition <= 0)
- {
- sndPlaySound("td.wav", SND_ASYNC);
- Visitor+=7;
- VisitorDisplay->Caption = itoa(Visitor, numbuf, 10);
- FieldPosition=20;
- }
- else
- {
- sndPlaySound("whistle.wav", SND_SYNC);
- sndPlaySound("whistle.wav", SND_SYNC);
- }
- Computer->Visible = false;
- LastSack = Runningback; // hack to keep movement keys disabled
- }
- //---------------------------------------------------------------------
-