Tugas Utama: Membuat Game

|

Game Swat
Game ini diposting untuk tujuan tugas. Tidak berbeda jauh dengan game tangkap kelinci yang dibuat sebelumnya. Yang membedakan ini lebih rumit dan memakan cukup banyak waktu dalam proses pembuatan listingnya.

 

                                                                            Form

 LISTING

unit Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, Menus, StdCtrls;

const
  crMaletUp : integer = 5;
  crMaletDown : integer  = 6;
  MissedPoints : integer  = -2;
  HitPoints  : integer = 5;
  MissedCritter : integer = -1;
  CritterSize : integer = 72;
  TimerId  : integer = 1;

type
  THole = record
    Time : integer;
    Dead : boolean;
  end;
 
  TSwatForm = class(TForm)
    MainMenu1: TMainMenu;
    Gamr1: TMenuItem;
    New1: TMenuItem;
    Options1: TMenuItem;
    Stop1: TMenuItem;
    Pause1: TMenuItem;
    About1: TMenuItem;
    Timer1: TTimer;
    GameOverImage: TImage;
    Image1: TImage;
    TimeLabel: TLabel;
    MissLabel: TLabel;
    HitsLabel: TLabel;
    EscapedLabel: TLabel;
    ScoreLabel: TLabel;
    Close1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure New1Click(Sender: TObject);
    procedure Options1Click(Sender: TObject);
    procedure Stop1Click(Sender: TObject);
    procedure Pause1Click(Sender: TObject);
    procedure About1Click(Sender: TObject);
    procedure Close1Click(Sender: TObject);
  private
    { Private declarations }
    Score : integer;
    Hits, Miss, Escaped : integer;
    IsGameOver, IsPause : Boolean;
    Live : TBitmap;
    Dead : TBitmap;
    HoleInfo : array[0..4] of THole;
    Holes : array[0..4] of TPoint;
    procedure WriteScore;
  public
    { Public declarations }
    LiveTime,  Frequence, GameTime : integer;
  end;

var
  SwatForm: TSwatForm;

implementation

uses options, about, Unit1;

{$R *.dfm}
{$R extrares.res}

procedure TSwatForm.FormCreate(Sender: TObject);
begin
  Holes[0] := Point( 10, 10 );
  Holes[1] := Point( 200, 10 );
  Holes[2] := Point( 100, 100 );
  Holes[3] := Point( 10, 200 );
  Holes[4] := Point( 200, 200 );

  Screen.Cursors[crMaletUp] := LoadCursor(HInstance, 'Malet');
  Screen.Cursors[crMaletDown] := LoadCursor(HInstance, 'MaletDown');
  Screen.Cursor := TCursor(crMaletUp);

  randomize;

  Live := TBitmap.Create;
  Live.LoadFromResourceName(HInstance, 'Live');
  Dead := TBitmap.Create;
  Dead.LoadFromResourceName(HInstance, 'Dead');

  IsGameOver := true;
  IsPause := false;
  LiveTime := 10;
  Frequence := 20;
  GameTime := 150;        // fifteen seconds

  Application.OnMinimize := Pause1Click;
  Application.OnRestore := Pause1Click;
end;

procedure TSwatForm.Timer1Timer(Sender: TObject);
var
  i : integer;
begin
  Timer1.Tag := Timer1.Tag + 1;
  i := random(Frequence);
  if (i < 5) then
  begin
    if (HoleInfo[i].Time = 0) then
    begin
      HoleInfo[i].Time := Timer1.Tag + LiveTime;
      HoleInfo[i].Dead := false;
      Canvas.Draw(Holes[i].x, Holes[i].y, Live);
    end;
  end;
  for i := 0 to 4 do
  begin
    if ( (Timer1.Tag > HoleInfo[i].Time ) and ( HoleInfo[i].Time <> 0 ) ) then
    begin
      HoleInfo[i].Time := 0;
      if not(HoleInfo[i].Dead) then
      begin
        inc( Score, MissedCritter );
        inc( Escaped );
      end;
      Canvas.FillRect(Rect(Holes[i].x, Holes[i].y, Holes[i].x + Dead.Width, Holes[i].y + Dead.Height));
    end;
  end;
  WriteScore;
  if (Timer1.Tag >= GameTime) then
    Stop1Click(self);
end;

procedure TSwatForm.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  i : integer;
  hit : boolean;
