Minggu, 18 Oktober 2015

Cara membuat Game Tic Tac Toe paling sederhana menggunakan Delphi 7


Tutorial kali ini adalah bagaimana cara membuat game tic tac toe sagat sederhana, mudah-mudahan dapat memberikan ide dasar bagi anda untuk mengembangkan software. Game tic tac toe kali ini memiliki keterbatasan dimana pemain pertama dan pemain kedua dilakukan secara bergantian pada satu layar, jadi pemain pertama bisa meminjamkan mouse nya setelah untuk mendapatkan giliran main.

Ok!! Mari kita buat dengan sebuah proyek pada Delphi 7 dengan menambahkan komponen Image1 dengan ukuran width dan height 600. Perhatikan gambar berikut
tambahkan procedure init pada private sebagai procedure pembuka permainan seperti gambar berikut

isikan procedure init sebagai berikut :

procedure TForm1.init;
var i:byte;
begin
  image1.Canvas.Pen.Style:=pssolid;
  image1.Canvas.Pen.Width:=3;
  image1.Canvas.Brush.Color:=clwhite;
  image1.Canvas.Pen.Color:=clblack;
  image1.Canvas.Rectangle(0,0,600,600);
  for i:=1 to 2 do begin
    image1.Canvas.MoveTo(200*i,0);
    image1.Canvas.LineTo(200*i,600);
    image1.Canvas.MoveTo(0,200*i);
    image1.Canvas.LineTo(600,200*i);
  end;
  for i:=0 to 8 do begin
    skor[0,i]:=false;
    skor[1,i]:=false;
  end;
  langkah:=0;
end;

Buat variable global seperti berikut

var isuser1:boolean;
    skor:array[0..1,0..8] of boolean;
    langkah:byte;

Kemudian pada Form Create isikan script berikut

procedure TForm1.FormCreate(Sender: TObject);
begin
  isuser1:=true;
  init;
end;

dan pada image1 buka event onmouseup isikan script berikut :

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var indexi,indexj:integer;

procedure cross();
begin
  image1.Canvas.MoveTo(indexi*200+30,indexj*200+30);
  image1.Canvas.LineTo(indexi*200+170,indexj*200+170);

  image1.Canvas.MoveTo(indexi*200+30,indexj*200+170);
  image1.Canvas.LineTo(indexi*200+170,indexj*200+30);
end;

procedure circle();
begin
  image1.Canvas.Ellipse(indexi*200+30,indexj*200+30,indexi*200+170,indexj*200+170);
end;

function isawinner(user:byte):boolean;
begin
  result:=(skor[user,0] and skor[user,1] and skor[user,2])or
          (skor[user,3] and skor[user,4] and skor[user,5])or
          (skor[user,6] and skor[user,7] and skor[user,8])or
          (skor[user,0] and skor[user,3] and skor[user,6])or
          (skor[user,1] and skor[user,4] and skor[user,7])or
          (skor[user,2] and skor[user,5] and skor[user,8])or
          (skor[user,0] and skor[user,4] and skor[user,8])or
          (skor[user,2] and skor[user,4] and skor[user,6]);
end;

begin
  indexi:=x div 200;
  indexj:=y div 200;
  if isuser1 then begin
    cross;
    skor[0,indexi+3*indexj]:=true;
    if isawinner(0) then begin
      messagebox(handle,'The Cross is a winner!!','Winner',MB_OK or MB_ICONINFORMATION);
      init;
    end else if langkah=8 then begin
      messagebox(handle,'Draw !!','Draw',MB_OK or MB_ICONINFORMATION);
      init;
    end else inc(langkah);
  end else begin
    circle;
    skor[1,indexi+3*indexj]:=true;
    if isawinner(1) then begin
      messagebox(handle,'The Cricle is a winner!!','Winner',MB_OK or MB_ICONINFORMATION);
      init;
    end else if langkah=8 then begin
      messagebox(handle,'Draw !!','Draw',MB_OK or MB_ICONINFORMATION);
      init;
    end else inc(langkah);
  end;
  isuser1:=not isuser1;
end;

sebagai hasilnya seperti berikut
bisa juga dilihat videonya

3 komentar: