home *** CD-ROM | disk | FTP | other *** search
- //
- // File : TTicTacToe_GUIUnit.pas
- //
- // Project : PCProject
- // Configuration : PCConfig 1
- // Phase : Implementation 1
- // System : TicTacToe 1
- //
- unit TTicTacToe_GUIUnit;
-
- interface
-
- uses
- // Start user include section
- // End user include section
- Menus,
- ExtCtrls,
- StdCtrls,
- Forms,
- Classes,
- TicTacToe_GameUnit,
- TicTacToe_ComputerUnit;
-
- type
- // Graphical User Interface of the game.
- TTicTacToe_GUI = class(TForm)
-
- // Visual Components
- CellButton3: TButton (* Component:TicTacToe_CellButton *);
- CellButton8: TButton (* Component:TicTacToe_CellButton *);
- Board: TPanel (* Component:TicTacToe_Board *);
- New: TMenuItem (* Component:TicTacToe_New *);
- CellButton5: TButton (* Component:TicTacToe_CellButton *);
- Result: TLabel (* Component:TicTacToe_Result *);
- ComputerX: TMenuItem (* Component:TicTacToe_Opponent *);
- CellButton2: TButton (* Component:TicTacToe_CellButton *);
- CellButton7: TButton (* Component:TicTacToe_CellButton *);
- MainMenu: TMainMenu (* Component:TicTacToe_MainMenu *);
- GameMenu: TMenuItem (* Component:TicTacToe_GameMenu *);
- OpponentMenu: TMenuItem (* Component:TicTacToe_OpponentMenu *);
- CellButton4: TButton (* Component:TicTacToe_CellButton *);
- CellButton9: TButton (* Component:TicTacToe_CellButton *);
- Human: TMenuItem (* Component:TicTacToe_Opponent *);
- CellButton1: TButton (* Component:TicTacToe_CellButton *);
- ComputerO: TMenuItem (* Component:TicTacToe_Opponent *);
- CellButton6: TButton (* Component:TicTacToe_CellButton *);
-
- // Events methods
- procedure CellButton1Click(Sender: TObject);
- procedure CellButton3Click(Sender: TObject);
- procedure HumanClick(Sender: TObject);
- procedure CellButton4Click(Sender: TObject);
- procedure CellButton5Click(Sender: TObject);
- procedure CellButton6Click(Sender: TObject);
- procedure CellButton7Click(Sender: TObject);
- procedure CellButton8Click(Sender: TObject);
- procedure CellButton9Click(Sender: TObject);
- procedure NewClick(Sender: TObject);
- procedure ComputerOClick(Sender: TObject);
- procedure ComputerXClick(Sender: TObject);
- procedure CellButton2Click(Sender: TObject);
-
- private
- // User defined attributes
- CellButtons: array [1..9] of TButton;
-
- // Association attributes
- computerRef: TicTacToe_Computer;
- gameRef: TicTacToe_Game;
-
- // User defined methods
-
- // Properties
-
- protected
- // User defined attributes
-
- // User defined methods
-
- // Properties
-
- public
- // User defined attributes
-
- // Default constructor/destructor
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
-
- // User defined methods
- procedure enableBoard;
- procedure displayResult(text: String);
- procedure disableBoard;
- procedure cellButtonClick(index: Integer);
- procedure clearBoard;
-
- // Association methods
- procedure setGame(newTicTacToe_Game: TicTacToe_Game);
- function getGame: TicTacToe_Game;
- procedure removeComputer;
- function getComputer: TicTacToe_Computer;
- procedure setComputer(newTicTacToe_Computer: TicTacToe_Computer);
- procedure removeGame;
-
- // Properties
-
- published
- // User defined attributes
-
- // User defined methods
-
- // Properties
- end;
-
- // Class feature attributes
- var
- TicTacToe_GUI: TTicTacToe_GUI (* Form attribute *);
-
-
- implementation
-
- // Start user include section
- // End user include section
-
- {$R *.DFM}
-
- constructor TTicTacToe_GUI.Create(AOwner: TComponent);
- // Start user section
- // End user section
- begin
-
- inherited Create(AOwner);
- // Start user section
- setGame(TicTacToe_Game.Create);
- setComputer(TicTacToe_Computer.Create(getGame()));
- CellButtons[1] := CellButton1;
- CellButtons[2] := CellButton2;
- CellButtons[3] := CellButton3;
- CellButtons[4] := CellButton4;
- CellButtons[5] := CellButton5;
- CellButtons[6] := CellButton6;
- CellButtons[7] := CellButton7;
- CellButtons[8] := CellButton8;
- CellButtons[9] := CellButton9;
-
- TicTacToe_Game(getGame()).startGame;
- // End user section
- end;
-
-
- destructor TTicTacToe_GUI.Destroy;
- // Start user section
- // End user section
- begin
- // Start user section
- // End user section
- removeComputer;
- removeGame;
-
- inherited Destroy;
- end;
-
-
- // Enables all the buttons of the board.
- procedure TTicTacToe_GUI.enableBoard;
- var
- i: Integer;
-
- begin
- for i := 1 to 9 do
- if CellButtons[i].Caption = ' ' then
- CellButtons[i].Enabled := True;
- end;
-
-
- // Displays the specified result.
- procedure TTicTacToe_GUI.displayResult(text: String);
- begin
- Result.Caption := text;
- end;
-
-
- // Disables all the buttons of the board.
- procedure TTicTacToe_GUI.disableBoard;
- var
- i: Integer;
- begin
- for i := 1 to 9 do
- CellButtons[i].Enabled := False;
- end;
-
-
- // Checks if cell is empty and sets it.
- procedure TTicTacToe_GUI.cellButtonClick(index: Integer);
- begin
- if CellButtons[index].Enabled then
- begin
- CellButtons[index].Enabled := False;
- CellButtons[index].Caption := gameRef.getActivePlayer();
- gameRef.selectCell(index);
- computerRef.checkTurn();
- end;
- end;
-
-
- // Clears the contents of all the buttons of the board.
- procedure TTicTacToe_GUI.clearBoard;
- var
- i: Integer;
- begin
- for i := 1 to 9 do
- CellButtons[i].Caption := ' ';
- end;
-
-
- procedure TTicTacToe_GUI.CellButton1Click(Sender: TObject);
- begin
- cellButtonClick(1);
- end;
-
-
- procedure TTicTacToe_GUI.CellButton3Click(Sender: TObject);
- begin
- cellButtonClick(3);
- end;
-
-
- // Sets opponent.
- procedure TTicTacToe_GUI.HumanClick(Sender: TObject);
- begin
- Human.Checked := True;
- computerRef.setId('');
- computerRef.checkTurn;
- end;
-
-
- procedure TTicTacToe_GUI.CellButton4Click(Sender: TObject);
- begin
- cellButtonClick(4);
- end;
-
-
- procedure TTicTacToe_GUI.CellButton5Click(Sender: TObject);
- begin
- cellButtonClick(5);
- end;
-
-
- procedure TTicTacToe_GUI.CellButton6Click(Sender: TObject);
- begin
- cellButtonClick(6);
- end;
-
-
- procedure TTicTacToe_GUI.CellButton7Click(Sender: TObject);
- begin
- cellButtonClick(7);
- end;
-
-
- procedure TTicTacToe_GUI.CellButton8Click(Sender: TObject);
- begin
- cellButtonClick(8);
- end;
-
-
- procedure TTicTacToe_GUI.CellButton9Click(Sender: TObject);
- begin
- cellButtonClick(9);
- end;
-
-
- // Starts new game.
- procedure TTicTacToe_GUI.NewClick(Sender: TObject);
- begin
- gameRef.startGame;
- computerRef.checkTurn;
- end;
-
-
- // Sets opponent.
- procedure TTicTacToe_GUI.ComputerOClick(Sender: TObject);
- begin
- ComputerO.Checked := True;
- computerRef.setId('O');
- computerRef.checkTurn;
- end;
-
-
- // Sets opponent.
- procedure TTicTacToe_GUI.ComputerXClick(Sender: TObject);
- begin
- ComputerX.Checked := True;
- computerRef.setId('X');
- computerRef.checkTurn;
- end;
-
-
- procedure TTicTacToe_GUI.CellButton2Click(Sender: TObject);
- begin
- cellButtonClick(2);
- end;
-
-
- // Do not delete this line -- regeneration marker
-
- procedure TTicTacToe_GUI.setGame(newTicTacToe_Game: TicTacToe_Game);
- begin
- if (newTicTacToe_Game <> NIL) then
- begin
- if (newTicTacToe_Game <> gameRef) then
- begin
- if (gameRef <> NIL) then
- begin
- gameRef.removeGui;
- end;
- gameRef := newTicTacToe_Game;
- newTicTacToe_Game.setGui(SELF);
- end;
- end
- else
- begin
- removeGame;
- end;
- end;
-
-
- function TTicTacToe_GUI.getGame: TicTacToe_Game;
- begin
- getGame := gameRef;
- end;
-
-
- procedure TTicTacToe_GUI.removeComputer;
- var
- oldTicTacToe_Computer: TicTacToe_Computer;
-
- begin
- if (computerRef <> NIL) then
- begin
- oldTicTacToe_Computer := computerRef;
- computerRef := NIL;
- oldTicTacToe_Computer.removeGui();
- end;
- end;
-
-
- function TTicTacToe_GUI.getComputer: TicTacToe_Computer;
- begin
- getComputer := computerRef;
- end;
-
-
- procedure TTicTacToe_GUI.setComputer(newTicTacToe_Computer: TicTacToe_Computer);
- begin
- if (newTicTacToe_Computer <> NIL) then
- begin
- if (newTicTacToe_Computer <> computerRef) then
- begin
- if (computerRef <> NIL) then
- begin
- computerRef.removeGui;
- end;
- computerRef := newTicTacToe_Computer;
- newTicTacToe_Computer.setGui(SELF);
- end;
- end
- else
- begin
- removeComputer;
- end;
- end;
-
-
- procedure TTicTacToe_GUI.removeGame;
- var
- oldTicTacToe_Game: TicTacToe_Game;
-
- begin
- if (gameRef <> NIL) then
- begin
- oldTicTacToe_Game := gameRef;
- gameRef := NIL;
- oldTicTacToe_Game.removeGui();
- end;
- end;
-
-
-
- end.
-