begin
  Screen.Cursor := TCursor(crMaletDown);

  if (IsGameOver or IsPause) then
    exit;

  hit := false;
  for i := 0 to 4 do
    if ( (not HoleInfo[i].Dead) and (HoleInfo[i].Time <> 0) ) then
      if (X > Holes[i].x ) and ( X < (Holes[i].x + Live.Width) ) and
         ( Y > Holes[i].y ) and ( Y < (Holes[i].y + Live.Height)) then
      begin
        inc( Score, HitPoints );
        HoleInfo[i].Dead := true;
        HoleInfo[i].Time := Timer1.Tag + 2 * LiveTime;
        inc( Hits );
        hit := true;
        Canvas.Draw(Holes[i].x, Holes[i].y, Dead);
      end;
  if not(hit) then
  begin
    inc ( Score, MissedPoints );
    inc( Miss );
  end;
  WriteScore;
end;

procedure TSwatForm.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Screen.Cursor := TCursor(crMaletUp);
end;

procedure TSwatForm.New1Click(Sender: TObject);
begin
  Timer1.Enabled := true;
  Timer1.Tag := 0;
  Score := 0;
  Hits := 0;
  Miss := 0;
  Escaped := 0;
  if (IsPause)
  then begin
    IsPause := false;
    Pause1.Caption := '&Pause';
  end;
  GameOverImage.Visible := false;
  IsGameOver := false;
  FillChar(HoleInfo, sizeof(HoleInfo), 0);
  New1.Enabled := false;
  Options1.Enabled := false;
  Stop1.Enabled := true;
end;

procedure TSwatForm.Options1Click(Sender: TObject);
begin
  OptionsDlg.ShowModal;
end;

procedure TSwatForm.Stop1Click(Sender: TObject);
var
 i : integer;
begin
  Timer1.Enabled := false;
  IsPause := false;
  GameOverImage.Visible := true;
  IsGameOver := true;
  Timer1.Tag := GameTime;
  New1.Enabled := true;
  Options1.Enabled := true;
  Stop1.Enabled := false;
  for i := 0 to 4 do
    if (HoleInfo[i].Time <> 0) then
      Canvas.FillRect(Rect(Holes[i].x, Holes[i].y, Holes[i].x + Dead.Width,
        Holes[i].y + Dead.Height));
end;

procedure TSwatForm.Pause1Click(Sender: TObject);
begin
  if (IsGameOver) then
    exit;

  if (IsPause) then
  begin
    IsPause := false;
    Pause1.Caption := '&Pause';
    Stop1.Enabled := true;
    Timer1.Enabled := true;
  end
  else
  begin
    IsPause := true;
    Pause1.Caption := '&Continue';
    Stop1.Enabled := false;
    Timer1.Enabled := false;
  end;
end;

procedure TSwatForm.About1Click(Sender: TObject);
begin
form1.Show;
end;

procedure TSwatForm.WriteScore;
begin
  TimeLabel.Caption := IntToStr(GameTime - Timer1.Tag);
  HitsLabel.Caption := IntToStr(Hits);
  MissLabel.Caption := IntToStr(Miss);
  EscapedLabel.Caption := IntToStr(Escaped);
  ScoreLabel.Caption := IntToStr(Score);
end;

procedure TSwatForm.Close1Click(Sender: TObject);
begin
Close;
end;
end.

Tugas 2: Membuat Font Style pada Operasi Teks

|

Form dengan checkbox untuk mengubah font style



LISTING FONT STYLE MENGGUNAKAN CHECKBOX:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked=true then memo1.Font.Style:=memo1.Font.Style+[fsbold]
else memo1.Font.Style:=memo1.Font.Style-[fsbold];
end;

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
if checkbox2.Checked=true then memo1.Font.Style:=memo1.Font.Style+[fsitalic]
else memo1.Font.Style:=memo1.Font.Style-[fsitalic];
end;

procedure TForm1.CheckBox3Click(Sender: TObject);
begin
if checkbox3.Checked=true then memo1.Font.Style:=memo1.Font.Style+[fsUnderline]
else memo1.Font.Style:=memo1.Font.Style-[fsUnderline];
end;

end.

Game Tangkap Sepeda

|
Game tangkap sepeda, first my project delphi. silahkan download http://bit.ly/GVU01A

Yang di Pikiran Gue Sekarang, Jadi Pemberontaak

|
    Setelah baca artikel tentang Rezim Stalinist Korea Utara sama nonton kisah perjuangan suku Kurdi di timur sana, gue pengen jadi pemberontaak. Oke, gue perjelas lagi, pemberontaak.

    Skema pemberontaakan yang ada di otak gue kaya gini.
