Ersun
03-18-2008, 02:27 PM
Delphi de yazılmış tetris oyunu
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, ExtCtrls, StdCtrls, MPlayer, XPMan, Menus, DB, DBTables,
Grids, DBGrids, FileCtrl;
type
TForm1 = class(TForm)
Timer1: TTimer;
MediaPlayer1: TMediaPlayer;
XPManifest1: TXPManifest;
BitBtn1: TBitBtn;
DataSource1: TDataSource;
Table1: TTable;
BitBtn2: TBitBtn;
Timer2: TTimer;
BitBtn3: TBitBtn;
FileListBox1: TFileListBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn1Click(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn2Click(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1 : TForm1;
Sx1 : Byte;
Sy1 : Byte;
Sx2 : Byte;
Sy2 : Byte;
Sx3 : Byte;
Sy3 : Byte;
Sx4 : Byte;
Sy4 : Byte;
Tip : Byte;
Yon : Byte;
Art : Byte;
Ps : Byte;
Tp : Byte;
Tp1 : Byte;
Yn : Byte;
Yn1 : Byte;
Cev : Byte;
BrPuan : Byte;
Int1 : Integer;
Int2 : Integer;
Int3 : Integer;
Int4 : Integer;
Int5 : Integer;
Int6 : Integer;
Hiz1 : Integer;
Hiz2 : Integer;
Puan : Integer;
PatlamaSay : Integer;
Def : String;
Name : String;
Str : String;
KareKontrol : Boolean;
Islem : Boolean;
Cikis : Boolean;
Dosya : TextFile;
KareX : Array[0..11,0..21] Of Boolean;
implementation
{$R *.dfm}
Procedure Music(Secenek : Byte);
Begin
Case Secenek Of
1 : Form1.MediaPlayer1.FileName:=Def+'\Ao-laser.wav';
2 : Form1.MediaPlayer1.FileName:=Def+'\Padexplo.wav';
3 : Form1.MediaPlayer1.FileName:=Def+'\clicker.wav';
4 : Form1.MediaPlayer1.FileName:=Def+'\wmpaud7.wav';
End;
Form1.MediaPlayer1.Open;
Form1.MediaPlayer1.Play;
End;
Procedure PuanYaz;
Begin
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Font.Color :=clWhite;
Form1.Canvas.TextOut(240,100,'Ps :'+IntToStr(PatlamaSay));
Form1.Canvas.TextOut(240,120,'Br P:'+IntToStr(BrPuan));
Form1.Canvas.TextOut(240,140,'Puan:'+IntToStr(Puan ));
Form1.Canvas.TextOut(240,160,'Hız :'+IntToStr(500-Hiz1));
End;
Procedure PuanHesapla;
Begin
PatlamaSay:=PatlamaSay+Ps;
If Ps=1 Then Puan:=Puan+10;
If Ps=2 Then Puan:=Puan+25;
If Ps=3 Then Puan:=Puan+40;
If Ps=4 Then Puan:=Puan+60;
Hiz1:=Hiz1-5;
PuanYaz;
End;
Procedure KareCiz(Drm : Byte);
Begin
If Drm=0 Then Form1.Canvas.Brush.Color:=clBlack;
If Drm=1 Then Form1.Canvas.Brush.Color:=clSilver;
Form1.Canvas.Rectangle(Sx1*20,Sy1*20,(Sx1+1)*20,(S y1+1)*20);
Form1.Canvas.Rectangle(Sx2*20,Sy2*20,(Sx2+1)*20,(S y2+1)*20);
Form1.Canvas.Rectangle(Sx3*20,Sy3*20,(Sx3+1)*20,(S y3+1)*20);
Form1.Canvas.Rectangle(Sx4*20,Sy4*20,(Sx4+1)*20,(S y4+1)*20);
Exit;
Form1.Canvas.Font.Color:=clBlack;
Form1.Canvas.TextOut(Sx1*20+5,Sy1*20+1,'1');
Form1.Canvas.TextOut(Sx2*20+5,Sy2*20+1,'2');
Form1.Canvas.TextOut(Sx3*20+5,Sy3*20+1,'3');
Form1.Canvas.TextOut(Sx4*20+5,Sy4*20+1,'4');
End;
Procedure Skor;
Begin
Music(4);
Form1.Timer2.Interval:=1000;
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(0,0,Form1.Width,Form1.Heigh t);
Form1.Canvas.Brush.Color:=clWhite;
Form1.Canvas.Rectangle(15,18,345,277);
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(18,21,342,274);
Form1.Canvas.Font.Size:=14;
Form1.Canvas.Font.Color:=clWhite;
Int1:=0;
Form1.Table1.First;
Sleep(100);
While Not Form1.Table1.Eof Do
Begin
Form1.Canvas.Brush.Color:=clBlack;
Int1:=Int1+1;
Form1.Canvas.TextOut(030,Int1*25,IntToStr(Int1));
Form1.Canvas.TextOut(070,Int1*25,Form1.Table1.Fiel ds[1].AsString);
Form1.Canvas.TextOut(280,Int1*25,IntToStr(Form1.Ta ble1.Fields[2].AsInteger));
If Int1<>10 Then
Begin
Form1.Canvas.Brush.Color:=clWhite;
Form1.Canvas.Rectangle(18,20+Int1*25,342,23+Int1*2 5);
End;
Form1.Table1.Next;
Sleep(100);
End;
Cikis:=True;
End;
Procedure KareGoster(Drm : Byte);
Var
Ust,Sol : Byte;
Begin
Ust:=20;
Sol:=220;
If Drm=0 Then Form1.Canvas.Brush.Color:=clBlack;
If Drm=1 Then Form1.Canvas.Brush.Color:=clWhite;
Form1.Canvas.Rectangle(Sol+Sx1*10,Ust+Sy1*10,Sol+( Sx1+1)*10,Ust+(Sy1+1)*10);
Form1.Canvas.Rectangle(Sol+Sx2*10,Ust+Sy2*10,Sol+( Sx2+1)*10,Ust+(Sy2+1)*10);
Form1.Canvas.Rectangle(Sol+Sx3*10,Ust+Sy3*10,Sol+( Sx3+1)*10,Ust+(Sy3+1)*10);
Form1.Canvas.Rectangle(Sol+Sx4*10,Ust+Sy4*10,Sol+( Sx4+1)*10,Ust+(Sy4+1)*10);
End;
Procedure Sag;
Begin
Islem:=True;
If (Tip=1) And (Yon=1) And (KareX[Sx4+1,Sy4]=True) Then Islem:=False;
If (Tip=1) And (Yon=2) And ((KareX[Sx1+1,Sy1]=True) Or (KareX[Sx2+1,Sy2]=True) Or
(KareX[Sx3+1,Sy3]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=2) And (Yon=1) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=3) And (Yon=1) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=3) And (Yon=2) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx3+1,Sy3]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=4) And (Yon=1) And ((KareX[Sx3+1,Sy3]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=4) And (Yon=2) And ((KareX[Sx1+1,Sy1]=True) Or (KareX[Sx3+1,Sy3]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=4) And (Yon=3) And ((KareX[Sx1+1,Sy1]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=4) And (Yon=4) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx3+1,Sy3]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=5) And (Yon=1) And ((KareX[Sx1+1,Sy1]=True) Or (KareX[Sx2+1,Sy2]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=5) And (Yon=2) And ((KareX[Sx1+1,Sy1]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=5) And (Yon=3) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx3+1,Sy3]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=5) And (Yon=4) And ((KareX[Sx3+1,Sy3]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=6) And (Yon=1) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx3+1,Sy3]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=6) And (Yon=2) And ((KareX[Sx3+1,Sy3]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=6) And (Yon=3) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx3+1,Sy3]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=6) And (Yon=4) And ((KareX[Sx1+1,Sy1]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=7) And (Yon=1) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=7) And (Yon=2) And ((KareX[Sx1+1,Sy1]=True) Or (KareX[Sx3+1,Sy3]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If Islem=True Then
Begin
KareCiz(0);
Sx1:=Sx1+1;
Sx2:=Sx2+1;
Sx3:=Sx3+1;
Sx4:=Sx4+1;
KareCiz(1);
Exit;
End;
Beep;
End;
Procedure Sol;
Begin
Islem:=True;
If (Tip=1) And (Yon=1) And (KareX[Sx1-1,Sy1]=True) Then Islem:=False;
If (Tip=1) And (Yon=2) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True) Or
(KareX[Sx3-1,Sy3]=True) Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If (Tip=2) And (Yon=1) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx3-1,Sy3]=True)) Then Islem:=False;
If (Tip=3) And (Yon=1) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx3-1,Sy3]=True)) Then Islem:=False;
If (Tip=3) And (Yon=2) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)
Or (KareX[Sx3-1,Sy3]=True)) Then Islem:=False;
If (Tip=4) And (Yon=1) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If (Tip=4) And (Yon=2) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx3-1,Sy3]=True)
Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If (Tip=4) And (Yon=3) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)) Then Islem:=False;
If (Tip=4) And (Yon=4) And ((KareX[Sx2-1,Sy2]=True) Or (KareX[Sx1-1,Sy1]=True)
Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If (Tip=5) And (Yon=1) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)
Or (KareX[Sx3-1,Sy3]=True)) Then Islem:=False;
If (Tip=5) And (Yon=2) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)) Then Islem:=False;
If (Tip=5) And (Yon=3) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx3-1,Sy3]=True)
Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If (Tip=5) And (Yon=4) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If (Tip=6) And (Yon=1) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)
Or (KareX[Sx3-1,Sy3]=True)) Then Islem:=False;
If (Tip=6) And (Yon=2) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If (Tip=6) And (Yon=3) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)
Or (KareX[Sx3-1,Sy3]=True)) Then Islem:=False;
If (Tip=6) And (Yon=4) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)) Then Islem:=False;
If (Tip=7) And (Yon=1) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx3-1,Sy3]=True)) Then Islem:=False;
If (Tip=7) And (Yon=2) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)
Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If Islem=True Then
Begin
KareCiz(0);
Sx1:=Sx1-1;
Sx2:=Sx2-1;
Sx3:=Sx3-1;
Sx4:=Sx4-1;
KareCiz(1);
Exit;
End;
Beep;
End;
Procedure SekilAktar(X1,Y1,X2,Y2,X3,Y3,X4,Y4:Byte);
Begin
Sx1:=X1;
Sx2:=X2;
Sx3:=X3;
Sx4:=X4;
Sy1:=Y1;
Sy2:=Y2;
Sy3:=Y3;
Sy4:=Y4;
End;
Procedure SekilDeg(X1,Y1,X2,Y2,X3,Y3,X4,Y4,Yn:Integer);
Begin
If (KareX[Sx1+X1,Sy1+Y1]=True) Or (KareX[Sx2+X2,Sy2+Y2]=True)
Or (KareX[Sx3+X3,Sy3+Y3]=True) Or (KareX[Sx4+X4,Sy4+Y4]=True) Then Exit;
KareCiz(0);
Sx1:=Sx1+X1;
Sx2:=Sx2+X2;
Sx3:=Sx3+X3;
Sx4:=Sx4+X4;
Sy1:=Sy1+Y1;
Sy2:=Sy2+Y2;
Sy3:=Sy3+Y3;
Sy4:=Sy4+Y4;
Yon:=Yn;
KareCiz(1);
Music(3);
End;
Procedure OyunEkrani;
Begin
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(0,0,Form1.Width,Form1.Heigh t);
Form1.Canvas.Pen.Color:=clBlack;
Form1.Canvas.Brush.Color:=clWhite;
Form1.Canvas.Rectangle(15,15,225,425);
Form1.Canvas.Rectangle(230,15,340,215);
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(20,20,220,420);
Form1.Canvas.Rectangle(235,20,335,210);
Form1.Canvas.Font.Size:=12;
Form1.Canvas.Font.Name:='Courier New Tur';
End;
Procedure Sekil(Tip1,Yon1 : Byte);
Begin
Tip:=Tip1;
Yon:=Yon1;
If (Tip1=1) And (Yon1=1) Then SekilAktar(4,1,5,1,6,1,7,1); // Çubuk Yatay
If (Tip1=1) And (Yon1=2) Then SekilAktar(4,1,4,2,4,3,4,4); // Çubuk Dikey
If (Tip1=2) And (Yon1=1) Then SekilAktar(4,1,5,1,4,2,5,2); // Kare
If (Tip1=3) And (Yon1=1) Then SekilAktar(4,1,5,1,5,2,6,2); // Z
If (Tip1=3) And (Yon1=2) Then SekilAktar(4,2,4,3,5,1,5,2); // N
If (Tip1=4) And (Yon1=1) Then SekilAktar(4,1,5,1,6,1,5,2); // T
If (Tip1=4) And (Yon1=2) Then SekilAktar(4,2,4,3,4,4,5,3); // I-
If (Tip1=4) And (Yon1=3) Then SekilAktar(5,1,4,2,5,2,6,2); //_I_
If (Tip1=4) And (Yon1=4) Then SekilAktar(4,2,5,1,5,2,5,3); //-I-
If (Tip1=5) And (Yon1=1) Then SekilAktar(4,1,4,2,4,3,5,3); //L
If (Tip1=5) And (Yon1=2) Then SekilAktar(6,1,4,2,5,2,6,2); //_I
If (Tip1=5) And (Yon1=3) Then SekilAktar(4,1,5,1,5,2,5,3); //-I
If (Tip1=5) And (Yon1=4) Then SekilAktar(4,1,5,1,6,1,4,2); //I-
If (Tip1=6) And (Yon1=1) Then SekilAktar(4,3,5,1,5,2,5,3); // _|
If (Tip1=6) And (Yon1=2) Then SekilAktar(4,1,5,1,6,1,6,2); // _|
If (Tip1=6) And (Yon1=3) Then SekilAktar(4,1,4,2,4,3,5,1); // _|
If (Tip1=6) And (Yon1=4) Then SekilAktar(4,1,4,2,5,2,6,2); // _|
If (Tip1=7) And (Yon1=1) Then SekilAktar(5,1,6,1,4,2,5,2); // /Z
If (Tip1=7) And (Yon1=2) Then SekilAktar(4,1,4,2,5,2,5,3); // /N
End;
Procedure Yeni;
Begin
Form1.Timer1.Interval:=0;
If Cikis=True Then Exit;
Tp:=Tp1;
Yn:=Yn1;
Sekil(Tp1,Yn1);
KareGoster(0);
Tp1:=Random(7)+1;
Repeat
Yn1:=Random(4)+1;
Until ((Tp1=1) And (Yn1<=2)) Or
((Tp1=2) And (Yn1<=1)) Or
((Tp1=3) And (Yn1<=2)) Or
((Tp1=4) And (Yn1<=4)) Or
((Tp1=5) And (Yn1<=4)) Or
((Tp1=6) And (Yn1<=4)) Or
((Tp1=7) And (Yn1<=2));
Sekil(Tp1,Yn1);
KareGoster(1);
//Sekil(1,1);
Sekil(Tp,Yn);
KareCiz(1);
Sleep(200);
Form1.Timer1.Interval:=Hiz1;
End;
Procedure YonDeg;
Begin
If (Tip=1) And (Yon=1) Then // Çubuk Yatay --> Dikey
Begin
SekilDeg(1,-1,0,0,-1,1,-2,2,2);
Exit;
End;
If (Tip=1) And (Yon=2) Then // Çubuk Dikey --> Yatay
Begin
SekilDeg(-1,1,0,0,1,-1,2,-2,1);
Exit;
End;
If (Tip=3) And (Yon=1) Then // Z --> N
Begin
SekilDeg(0,1,-1,2,0,-1,-1,0,2);
Exit;
End;
If (Tip=3) And (Yon=2) Then // N --> Z
Begin
SekilDeg(0,-1,1,-2,0,1,1,0,1);
Exit;
End;
If (Tip=4) And (Yon=1) Then // T --> I-
Begin
SekilDeg(1,-1,0,0,-1,1,1,-1,2);
Exit;
End;
If (Tip=4) And (Yon=2) Then // I- --> T
Begin
SekilDeg(0,0,-1,0,0,-1,0,0,3);
Exit;
End;
If (Tip=4) And (Yon=3) Then //
Begin
SekilDeg(-1,1,1,-1,0,0,-1,1,4);
Exit;
End;
If (Tip=4) And (Yon=4) Then //
Begin
SekilDeg(0,0,0,1,1,0,0,0,1);
Exit;
End;
If (Tip=5) And (Yon=1) Then // L
Begin
SekilDeg(1,1,-1,1,0,0,0,0,2);
Exit;
End;
If (Tip=5) And (Yon=2) Then // L
Begin
SekilDeg(-1,0,2,-1,1,0,0,1,3);
Exit;
End;
If (Tip=5) And (Yon=3) Then // L
Begin
SekilDeg(0,0,0,0,1,-1,-1,-1,4);
Exit;
End;
If (Tip=5) And (Yon=4) Then // L
Begin
SekilDeg(0,-1,-1,0,-2,1,1,0,1);
Exit;
End;
If (Tip=6) And (Yon=1) Then // _|
Begin
SekilDeg(-1,-1,-1,1,0,0,0,0,2);
Exit;
End;
If (Tip=6) And (Yon=2) Then // _|
Begin
SekilDeg(1,-1,0,0,-1,1,0,-2,3);
Exit;
End;
If (Tip=6) And (Yon=3) Then // _|
Begin
SekilDeg(0,0,0,0,1,-1,1,1,4);
Exit;
End;
If (Tip=6) And (Yon=4) Then // _|
Begin
SekilDeg(0,2,1,-1,0,0,-1,1,1);
Exit;
End;
If (Tip=7) And (Yon=1) Then // Z --> N
Begin
SekilDeg(-1,-1,-2,0,1,-1,0,0,2);
Exit;
End;
If (Tip=7) And (Yon=2) Then // N --> Z
Begin
SekilDeg(1,1,2,0,-1,1,0,0,1);
Exit;
End;
End;
procedure TForm1.FormCreate(Sender: TObject);
begin
GetDir(0,Def);
Table1.DatabaseName:=Def;
Table1.TableName:='Score.db';
Table1.Open;
FileListBox1.Directory:=Def;
Form1.Table1.IndexName:='byPounts';
end;
Procedure Yaz;
Begin
For Int5:=1 To 10 Do
Begin
For Int6:=1 To 20 Do
Begin
If KareX[Int5,Int6]=True Then Form1.Canvas.Brush.Color:=clWhite;
If KareX[Int5,Int6]=False Then Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(Int5*20,Int6*20,(Int5+1)*20 ,(Int6+1)*20);
{ If KareX[Int5,Int6]=True Then Form1.Canvas.Brush.Color:=clGreen;
If KareX[Int5,Int6]=False Then Form1.Canvas.Brush.Color:=clGray;
Form1.Canvas.Rectangle(300+Int5*20,Int6*20,300+(In t5+1)*20,(Int6+1)*20); }
End;
End;
End;
Procedure Kontrol;
Begin
Ps:=0;
For Int1:=1 To 20 Do
Begin
KareKontrol:=True;
For Int2:=1 To 10 Do
Begin
If KareX[Int2,Int1]=False Then KareKontrol:=False;
End;
If KareKontrol=True Then
Begin
For Int3:=Int1 DownTo 2 Do
Begin
For Int4:=1 To 10 Do
Begin
KareX[Int4,Int3]:=KareX[Int4,Int3-1];
End;
End;
For Int4:=1 To 10 Do KareX[Int4,1]:=False;
Music(2);
Ps:=Ps+1;
Yaz;
Sleep(200);
Form1.Timer1.Interval:=Hiz1;
End;
End;
If Ps>0 Then PuanHesapla;
End;
Procedure GameOwer;
Var
A,B : Byte;
Begin
Cikis:=True;
Form1.Timer1.Interval:=0;
Form1.Canvas.Brush.Color:=clWhite;
For A:=20 DownTo 1 Do
Begin
For B:=1 To 10 Do
Begin
Form1.Canvas.Rectangle(B*20,A*20,(B+1)*20,(A+1)*20 );
Sleep(5);
End;
End;
Name:=InputBox('Score','İsminizi Giriniz...',");
If Name=" Then Name:='İsimsiz';
Form1.Table1.Append;
Form1.Table1.Fields[1].AsString:=Name;
Form1.Table1.Fields[2].AsInteger:=Puan;
Form1.Table1.Post;
Form1.Table1.Last;
If Form1.Table1.RecordCount>10 Then Form1.Table1.Delete;
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(0,0,Form1.Width,Form1.Heigh t);
Form1.BitBtn1.Visible:=True;
Form1.BitBtn2.Visible:=True;
Form1.BitBtn3.Visible:=True;
Skor;
End;
Procedure Taban;
Begin
If Cikis=True Then Exit;
Form1.Timer1.Interval:=0;
KareX[Sx1,Sy1]:=True;
KareX[Sx2,Sy2]:=True;
KareX[Sx3,Sy3]:=True;
KareX[Sx4,Sy4]:=True;
For Int1:=1 To 10 Do
Begin
If KareX[Int1,2]=True Then Cikis:=True;
End;
If Cikis=True Then
Begin
Form1.Timer1.Interval:=0;
GameOwer;
Exit;
End;
Yaz;
Music(1);
Kontrol;
Yeni;
End;
Procedure Kaydet;
Begin
Cikis:=True;
Form1.Timer1.Interval:=0;
Cev:=Application.MessageBox('Oyununuzu Kaydetmek İstiyor Musunuz...','Tetris',36);
If Cev=6 Then
Begin
Name:=InputBox('Kaydet','Kayıt İçin Bir İsim Girin...',");
If Name=" Then
Begin
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(0,0,Form1.Width,Form1.Heigh t);
Form1.BitBtn1.Visible:=True;
Form1.BitBtn2.Visible:=True;
Form1.BitBtn3.Visible:=True;
Music(4);
Form1.Timer2.Interval:=1000;
Exit;
End;
AssignFile(Dosya,Def+'\'+Name+'.ttrs');
RewRite(Dosya);
For Int1:=1 To 20 Do
Begin
Str:=";
For Int2:=1 To 10 Do
Begin
If KareX[Int2,Int1]=True Then Str:=Str+'1';
If KareX[Int2,Int1]=False Then Str:=Str+'0';
End;
Writeln(Dosya,Str);
End;
Writeln(Dosya,IntToStr(PatlamaSay));
Writeln(Dosya,IntToStr(Puan));
Writeln(Dosya,IntToStr(Hiz1));
CloseFile(Dosya);
End;
Music(4);
Form1.Timer2.Interval:=1000;
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(0,0,Form1.Width,Form1.Heigh t);
Form1.BitBtn1.Visible:=True;
Form1.BitBtn2.Visible:=True;
Form1.BitBtn3.Visible:=True;
End;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
If Cikis=True Then
Begin
Timer1.Interval:=0;
Exit;
End;
If (Tip=1) And (Yon=1) And ((KareX[Sx1,Sy1+1]=True) Or (KareX[Sx2,Sy2+1]=True) Or
(KareX[Sx3,Sy3+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=1) And (Yon=2) And (KareX[Sx4,Sy4+1]=True) Then Taban;
If (Tip=2) And (Yon=1) And ((KareX[Sx3,Sy3+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=3) And (Yon=1) And ((KareX[Sx1,Sy1+1]=True) Or (KareX[Sx3,Sy3+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=3) And (Yon=2) And ((KareX[Sx2,Sy2+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=4) And (Yon=1) And ((KareX[Sx1,Sy1+1]=True) Or (KareX[Sx3,Sy3+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=4) And (Yon=2) And ((KareX[Sx3,Sy3+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=4) And (Yon=3) And ((KareX[Sx2,Sy2+1]=True) Or (KareX[Sx3,Sy3+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=4) And (Yon=4) And ((KareX[Sx1,Sy1+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=5) And (Yon=1) And ((KareX[Sx3,Sy3+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=5) And (Yon=2) And ((KareX[Sx2,Sy2+1]=True) Or (KareX[Sx3,Sy3+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=5) And (Yon=3) And ((KareX[Sx1,Sy1+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=5) And (Yon=4) And ((KareX[Sx2,Sy2+1]=True) Or (KareX[Sx3,Sy3+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=6) And (Yon=1) And ((KareX[Sx1,Sy1+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=6) And (Yon=2) And ((KareX[Sx1,Sy1+1]=True) Or (KareX[Sx2,Sy2+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=6) And (Yon=3) And ((KareX[Sx3,Sy3+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=6) And (Yon=4) And ((KareX[Sx2,Sy2+1]=True) Or (KareX[Sx3,Sy3+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=7) And (Yon=1) And ((KareX[Sx2,Sy2+1]=True) Or (KareX[Sx3,Sy3+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=7) And (Yon=2) And ((KareX[Sx2,Sy2+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If Cikis=True Then Exit;
Kontrol;
Art:=1;
KareCiz(0);
Sy1:=Sy1+Art;
Sy2:=Sy2+Art;
Sy3:=Sy3+Art;
Sy4:=Sy4+Art;
KareCiz(1);
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If Cikis=True Then
Begin
Timer1.Interval:=0;
Exit;
End;
If Key=37 Then Sol;
If Key=38 Then YonDeg;
If Key=39 Then Sag;
If Key=40 Then Timer1.Interval:=Hiz2;
If Key=27 Then Kaydet;
If (Key=32) And (Timer1.Interval=0) Then
Begin
Timer1.Interval:=Hiz1;
Exit;
End;
If (Key=32) And (Timer1.Interval<>0) Then
Begin
Timer1.Interval:=0;
Exit;
End;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Show;
MediaPlayer1.Stop;
Timer2.Interval:=0;
BitBtn1.Visible:=False;
BitBtn2.Visible:=False;
BitBtn3.Visible:=False;
OyunEkrani;
Cikis:=False;
Hiz1:=500;
Hiz2:=10;
Art:=20;
Ps:=1;
BrPuan:=10;
Puan:=0;
Patlamasay:=0;
Randomize;
Tp1:=Random(7)+1;
Repeat
Yn1:=Random(4)+1;
Until ((Tp1=1) And (Yn1<=2)) Or
((Tp1=2) And (Yn1<=1)) Or
((Tp1=3) And (Yn1<=2)) Or
((Tp1=4) And (Yn1<=4)) Or
((Tp1=5) And (Yn1<=4)) Or
((Tp1=6) And (Yn1<=4)) Or
((Tp1=7) And (Yn1<=2));
Sekil(Tp1,Yn1);
KareGoster(1);
For Int1:=0 To 21 Do
Begin
KareX[00,Int1]:=True;
KareX[11,Int1]:=True;
End;
For Int1:=0 To 11 Do
Begin
KareX[Int1,00]:=True;
KareX[Int1,21]:=True;
End;
For Int1:=1 To 10 Do
Begin
For Int2:=1 To 20 Do
Begin
KareX[Int1,Int2]:=False;
End;
End;
PuanYaz;
KareCiz(1);
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If Cikis=True Then
Begin
Timer1.Interval:=0;
Exit;
End;
If Key=40 Then Timer1.Interval:=Hiz1;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If Button=mbRight Then YonDeg;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Skor;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
If MediaPlayer1.Position=MediaPlayer1.Length Then Music(4);
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
Music(4);
Timer2.Interval:=1000;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
FileListBox1.Directory:='C:\';
FileListBox1.Directory:=Def;
Music(4);
Form1.Timer2.Interval:=1000;
FileListBox1.Visible:=True;
BitBtn1.Visible:=False;
BitBtn2.Visible:=False;
BitBtn3.Visible:=False;
Button1.Visible:=True;
Button2.Visible:=True;
Button3.Visible:=True;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
FileListBox1.Visible:=False;
BitBtn1.Visible:=True;
BitBtn2.Visible:=True;
BitBtn3.Visible:=True;
Button1.Visible:=False;
Button2.Visible:=False;
Button3.Visible:=False;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
If FileListBox1.ItemIndex=-1 Then
Begin
Application.MessageBox('Lütfen Kayıtlardan Birini Seçin...','Sil',64);
Exit;
End;
DeleteFile(FileListBox1.FileName);
FileListBox1.Directory:='C:\';
FileListBox1.Directory:=Def;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
If FileListBox1.ItemIndex=-1 Then
Begin
Application.MessageBox('Lütfen Kayıtlardan Birini Seçin...','Başla',64);
Exit;
End;
MediaPlayer1.Stop;
Form1.Timer2.Interval:=0;
FileListBox1.Visible:=False;
Button1.Visible:=False;
Button2.Visible:=False;
Button3.Visible:=False;
OyunEkrani;
AssignFile(Dosya,FileListBox1.FileName);
Reset(Dosya);
For Int1:=0 To 21 Do
Begin
KareX[00,Int1]:=True;
KareX[11,Int1]:=True;
End;
For Int1:=0 To 11 Do
Begin
KareX[Int1,00]:=True;
KareX[Int1,21]:=True;
End;
For Int1:=1 To 20 Do
Begin
Readln(Dosya,Str);
For Int2:=1 To 10 Do
Begin
If Str[Int2]='0' Then
Begin
Form1.Canvas.Brush.Color:=clBlack;
KareX[Int2,Int1]:=False;
End;
If Str[Int2]='1' Then
Begin
Form1.Canvas.Brush.Color:=clWhite;
KareX[Int2,Int1]:=True;
End;
Form1.Canvas.Rectangle(Int2*20,Int1*20,(Int2+1)*20 ,(Int1+1)*20);
End;
End;
Readln(Dosya,Str);
PatlamaSay:=StrToInt(Str);
Readln(Dosya,Str);
Puan:=StrToInt(Str);
Readln(Dosya,Str);
Hiz1:=StrToInt(Str);
CloseFile(Dosya);
Hiz2:=10;
Randomize;
Tp1:=Random(7)+1;
Repeat
Yn1:=Random(4)+1;
Until ((Tp1=1) And (Yn1<=2)) Or
((Tp1=2) And (Yn1<=1)) Or
((Tp1=3) And (Yn1<=2)) Or
((Tp1=4) And (Yn1<=4)) Or
((Tp1=5) And (Yn1<=4)) Or
((Tp1=6) And (Yn1<=4)) Or
((Tp1=7) And (Yn1<=2));
Sekil(Tp1,Yn1);
PuanYaz;
KareGoster(1);
KareCiz(1);
Cikis:=False;
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, ExtCtrls, StdCtrls, MPlayer, XPMan, Menus, DB, DBTables,
Grids, DBGrids, FileCtrl;
type
TForm1 = class(TForm)
Timer1: TTimer;
MediaPlayer1: TMediaPlayer;
XPManifest1: TXPManifest;
BitBtn1: TBitBtn;
DataSource1: TDataSource;
Table1: TTable;
BitBtn2: TBitBtn;
Timer2: TTimer;
BitBtn3: TBitBtn;
FileListBox1: TFileListBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn1Click(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn2Click(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1 : TForm1;
Sx1 : Byte;
Sy1 : Byte;
Sx2 : Byte;
Sy2 : Byte;
Sx3 : Byte;
Sy3 : Byte;
Sx4 : Byte;
Sy4 : Byte;
Tip : Byte;
Yon : Byte;
Art : Byte;
Ps : Byte;
Tp : Byte;
Tp1 : Byte;
Yn : Byte;
Yn1 : Byte;
Cev : Byte;
BrPuan : Byte;
Int1 : Integer;
Int2 : Integer;
Int3 : Integer;
Int4 : Integer;
Int5 : Integer;
Int6 : Integer;
Hiz1 : Integer;
Hiz2 : Integer;
Puan : Integer;
PatlamaSay : Integer;
Def : String;
Name : String;
Str : String;
KareKontrol : Boolean;
Islem : Boolean;
Cikis : Boolean;
Dosya : TextFile;
KareX : Array[0..11,0..21] Of Boolean;
implementation
{$R *.dfm}
Procedure Music(Secenek : Byte);
Begin
Case Secenek Of
1 : Form1.MediaPlayer1.FileName:=Def+'\Ao-laser.wav';
2 : Form1.MediaPlayer1.FileName:=Def+'\Padexplo.wav';
3 : Form1.MediaPlayer1.FileName:=Def+'\clicker.wav';
4 : Form1.MediaPlayer1.FileName:=Def+'\wmpaud7.wav';
End;
Form1.MediaPlayer1.Open;
Form1.MediaPlayer1.Play;
End;
Procedure PuanYaz;
Begin
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Font.Color :=clWhite;
Form1.Canvas.TextOut(240,100,'Ps :'+IntToStr(PatlamaSay));
Form1.Canvas.TextOut(240,120,'Br P:'+IntToStr(BrPuan));
Form1.Canvas.TextOut(240,140,'Puan:'+IntToStr(Puan ));
Form1.Canvas.TextOut(240,160,'Hız :'+IntToStr(500-Hiz1));
End;
Procedure PuanHesapla;
Begin
PatlamaSay:=PatlamaSay+Ps;
If Ps=1 Then Puan:=Puan+10;
If Ps=2 Then Puan:=Puan+25;
If Ps=3 Then Puan:=Puan+40;
If Ps=4 Then Puan:=Puan+60;
Hiz1:=Hiz1-5;
PuanYaz;
End;
Procedure KareCiz(Drm : Byte);
Begin
If Drm=0 Then Form1.Canvas.Brush.Color:=clBlack;
If Drm=1 Then Form1.Canvas.Brush.Color:=clSilver;
Form1.Canvas.Rectangle(Sx1*20,Sy1*20,(Sx1+1)*20,(S y1+1)*20);
Form1.Canvas.Rectangle(Sx2*20,Sy2*20,(Sx2+1)*20,(S y2+1)*20);
Form1.Canvas.Rectangle(Sx3*20,Sy3*20,(Sx3+1)*20,(S y3+1)*20);
Form1.Canvas.Rectangle(Sx4*20,Sy4*20,(Sx4+1)*20,(S y4+1)*20);
Exit;
Form1.Canvas.Font.Color:=clBlack;
Form1.Canvas.TextOut(Sx1*20+5,Sy1*20+1,'1');
Form1.Canvas.TextOut(Sx2*20+5,Sy2*20+1,'2');
Form1.Canvas.TextOut(Sx3*20+5,Sy3*20+1,'3');
Form1.Canvas.TextOut(Sx4*20+5,Sy4*20+1,'4');
End;
Procedure Skor;
Begin
Music(4);
Form1.Timer2.Interval:=1000;
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(0,0,Form1.Width,Form1.Heigh t);
Form1.Canvas.Brush.Color:=clWhite;
Form1.Canvas.Rectangle(15,18,345,277);
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(18,21,342,274);
Form1.Canvas.Font.Size:=14;
Form1.Canvas.Font.Color:=clWhite;
Int1:=0;
Form1.Table1.First;
Sleep(100);
While Not Form1.Table1.Eof Do
Begin
Form1.Canvas.Brush.Color:=clBlack;
Int1:=Int1+1;
Form1.Canvas.TextOut(030,Int1*25,IntToStr(Int1));
Form1.Canvas.TextOut(070,Int1*25,Form1.Table1.Fiel ds[1].AsString);
Form1.Canvas.TextOut(280,Int1*25,IntToStr(Form1.Ta ble1.Fields[2].AsInteger));
If Int1<>10 Then
Begin
Form1.Canvas.Brush.Color:=clWhite;
Form1.Canvas.Rectangle(18,20+Int1*25,342,23+Int1*2 5);
End;
Form1.Table1.Next;
Sleep(100);
End;
Cikis:=True;
End;
Procedure KareGoster(Drm : Byte);
Var
Ust,Sol : Byte;
Begin
Ust:=20;
Sol:=220;
If Drm=0 Then Form1.Canvas.Brush.Color:=clBlack;
If Drm=1 Then Form1.Canvas.Brush.Color:=clWhite;
Form1.Canvas.Rectangle(Sol+Sx1*10,Ust+Sy1*10,Sol+( Sx1+1)*10,Ust+(Sy1+1)*10);
Form1.Canvas.Rectangle(Sol+Sx2*10,Ust+Sy2*10,Sol+( Sx2+1)*10,Ust+(Sy2+1)*10);
Form1.Canvas.Rectangle(Sol+Sx3*10,Ust+Sy3*10,Sol+( Sx3+1)*10,Ust+(Sy3+1)*10);
Form1.Canvas.Rectangle(Sol+Sx4*10,Ust+Sy4*10,Sol+( Sx4+1)*10,Ust+(Sy4+1)*10);
End;
Procedure Sag;
Begin
Islem:=True;
If (Tip=1) And (Yon=1) And (KareX[Sx4+1,Sy4]=True) Then Islem:=False;
If (Tip=1) And (Yon=2) And ((KareX[Sx1+1,Sy1]=True) Or (KareX[Sx2+1,Sy2]=True) Or
(KareX[Sx3+1,Sy3]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=2) And (Yon=1) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=3) And (Yon=1) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=3) And (Yon=2) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx3+1,Sy3]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=4) And (Yon=1) And ((KareX[Sx3+1,Sy3]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=4) And (Yon=2) And ((KareX[Sx1+1,Sy1]=True) Or (KareX[Sx3+1,Sy3]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=4) And (Yon=3) And ((KareX[Sx1+1,Sy1]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=4) And (Yon=4) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx3+1,Sy3]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=5) And (Yon=1) And ((KareX[Sx1+1,Sy1]=True) Or (KareX[Sx2+1,Sy2]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=5) And (Yon=2) And ((KareX[Sx1+1,Sy1]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=5) And (Yon=3) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx3+1,Sy3]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=5) And (Yon=4) And ((KareX[Sx3+1,Sy3]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=6) And (Yon=1) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx3+1,Sy3]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=6) And (Yon=2) And ((KareX[Sx3+1,Sy3]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=6) And (Yon=3) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx3+1,Sy3]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=6) And (Yon=4) And ((KareX[Sx1+1,Sy1]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=7) And (Yon=1) And ((KareX[Sx2+1,Sy2]=True) Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If (Tip=7) And (Yon=2) And ((KareX[Sx1+1,Sy1]=True) Or (KareX[Sx3+1,Sy3]=True)
Or (KareX[Sx4+1,Sy4]=True)) Then Islem:=False;
If Islem=True Then
Begin
KareCiz(0);
Sx1:=Sx1+1;
Sx2:=Sx2+1;
Sx3:=Sx3+1;
Sx4:=Sx4+1;
KareCiz(1);
Exit;
End;
Beep;
End;
Procedure Sol;
Begin
Islem:=True;
If (Tip=1) And (Yon=1) And (KareX[Sx1-1,Sy1]=True) Then Islem:=False;
If (Tip=1) And (Yon=2) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True) Or
(KareX[Sx3-1,Sy3]=True) Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If (Tip=2) And (Yon=1) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx3-1,Sy3]=True)) Then Islem:=False;
If (Tip=3) And (Yon=1) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx3-1,Sy3]=True)) Then Islem:=False;
If (Tip=3) And (Yon=2) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)
Or (KareX[Sx3-1,Sy3]=True)) Then Islem:=False;
If (Tip=4) And (Yon=1) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If (Tip=4) And (Yon=2) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx3-1,Sy3]=True)
Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If (Tip=4) And (Yon=3) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)) Then Islem:=False;
If (Tip=4) And (Yon=4) And ((KareX[Sx2-1,Sy2]=True) Or (KareX[Sx1-1,Sy1]=True)
Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If (Tip=5) And (Yon=1) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)
Or (KareX[Sx3-1,Sy3]=True)) Then Islem:=False;
If (Tip=5) And (Yon=2) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)) Then Islem:=False;
If (Tip=5) And (Yon=3) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx3-1,Sy3]=True)
Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If (Tip=5) And (Yon=4) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If (Tip=6) And (Yon=1) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)
Or (KareX[Sx3-1,Sy3]=True)) Then Islem:=False;
If (Tip=6) And (Yon=2) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If (Tip=6) And (Yon=3) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)
Or (KareX[Sx3-1,Sy3]=True)) Then Islem:=False;
If (Tip=6) And (Yon=4) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)) Then Islem:=False;
If (Tip=7) And (Yon=1) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx3-1,Sy3]=True)) Then Islem:=False;
If (Tip=7) And (Yon=2) And ((KareX[Sx1-1,Sy1]=True) Or (KareX[Sx2-1,Sy2]=True)
Or (KareX[Sx4-1,Sy4]=True)) Then Islem:=False;
If Islem=True Then
Begin
KareCiz(0);
Sx1:=Sx1-1;
Sx2:=Sx2-1;
Sx3:=Sx3-1;
Sx4:=Sx4-1;
KareCiz(1);
Exit;
End;
Beep;
End;
Procedure SekilAktar(X1,Y1,X2,Y2,X3,Y3,X4,Y4:Byte);
Begin
Sx1:=X1;
Sx2:=X2;
Sx3:=X3;
Sx4:=X4;
Sy1:=Y1;
Sy2:=Y2;
Sy3:=Y3;
Sy4:=Y4;
End;
Procedure SekilDeg(X1,Y1,X2,Y2,X3,Y3,X4,Y4,Yn:Integer);
Begin
If (KareX[Sx1+X1,Sy1+Y1]=True) Or (KareX[Sx2+X2,Sy2+Y2]=True)
Or (KareX[Sx3+X3,Sy3+Y3]=True) Or (KareX[Sx4+X4,Sy4+Y4]=True) Then Exit;
KareCiz(0);
Sx1:=Sx1+X1;
Sx2:=Sx2+X2;
Sx3:=Sx3+X3;
Sx4:=Sx4+X4;
Sy1:=Sy1+Y1;
Sy2:=Sy2+Y2;
Sy3:=Sy3+Y3;
Sy4:=Sy4+Y4;
Yon:=Yn;
KareCiz(1);
Music(3);
End;
Procedure OyunEkrani;
Begin
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(0,0,Form1.Width,Form1.Heigh t);
Form1.Canvas.Pen.Color:=clBlack;
Form1.Canvas.Brush.Color:=clWhite;
Form1.Canvas.Rectangle(15,15,225,425);
Form1.Canvas.Rectangle(230,15,340,215);
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(20,20,220,420);
Form1.Canvas.Rectangle(235,20,335,210);
Form1.Canvas.Font.Size:=12;
Form1.Canvas.Font.Name:='Courier New Tur';
End;
Procedure Sekil(Tip1,Yon1 : Byte);
Begin
Tip:=Tip1;
Yon:=Yon1;
If (Tip1=1) And (Yon1=1) Then SekilAktar(4,1,5,1,6,1,7,1); // Çubuk Yatay
If (Tip1=1) And (Yon1=2) Then SekilAktar(4,1,4,2,4,3,4,4); // Çubuk Dikey
If (Tip1=2) And (Yon1=1) Then SekilAktar(4,1,5,1,4,2,5,2); // Kare
If (Tip1=3) And (Yon1=1) Then SekilAktar(4,1,5,1,5,2,6,2); // Z
If (Tip1=3) And (Yon1=2) Then SekilAktar(4,2,4,3,5,1,5,2); // N
If (Tip1=4) And (Yon1=1) Then SekilAktar(4,1,5,1,6,1,5,2); // T
If (Tip1=4) And (Yon1=2) Then SekilAktar(4,2,4,3,4,4,5,3); // I-
If (Tip1=4) And (Yon1=3) Then SekilAktar(5,1,4,2,5,2,6,2); //_I_
If (Tip1=4) And (Yon1=4) Then SekilAktar(4,2,5,1,5,2,5,3); //-I-
If (Tip1=5) And (Yon1=1) Then SekilAktar(4,1,4,2,4,3,5,3); //L
If (Tip1=5) And (Yon1=2) Then SekilAktar(6,1,4,2,5,2,6,2); //_I
If (Tip1=5) And (Yon1=3) Then SekilAktar(4,1,5,1,5,2,5,3); //-I
If (Tip1=5) And (Yon1=4) Then SekilAktar(4,1,5,1,6,1,4,2); //I-
If (Tip1=6) And (Yon1=1) Then SekilAktar(4,3,5,1,5,2,5,3); // _|
If (Tip1=6) And (Yon1=2) Then SekilAktar(4,1,5,1,6,1,6,2); // _|
If (Tip1=6) And (Yon1=3) Then SekilAktar(4,1,4,2,4,3,5,1); // _|
If (Tip1=6) And (Yon1=4) Then SekilAktar(4,1,4,2,5,2,6,2); // _|
If (Tip1=7) And (Yon1=1) Then SekilAktar(5,1,6,1,4,2,5,2); // /Z
If (Tip1=7) And (Yon1=2) Then SekilAktar(4,1,4,2,5,2,5,3); // /N
End;
Procedure Yeni;
Begin
Form1.Timer1.Interval:=0;
If Cikis=True Then Exit;
Tp:=Tp1;
Yn:=Yn1;
Sekil(Tp1,Yn1);
KareGoster(0);
Tp1:=Random(7)+1;
Repeat
Yn1:=Random(4)+1;
Until ((Tp1=1) And (Yn1<=2)) Or
((Tp1=2) And (Yn1<=1)) Or
((Tp1=3) And (Yn1<=2)) Or
((Tp1=4) And (Yn1<=4)) Or
((Tp1=5) And (Yn1<=4)) Or
((Tp1=6) And (Yn1<=4)) Or
((Tp1=7) And (Yn1<=2));
Sekil(Tp1,Yn1);
KareGoster(1);
//Sekil(1,1);
Sekil(Tp,Yn);
KareCiz(1);
Sleep(200);
Form1.Timer1.Interval:=Hiz1;
End;
Procedure YonDeg;
Begin
If (Tip=1) And (Yon=1) Then // Çubuk Yatay --> Dikey
Begin
SekilDeg(1,-1,0,0,-1,1,-2,2,2);
Exit;
End;
If (Tip=1) And (Yon=2) Then // Çubuk Dikey --> Yatay
Begin
SekilDeg(-1,1,0,0,1,-1,2,-2,1);
Exit;
End;
If (Tip=3) And (Yon=1) Then // Z --> N
Begin
SekilDeg(0,1,-1,2,0,-1,-1,0,2);
Exit;
End;
If (Tip=3) And (Yon=2) Then // N --> Z
Begin
SekilDeg(0,-1,1,-2,0,1,1,0,1);
Exit;
End;
If (Tip=4) And (Yon=1) Then // T --> I-
Begin
SekilDeg(1,-1,0,0,-1,1,1,-1,2);
Exit;
End;
If (Tip=4) And (Yon=2) Then // I- --> T
Begin
SekilDeg(0,0,-1,0,0,-1,0,0,3);
Exit;
End;
If (Tip=4) And (Yon=3) Then //
Begin
SekilDeg(-1,1,1,-1,0,0,-1,1,4);
Exit;
End;
If (Tip=4) And (Yon=4) Then //
Begin
SekilDeg(0,0,0,1,1,0,0,0,1);
Exit;
End;
If (Tip=5) And (Yon=1) Then // L
Begin
SekilDeg(1,1,-1,1,0,0,0,0,2);
Exit;
End;
If (Tip=5) And (Yon=2) Then // L
Begin
SekilDeg(-1,0,2,-1,1,0,0,1,3);
Exit;
End;
If (Tip=5) And (Yon=3) Then // L
Begin
SekilDeg(0,0,0,0,1,-1,-1,-1,4);
Exit;
End;
If (Tip=5) And (Yon=4) Then // L
Begin
SekilDeg(0,-1,-1,0,-2,1,1,0,1);
Exit;
End;
If (Tip=6) And (Yon=1) Then // _|
Begin
SekilDeg(-1,-1,-1,1,0,0,0,0,2);
Exit;
End;
If (Tip=6) And (Yon=2) Then // _|
Begin
SekilDeg(1,-1,0,0,-1,1,0,-2,3);
Exit;
End;
If (Tip=6) And (Yon=3) Then // _|
Begin
SekilDeg(0,0,0,0,1,-1,1,1,4);
Exit;
End;
If (Tip=6) And (Yon=4) Then // _|
Begin
SekilDeg(0,2,1,-1,0,0,-1,1,1);
Exit;
End;
If (Tip=7) And (Yon=1) Then // Z --> N
Begin
SekilDeg(-1,-1,-2,0,1,-1,0,0,2);
Exit;
End;
If (Tip=7) And (Yon=2) Then // N --> Z
Begin
SekilDeg(1,1,2,0,-1,1,0,0,1);
Exit;
End;
End;
procedure TForm1.FormCreate(Sender: TObject);
begin
GetDir(0,Def);
Table1.DatabaseName:=Def;
Table1.TableName:='Score.db';
Table1.Open;
FileListBox1.Directory:=Def;
Form1.Table1.IndexName:='byPounts';
end;
Procedure Yaz;
Begin
For Int5:=1 To 10 Do
Begin
For Int6:=1 To 20 Do
Begin
If KareX[Int5,Int6]=True Then Form1.Canvas.Brush.Color:=clWhite;
If KareX[Int5,Int6]=False Then Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(Int5*20,Int6*20,(Int5+1)*20 ,(Int6+1)*20);
{ If KareX[Int5,Int6]=True Then Form1.Canvas.Brush.Color:=clGreen;
If KareX[Int5,Int6]=False Then Form1.Canvas.Brush.Color:=clGray;
Form1.Canvas.Rectangle(300+Int5*20,Int6*20,300+(In t5+1)*20,(Int6+1)*20); }
End;
End;
End;
Procedure Kontrol;
Begin
Ps:=0;
For Int1:=1 To 20 Do
Begin
KareKontrol:=True;
For Int2:=1 To 10 Do
Begin
If KareX[Int2,Int1]=False Then KareKontrol:=False;
End;
If KareKontrol=True Then
Begin
For Int3:=Int1 DownTo 2 Do
Begin
For Int4:=1 To 10 Do
Begin
KareX[Int4,Int3]:=KareX[Int4,Int3-1];
End;
End;
For Int4:=1 To 10 Do KareX[Int4,1]:=False;
Music(2);
Ps:=Ps+1;
Yaz;
Sleep(200);
Form1.Timer1.Interval:=Hiz1;
End;
End;
If Ps>0 Then PuanHesapla;
End;
Procedure GameOwer;
Var
A,B : Byte;
Begin
Cikis:=True;
Form1.Timer1.Interval:=0;
Form1.Canvas.Brush.Color:=clWhite;
For A:=20 DownTo 1 Do
Begin
For B:=1 To 10 Do
Begin
Form1.Canvas.Rectangle(B*20,A*20,(B+1)*20,(A+1)*20 );
Sleep(5);
End;
End;
Name:=InputBox('Score','İsminizi Giriniz...',");
If Name=" Then Name:='İsimsiz';
Form1.Table1.Append;
Form1.Table1.Fields[1].AsString:=Name;
Form1.Table1.Fields[2].AsInteger:=Puan;
Form1.Table1.Post;
Form1.Table1.Last;
If Form1.Table1.RecordCount>10 Then Form1.Table1.Delete;
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(0,0,Form1.Width,Form1.Heigh t);
Form1.BitBtn1.Visible:=True;
Form1.BitBtn2.Visible:=True;
Form1.BitBtn3.Visible:=True;
Skor;
End;
Procedure Taban;
Begin
If Cikis=True Then Exit;
Form1.Timer1.Interval:=0;
KareX[Sx1,Sy1]:=True;
KareX[Sx2,Sy2]:=True;
KareX[Sx3,Sy3]:=True;
KareX[Sx4,Sy4]:=True;
For Int1:=1 To 10 Do
Begin
If KareX[Int1,2]=True Then Cikis:=True;
End;
If Cikis=True Then
Begin
Form1.Timer1.Interval:=0;
GameOwer;
Exit;
End;
Yaz;
Music(1);
Kontrol;
Yeni;
End;
Procedure Kaydet;
Begin
Cikis:=True;
Form1.Timer1.Interval:=0;
Cev:=Application.MessageBox('Oyununuzu Kaydetmek İstiyor Musunuz...','Tetris',36);
If Cev=6 Then
Begin
Name:=InputBox('Kaydet','Kayıt İçin Bir İsim Girin...',");
If Name=" Then
Begin
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(0,0,Form1.Width,Form1.Heigh t);
Form1.BitBtn1.Visible:=True;
Form1.BitBtn2.Visible:=True;
Form1.BitBtn3.Visible:=True;
Music(4);
Form1.Timer2.Interval:=1000;
Exit;
End;
AssignFile(Dosya,Def+'\'+Name+'.ttrs');
RewRite(Dosya);
For Int1:=1 To 20 Do
Begin
Str:=";
For Int2:=1 To 10 Do
Begin
If KareX[Int2,Int1]=True Then Str:=Str+'1';
If KareX[Int2,Int1]=False Then Str:=Str+'0';
End;
Writeln(Dosya,Str);
End;
Writeln(Dosya,IntToStr(PatlamaSay));
Writeln(Dosya,IntToStr(Puan));
Writeln(Dosya,IntToStr(Hiz1));
CloseFile(Dosya);
End;
Music(4);
Form1.Timer2.Interval:=1000;
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Rectangle(0,0,Form1.Width,Form1.Heigh t);
Form1.BitBtn1.Visible:=True;
Form1.BitBtn2.Visible:=True;
Form1.BitBtn3.Visible:=True;
End;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
If Cikis=True Then
Begin
Timer1.Interval:=0;
Exit;
End;
If (Tip=1) And (Yon=1) And ((KareX[Sx1,Sy1+1]=True) Or (KareX[Sx2,Sy2+1]=True) Or
(KareX[Sx3,Sy3+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=1) And (Yon=2) And (KareX[Sx4,Sy4+1]=True) Then Taban;
If (Tip=2) And (Yon=1) And ((KareX[Sx3,Sy3+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=3) And (Yon=1) And ((KareX[Sx1,Sy1+1]=True) Or (KareX[Sx3,Sy3+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=3) And (Yon=2) And ((KareX[Sx2,Sy2+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=4) And (Yon=1) And ((KareX[Sx1,Sy1+1]=True) Or (KareX[Sx3,Sy3+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=4) And (Yon=2) And ((KareX[Sx3,Sy3+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=4) And (Yon=3) And ((KareX[Sx2,Sy2+1]=True) Or (KareX[Sx3,Sy3+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=4) And (Yon=4) And ((KareX[Sx1,Sy1+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=5) And (Yon=1) And ((KareX[Sx3,Sy3+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=5) And (Yon=2) And ((KareX[Sx2,Sy2+1]=True) Or (KareX[Sx3,Sy3+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=5) And (Yon=3) And ((KareX[Sx1,Sy1+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=5) And (Yon=4) And ((KareX[Sx2,Sy2+1]=True) Or (KareX[Sx3,Sy3+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=6) And (Yon=1) And ((KareX[Sx1,Sy1+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=6) And (Yon=2) And ((KareX[Sx1,Sy1+1]=True) Or (KareX[Sx2,Sy2+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=6) And (Yon=3) And ((KareX[Sx3,Sy3+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=6) And (Yon=4) And ((KareX[Sx2,Sy2+1]=True) Or (KareX[Sx3,Sy3+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=7) And (Yon=1) And ((KareX[Sx2,Sy2+1]=True) Or (KareX[Sx3,Sy3+1]=True)
Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If (Tip=7) And (Yon=2) And ((KareX[Sx2,Sy2+1]=True) Or (KareX[Sx4,Sy4+1]=True)) Then Taban;
If Cikis=True Then Exit;
Kontrol;
Art:=1;
KareCiz(0);
Sy1:=Sy1+Art;
Sy2:=Sy2+Art;
Sy3:=Sy3+Art;
Sy4:=Sy4+Art;
KareCiz(1);
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If Cikis=True Then
Begin
Timer1.Interval:=0;
Exit;
End;
If Key=37 Then Sol;
If Key=38 Then YonDeg;
If Key=39 Then Sag;
If Key=40 Then Timer1.Interval:=Hiz2;
If Key=27 Then Kaydet;
If (Key=32) And (Timer1.Interval=0) Then
Begin
Timer1.Interval:=Hiz1;
Exit;
End;
If (Key=32) And (Timer1.Interval<>0) Then
Begin
Timer1.Interval:=0;
Exit;
End;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Show;
MediaPlayer1.Stop;
Timer2.Interval:=0;
BitBtn1.Visible:=False;
BitBtn2.Visible:=False;
BitBtn3.Visible:=False;
OyunEkrani;
Cikis:=False;
Hiz1:=500;
Hiz2:=10;
Art:=20;
Ps:=1;
BrPuan:=10;
Puan:=0;
Patlamasay:=0;
Randomize;
Tp1:=Random(7)+1;
Repeat
Yn1:=Random(4)+1;
Until ((Tp1=1) And (Yn1<=2)) Or
((Tp1=2) And (Yn1<=1)) Or
((Tp1=3) And (Yn1<=2)) Or
((Tp1=4) And (Yn1<=4)) Or
((Tp1=5) And (Yn1<=4)) Or
((Tp1=6) And (Yn1<=4)) Or
((Tp1=7) And (Yn1<=2));
Sekil(Tp1,Yn1);
KareGoster(1);
For Int1:=0 To 21 Do
Begin
KareX[00,Int1]:=True;
KareX[11,Int1]:=True;
End;
For Int1:=0 To 11 Do
Begin
KareX[Int1,00]:=True;
KareX[Int1,21]:=True;
End;
For Int1:=1 To 10 Do
Begin
For Int2:=1 To 20 Do
Begin
KareX[Int1,Int2]:=False;
End;
End;
PuanYaz;
KareCiz(1);
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If Cikis=True Then
Begin
Timer1.Interval:=0;
Exit;
End;
If Key=40 Then Timer1.Interval:=Hiz1;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If Button=mbRight Then YonDeg;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Skor;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
If MediaPlayer1.Position=MediaPlayer1.Length Then Music(4);
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
Music(4);
Timer2.Interval:=1000;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
FileListBox1.Directory:='C:\';
FileListBox1.Directory:=Def;
Music(4);
Form1.Timer2.Interval:=1000;
FileListBox1.Visible:=True;
BitBtn1.Visible:=False;
BitBtn2.Visible:=False;
BitBtn3.Visible:=False;
Button1.Visible:=True;
Button2.Visible:=True;
Button3.Visible:=True;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
FileListBox1.Visible:=False;
BitBtn1.Visible:=True;
BitBtn2.Visible:=True;
BitBtn3.Visible:=True;
Button1.Visible:=False;
Button2.Visible:=False;
Button3.Visible:=False;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
If FileListBox1.ItemIndex=-1 Then
Begin
Application.MessageBox('Lütfen Kayıtlardan Birini Seçin...','Sil',64);
Exit;
End;
DeleteFile(FileListBox1.FileName);
FileListBox1.Directory:='C:\';
FileListBox1.Directory:=Def;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
If FileListBox1.ItemIndex=-1 Then
Begin
Application.MessageBox('Lütfen Kayıtlardan Birini Seçin...','Başla',64);
Exit;
End;
MediaPlayer1.Stop;
Form1.Timer2.Interval:=0;
FileListBox1.Visible:=False;
Button1.Visible:=False;
Button2.Visible:=False;
Button3.Visible:=False;
OyunEkrani;
AssignFile(Dosya,FileListBox1.FileName);
Reset(Dosya);
For Int1:=0 To 21 Do
Begin
KareX[00,Int1]:=True;
KareX[11,Int1]:=True;
End;
For Int1:=0 To 11 Do
Begin
KareX[Int1,00]:=True;
KareX[Int1,21]:=True;
End;
For Int1:=1 To 20 Do
Begin
Readln(Dosya,Str);
For Int2:=1 To 10 Do
Begin
If Str[Int2]='0' Then
Begin
Form1.Canvas.Brush.Color:=clBlack;
KareX[Int2,Int1]:=False;
End;
If Str[Int2]='1' Then
Begin
Form1.Canvas.Brush.Color:=clWhite;
KareX[Int2,Int1]:=True;
End;
Form1.Canvas.Rectangle(Int2*20,Int1*20,(Int2+1)*20 ,(Int1+1)*20);
End;
End;
Readln(Dosya,Str);
PatlamaSay:=StrToInt(Str);
Readln(Dosya,Str);
Puan:=StrToInt(Str);
Readln(Dosya,Str);
Hiz1:=StrToInt(Str);
CloseFile(Dosya);
Hiz2:=10;
Randomize;
Tp1:=Random(7)+1;
Repeat
Yn1:=Random(4)+1;
Until ((Tp1=1) And (Yn1<=2)) Or
((Tp1=2) And (Yn1<=1)) Or
((Tp1=3) And (Yn1<=2)) Or
((Tp1=4) And (Yn1<=4)) Or
((Tp1=5) And (Yn1<=4)) Or
((Tp1=6) And (Yn1<=4)) Or
((Tp1=7) And (Yn1<=2));
Sekil(Tp1,Yn1);
PuanYaz;
KareGoster(1);
KareCiz(1);
Cikis:=False;
end;
end.