0% found this document useful (0 votes)
123 views17 pages

Delphi - Game Tebak Kata

The document describes a hangman game application created in Delphi. The application uses buttons and images to allow the user to guess letters and try to uncover a hidden word. It tracks the number of incorrect guesses and displays a hanging man image that progresses based on the number of errors.

Uploaded by

Eka Hasan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
123 views17 pages

Delphi - Game Tebak Kata

The document describes a hangman game application created in Delphi. The application uses buttons and images to allow the user to guess letters and try to uncover a hidden word. It tracks the number of incorrect guesses and displays a hanging man image that progresses based on the number of errors.

Uploaded by

Eka Hasan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

GAME TEBAK KATA

unit untmain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, ExtCtrls, StdCtrls, Menus, WinSkinData;

type
TFrmHangman = class(TForm)
MainMenu1: TMainMenu;
mnugame: TMenuItem;
mnugameplay: TMenuItem;
mnugameexit: TMenuItem;
mnuhelp: TMenuItem;
mnuhelpabout: TMenuItem;
lblket: TLabel;
Image1: TImage;
dsgame: TDataSource;

1
tbgame: TTable;
lbltebak: TLabel;
btna: TButton;
btnq: TButton;
btnw: TButton;
btns: TButton;
btnz: TButton;
btnx: TButton;
btne: TButton;
btnd: TButton;
btnc: TButton;
btnr: TButton;
btnf: TButton;
btnv: TButton;
btnt: TButton;
btng: TButton;
btnb: TButton;
btny: TButton;
btnh: TButton;
btnn: TButton;
btnu: TButton;
btnj: TButton;
btni: TButton;
btno: TButton;
btnp: TButton;
btnl: TButton;
btnk: TButton;
btnm: TButton;
Timer1: TTimer;
Image2: TImage;
Shape1: TShape;
SkinData1: TSkinData;
procedure FormActivate(Sender: TObject);
procedure mnugameplayClick(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure btnpClick(Sender: TObject);
procedure btnqClick(Sender: TObject);
procedure btnwClick(Sender: TObject);
procedure btneClick(Sender: TObject);
procedure btnrClick(Sender: TObject);
procedure btntClick(Sender: TObject);
procedure btnyClick(Sender: TObject);
procedure btnuClick(Sender: TObject);
procedure btniClick(Sender: TObject);
procedure btnoClick(Sender: TObject);
procedure btnaClick(Sender: TObject);
procedure btnsClick(Sender: TObject);
procedure btndClick(Sender: TObject);
procedure btnfClick(Sender: TObject);
procedure btngClick(Sender: TObject);
procedure btnhClick(Sender: TObject);
procedure btnjClick(Sender: TObject);
procedure btnkClick(Sender: TObject);
procedure btnlClick(Sender: TObject);
procedure btnzClick(Sender: TObject);
procedure btnxClick(Sender: TObject);
procedure btncClick(Sender: TObject);

2
procedure btnvClick(Sender: TObject);
procedure btnbClick(Sender: TObject);
procedure btnnClick(Sender: TObject);
procedure btnmClick(Sender: TObject);
procedure mnugameexitClick(Sender: TObject);
procedure cek;
procedure Timer1Timer(Sender: TObject);
procedure mnuhelpaboutClick(Sender: TObject);
private
{ Private declarations }
public
kata , tebak : string;
salah1, salah2 : integer;
blink : boolean;

{ Public declarations }
end;

var
FrmHangman: TFrmHangman;
tekan: array[1..26] of boolean;

implementation

uses untabout;

{$R *.dfm}

procedure TFrmHangman.cek;
var tanya : integer;
begin
if FrmHangman.lbltebak.caption = kata then
begin
tanya :=Application.MessageBox('YOU WIN' + chr(10) + 'Wanna Try Again ?','Eng Ing
Eng', mb_yesno + mb_iconquestion);
if tanya = 6 then
FrmHangman.mnugameplay.Click
else
Application.Terminate;
end
else
case salah2 of
1 : image1.Picture.loadfromfile(ExtractFilePath(application.ExeName)+'\gambar\1.bmp');
2 : image1.Picture.loadfromfile(ExtractFilePath(application.ExeName)+'\gambar\2.bmp');
3 : image1.Picture.loadfromfile(ExtractFilePath(application.ExeName)+'\gambar\3.bmp');
4 : image1.Picture.loadfromfile(ExtractFilePath(application.ExeName)+'\gambar\4.bmp');
5 : image1.Picture.loadfromfile(ExtractFilePath(application.ExeName)+'\gambar\5.bmp');
6 : image1.Picture.loadfromfile(ExtractFilePath(application.ExeName)+'\gambar\6.bmp');
7 : image1.Picture.loadfromfile(ExtractFilePath(application.ExeName)+'\gambar\7.bmp');
8 : image1.Picture.loadfromfile(ExtractFilePath(application.ExeName)+'\gambar\8.bmp');
9 : image1.Picture.loadfromfile(ExtractFilePath(application.ExeName)+'\gambar\9.bmp');
10 :
begin

image1.Picture.loadfromfile(ExtractFilePath(application.ExeName)+'\gambar\10.bmp');
tanya :=Application.MessageBox('YOU LOSE' + chr(10) + 'Wanna Try Again ?','Eng Ing
Eng', mb_yesno + mb_iconquestion);

3
if tanya = 6 then
begin
self.Activate;
FrmHangman.mnugameplay.Click;
end
else
Application.Terminate;
end;
end;
end;

procedure TFrmHangman.FormActivate(Sender: TObject);


begin
btna.Enabled := False;
btnb.Enabled := False;
btnc.Enabled := False;
btnd.Enabled := False;
btne.Enabled := False;
btnf.Enabled := False;
btng.Enabled := False;
btnh.Enabled := False;
btni.Enabled := False;
btnj.Enabled := False;
btnk.Enabled := False;
btnl.Enabled := False;
btnm.Enabled := False;
btnn.Enabled := False;
btno.Enabled := False;
btnp.Enabled := False;
btnq.Enabled := False;
btnr.Enabled := False;
btns.Enabled := False;
btnt.Enabled := False;
btnu.Enabled := False;
btnv.Enabled := False;
btnw.Enabled := False;
btnx.Enabled := False;
btny.Enabled := False;
btnz.Enabled := False;

lblket.visible := false;
image1.visible := false;
randomize;
end;

procedure TFrmHangman.mnugameplayClick(Sender: TObject);


var
k : byte;
begin
btna.Enabled := true; tekan[1] := false;
btnb.Enabled := true; tekan[2] := false;
btnc.Enabled := true; tekan[3] := false;
btnd.Enabled := true; tekan[4] := false;
btne.Enabled := true; tekan[5] := false;
btnf.Enabled := true; tekan[6] := false;
btng.Enabled := true; tekan[7] := false;
btnh.Enabled := true; tekan[8] := false;

4
btni.Enabled := true; tekan[9] := false;
btnj.Enabled := true; tekan[10] := false;
btnk.Enabled := true; tekan[11] := false;
btnl.Enabled := true; tekan[12] := false;
btnm.Enabled := true; tekan[13] := false;
btnn.Enabled := true; tekan[14] := false;
btno.Enabled := true; tekan[15] := false;
btnp.Enabled := true; tekan[16] := false;
btnq.Enabled := true; tekan[17] := false;
btnr.Enabled := true; tekan[18] := false;
btns.Enabled := true; tekan[19] := false;
btnt.Enabled := true; tekan[20] := false;
btnu.Enabled := true; tekan[21] := false;
btnv.Enabled := true; tekan[22] := false;
btnw.Enabled := true; tekan[23] := false;
btnx.Enabled := true; tekan[24] := false;
btny.Enabled := true; tekan[25] := false;
btnz.Enabled := true; tekan[26] := false;

lblket.visible := true;
image1.visible := true;

salah2 := 0;
tebak := '';

tbgame.First;
tbgame.MoveBy(Random(Tbgame.RecordCount));
kata := tbgame['Jawab'];
lblket.caption := tbgame['Keterangan'];

for k := 1 to length(kata) do
if kata[k] = ' ' then
tebak := tebak + ' '
else
tebak := tebak + '*';

image1.Picture.loadfromfile(ExtractFilePath(application.ExeName)+'\gambar\0.bmp');

lbltebak.caption := tebak;
end;

procedure TFrmHangman.FormKeyPress(Sender: TObject; var Key: Char);


begin
if not(upcase(key) in ['A'..'Z']) then
key := #0;

case upcase(key) of
'A' : begin
if not tekan[1] then btna.Click else key := #0;
tekan[1] := true;
end;
'B' : begin
if not tekan[2] then btnb.Click else key := #0;
tekan[2] := true;
end;
'C' : begin
if not tekan[3] then btnc.Click else key := #0;

5
tekan[3] := true;
end;
'D' : begin
if not tekan[4] then btnd.Click else key := #0;
tekan[4] := true;
end;
'E' : begin
if not tekan[5] then btne.Click else key := #0;
tekan[5] := true;
end;
'F' : begin
if not tekan[6] then btnf.Click else key := #0;
tekan[6] := true;
end;
'G' : begin
if not tekan[7] then btng.Click else key := #0;
tekan[7] := true;
end;
'H' : begin
if not tekan[8] then btnh.Click else key := #0;
tekan[8] := true;
end;
'I' : begin
if not tekan[9] then btni.Click else key := #0;
tekan[9] := true;
end;
'J' : begin
if not tekan[10] then btnj.Click else key := #0;
tekan[10] := true;
end;
'K' : begin
if not tekan[11] then btnk.Click else key := #0;
tekan[11] := true;
end;
'L' : begin
if not tekan[12] then btnl.Click else key := #0;
tekan[12] := true;
end;
'M' : begin
if not tekan[13] then btnm.Click else key := #0;
tekan[13] := true;
end;
'N' : begin
if not tekan[14] then btnn.Click else key := #0;
tekan[14] := true;
end;
'O' : begin
if not tekan[15] then btno.Click else key := #0;
tekan[15] := true;
end;
'P' : begin
if not tekan[16] then btnp.Click else key := #0;
tekan[16] := true;
end;
'Q' : begin
if not tekan[17] then btnq.Click else key := #0;
tekan[17] := true;

6
end;
'R' : begin
if not tekan[18] then btnr.Click else key := #0;
tekan[18] := true;
end;
'S' : begin
if not tekan[19] then btns.Click else key := #0;
tekan[19] := true;
end;
'T' : begin
if not tekan[20] then btnt.Click else key := #0;
tekan[20] := true;
end;
'U' : begin
if not tekan[21] then btnu.Click else key := #0;
tekan[21] := true;
end;
'V' : begin
if not tekan[22] then btnv.Click else key := #0;
tekan[22] := true;
end;
'W' : begin
if not tekan[23] then btnw.Click else key := #0;
tekan[23] := true;
end;
'X' : begin
if not tekan[24] then btnx.Click else key := #0;
tekan[24] := true;
end;
'Y' : begin
if not tekan[25] then btny.Click else key := #0;
tekan[25] := true;
end;
'Z' : begin
if not tekan[26] then btnz.Click else key := #0;
tekan[26] := true;
end;
end;
end;

procedure TFrmHangman.btnpClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'P' then
begin
tebak[i] := 'P';
lbltebak.caption := tebak;
end;

if lbltebak.Caption <> kata then


salah2 := salah2 + 1;

cek;
btnp.Enabled := false;
end;

7
procedure TFrmHangman.btnqClick(Sender: TObject);
var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'Q' then
begin
tebak[i] := 'Q';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

btnq.Enabled := false;
cek;
end;

procedure TFrmHangman.btnwClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'W' then
begin
tebak[i] := 'W';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btnw.Enabled := false;
end;

procedure TFrmHangman.btneClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'E' then
begin
tebak[i] := 'E';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

8
cek;
btne.Enabled := false;
end;

procedure TFrmHangman.btnrClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'R' then
begin
tebak[i] := 'R';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btnr.Enabled := false;
end;

procedure TFrmHangman.btntClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'T' then
begin
tebak[i] := 'T';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btnt.Enabled := false;
end;

procedure TFrmHangman.btnyClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'Y' then
begin
tebak[i] := 'Y';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

9
if salah1 = length(kata) then
salah2 := salah2 + 1;

cek;
btny.Enabled := false;
end;

procedure TFrmHangman.btnuClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'U' then
begin
tebak[i] := 'U';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btnu.Enabled := false;
end;

procedure TFrmHangman.btniClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'I' then
begin
tebak[i] := 'I';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btni.Enabled := false;
end;

procedure TFrmHangman.btnoClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'O' then
begin
tebak[i] := 'O';
lbltebak.caption := tebak;

10
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btno.Enabled := false;
end;

procedure TFrmHangman.btnaClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'A' then
begin
tebak[i] := 'A';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btna.Enabled := false;
end;

procedure TFrmHangman.btnsClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'S' then
begin
tebak[i] := 'S';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btns.Enabled := false;
end;

procedure TFrmHangman.btndClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do

11
if kata[i] = 'D' then
begin
tebak[i] := 'D';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btnd.Enabled := false;
end;

procedure TFrmHangman.btnfClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'F' then
begin
tebak[i] := 'F';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btnf.Enabled := false;
end;

procedure TFrmHangman.btngClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'G' then
begin
tebak[i] := 'G';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btng.Enabled := false;
end;

procedure TFrmHangman.btnhClick(Sender: TObject);


var i : byte;

12
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'H' then
begin
tebak[i] := 'H';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btnh.Enabled := false;
end;

procedure TFrmHangman.btnjClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'J' then
begin
tebak[i] := 'J';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btnj.Enabled := false;
end;

procedure TFrmHangman.btnkClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'K' then
begin
tebak[i] := 'K';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btnk.Enabled := false;
end;

13
procedure TFrmHangman.btnlClick(Sender: TObject);
var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'L' then
begin
tebak[i] := 'L';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btnl.Enabled := false;
end;

procedure TFrmHangman.btnzClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'Z' then
begin
tebak[i] := 'Z';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btnz.Enabled := false;
end;

procedure TFrmHangman.btnxClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'X' then
begin
tebak[i] := 'X';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

14
cek;
btnx.Enabled := false;
end;

procedure TFrmHangman.btncClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'C' then
begin
tebak[i] := 'C';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btnc.Enabled := false;
end;

procedure TFrmHangman.btnvClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'V' then
begin
tebak[i] := 'V';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btnv.Enabled := false;
end;

procedure TFrmHangman.btnbClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'B' then
begin
tebak[i] := 'B';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

15
if salah1 = length(kata) then
salah2 := salah2 + 1;

cek;
btnb.Enabled := false;
end;

procedure TFrmHangman.btnnClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'N' then
begin
tebak[i] := 'N';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btnn.Enabled := false;
end;

procedure TFrmHangman.btnmClick(Sender: TObject);


var i : byte;
begin
salah1 := 0;
for i := 1 to length(kata) do
if kata[i] = 'M' then
begin
tebak[i] := 'M';
lbltebak.caption := tebak;
end
else
salah1 := salah1 + 1;

if salah1 = length(kata) then


salah2 := salah2 + 1;

cek;
btnm.Enabled := false;
end;

procedure TFrmHangman.mnugameexitClick(Sender: TObject);


begin
Application.Terminate;
end;

procedure TFrmHangman.Timer1Timer(Sender: TObject);


begin
blink := not blink;
if blink then
image2.Picture.loadfromfile(ExtractFilePath(application.ExeName)+'\hm1.bmp')

16
else
image2.Picture.loadfromfile(ExtractFilePath(application.ExeName)+'hm2.bmp');
end;

procedure TFrmHangman.mnuhelpaboutClick(Sender: TObject);


begin
frmabout.Show;
frmabout.BringToFront;
end;

end.

17

You might also like