Gue nyari temen sebanyak mungkin biar bisa ngeberontak rame-rame. Lalu, gue bakal nyari juga orang-orang hebat di bidang IT dan senjata. Tujuannya untuk membuat markas rahasia di bawah tanah dan juga membuat program komputer dan senjata yang hebat. Fungsi dari markas itu sebagai pengendali atau pusat komando. Keren kan?.

    Setelah semua itu gue dapat, gue mulai dengan merakit roket yang gak bisa terdeteksi sama satelite. Ide gue sih, roket-nya gue bungkus pake kertas almunium penambal panci atau bungkus chupa chups. *(belum selesai)

Ada Apa Dengan Kita dan Cinta?

|
    Gue bukan seorang pecandu cinta dan sekarang gua gak lagi jatuh cinta. Tapi semua kisah cinta orang lain ataupun gue sendiri punya satu kesamaan dan ngebuat gue bingung. Kita akan selalu berusaha menjadi apa yang orang lain mau, entah dengan kita menyadarinya ataupun tidak.

    Sebenarnya kalimat 'Kita akan selalu berusaha menjadi apa yang orang lain mau' itu bersifat universal. Bisa menyangkut banyak hal seperti perkuliahan di kampus, sekolah, tempat kerja atau apapun itu. Tapi sekarang gue akan membahasnya lebih ke persoalan dalam cinta.

    Ketika kita merasa jatuh cinta tentunya kita akan melakukan hal tersebut. seperti, saat cewe yang kita cintai bilang 'Gue suka cowo botak' atau 'Kamu gak boleh makan mie ayam, itu gak sehat. Lebih baik kamu makan bakso!' otomatis kita akan membotakan diri dan mulai menyukai bakso. Entah apa obsesi cewe seperti itu yang pasti kita akan berusaha mengikutinya.

    Well.. Dengan kita melakukan hal itu kita telah mendiskriminasikan diri sendiri. Kita melawan kemauan, kesukaan, atau kesenangan diri kita demi memuaskan orang lain.
    Kenapa gue bilang orang lain? Karna gebetan ataupun pacar adalah bukan diri kita. Mereka cuma orang yang kebetulan special di hati kita.

    Jadi, kenapa kita memprioritaskan orang lain ketimbang diri sendiri?

TEHJEBIG ENAAAAK

|
tadi pas lagi nongkrong ada 3 macem minuman. Teh Gelas, Aje Big Colla, Susu Cap Enaaaak *(belum selesai)

Hari Ibu

|
    Tersadar setelah membuka sebuah jejaring sosial yang memuat banyak ucapan terima kasih kepada ibu. Ternyata hari ini adalah Hari Ibu.
    Ngomong-ngomong tentang ibu, gue mau cerita sedikit tentang nyokap gue. Nyokap gue orangnya ribet dan suka buat eksperimen dengan korban anaknya sendiri. Contoh, waktu gue sakit tenggorokan, dia bikin minuman dari daun-daunan yang ada di halaman rumah, alih-alih mau nyembuhin, gue mencret 2 hari. Ada lagi ade gue, waktu mau sekolah dia minta tolong disetrikain baju seragamnya, bukannya rapi malah jadi item. Pas ditanya kenapa dengan entengnya dia jawab 'setrikanya mamah taroin daun jambu'. Entah obsesi apa yang ada di otak nyokap gue, yang pasti gue tidak seperti itu.

    Gue gak terlalu deket sama nyokap, tapi gue ngerti arti dari setiap ekspresi mukanya. Kurang lebih seperti ini:
Cemberut= dia lagi bete
Gembira= lagi banyak uang
Gelisah= gak punya uang
Sedih=  merasa kehilangan
Galau= bokap gue telat ngasih uang bulanan

    Satu hal yang harus kalian tau. Nyokap gue kalau mau pergi ngaji udah kaya mau ketemu Barrack Obama. Harus rapi dan gak berantakan sedikit pun. Dan perincian waktu dari dia masih pake daster sampe dia siap berangkat adalah seperti ini:
Mandi= 30 menit
Ngeringin rambut= 30 menit
Nyari baju= 40 menit
Gonta-ganti baju= 1 jam
Pake lipstik= 15 menit
Pake bedak=  20 menit
Ngaca= 3 jam
Total waktu yang dibutuhkan adalah 6 jam 15 menit. Jadi, kalau janjian jam 16:00, dia mulai mandi jam 09:45. Total waktu yang tidak normal untuk ukuran orang normal.

Pesan moral:  Seribet atau sebrutal apapun nyokap kita, percayalah, mereka tetap menyangi kita pada kondisi apapun. Hanya saja, terkadang cara mereka menunjukan kasih sayang berlainan dengan apa yang kita harapkan. Jadilah anak yang keren dan tetap jaga kepercayaan mereka. Happy mother's day!!