|
var
MainForm: TclForm;
MainScroll: TclVertScrollBox;
PnlHeader, PnlBoard, PnlLeft, PnlRight,
PnlBottom: TclProPanel;
LblTitle, LblSubTitle, LblInfo,
LblScore: TclProLabel;
BtnReset: TclProButton;
ElemBtns, SymBtns:
TclArrayObject;
ElemNames, SymTexts:
TclArrayString;
MatchMap, ElemMatched, SymMatched:
TclArrayInteger;
SelectedElemIdx, SelectedSymIdx, Score:
Integer;
const
C_Bg = '#0F172A';
C_Panel = '#1E293B';
C_Border = '#334155';
C_Text = '#E2E8F0';
C_Muted = '#94A3B8';
C_Green = '#22C55E';
C_Red = '#EF4444';
C_Yellow = '#FACC15';
C_Blue = '#3B82F6';
void SetBtnStyle(Btn: TclProButton; BgHex, BorderHex, FontHex: String);
{
Btn.clProSettings.BackgroundColor =
clAlphaColor.clHexToColor(BgHex);
Btn.clProSettings.BorderColor =
clAlphaColor.clHexToColor(BorderHex);
Btn.clProSettings.BorderWidth =
1;
Btn.clProSettings.FontColor =
clAlphaColor.clHexToColor(FontHex);
Btn.clProSettings.RoundWidth =
12;
Btn.clProSettings.RoundHeight =
12;
Btn.clProSettings.FontSize = 12;
Btn.SetclProSettings(Btn.clProSettings);
}
void RefreshScore;
{
LblScore.Text = 'Skor: ' +
IntToStr(Score) + ' / 6';
}
void ClearSelections;
var
i: Integer;
B: TclProButton;
{
SelectedElemIdx = -1;
SelectedSymIdx = -1;
for i = 0 to 5 {
B =
TclProButton(ElemBtns.GetItem(i));
if (ElemMatched.GetItem(i) ==
1)
SetBtnStyle(B, '#14532D',
'#166534', C_Text)
else
SetBtnStyle(B, C_Panel, C_Border,
C_Text);
B =
TclProButton(SymBtns.GetItem(i));
if (SymMatched.GetItem(i) == 1)
SetBtnStyle(B, '#14532D',
'#166534', C_Text)
else
SetBtnStyle(B, C_Panel, C_Border,
C_Text);
}
}
void CheckMatch;
var
ElemExpected, i: Integer;
ElemBtn, SymBtn: TclProButton;
{
if ((SelectedElemIdx < 0) || (SelectedSymIdx
< 0)) Exit;
ElemExpected =
MatchMap.GetItem(SelectedElemIdx);
ElemBtn =
TclProButton(ElemBtns.GetItem(SelectedElemIdx));
SymBtn =
TclProButton(SymBtns.GetItem(SelectedSymIdx));
if (ElemExpected ==
SelectedSymIdx)
{
ElemMatched.SetItem(SelectedElemIdx,
1);
SymMatched.SetItem(SelectedSymIdx,
1);
SetBtnStyle(ElemBtn, '#14532D',
'#16A34A', C_Text);
SetBtnStyle(SymBtn, '#14532D',
'#16A34A', C_Text);
Score = Score + 1;
RefreshScore;
if (Score == 6)
LblInfo.Text = 'Tebrikler. Tum
eslestirmeleri dogru yaptin.'
else
LblInfo.Text = 'Dogru eslesme.
Devam et.';
}
else
{
SetBtnStyle(ElemBtn, '#7F1D1D',
'#B91C1C', C_Text);
SetBtnStyle(SymBtn, '#7F1D1D',
'#B91C1C', C_Text);
LblInfo.Text = 'Bu ikili dogru degil.
Tekrar dene.';
for i = 0 to 5 {
if (i <> SelectedElemIdx)
{
if (ElemMatched.GetItem(i) ==
1)
SetBtnStyle(TclProButton(ElemBtns.GetItem(i)), '#14532D', '#166534',
C_Text)
else
SetBtnStyle(TclProButton(ElemBtns.GetItem(i)),
C_Panel, C_Border, C_Text);
}
if (i <> SelectedSymIdx)
{
if (SymMatched.GetItem(i) ==
1)
SetBtnStyle(TclProButton(SymBtns.GetItem(i)), '#14532D', '#166534',
C_Text)
else
SetBtnStyle(TclProButton(SymBtns.GetItem(i)),
C_Panel, C_Border, C_Text);
}
}
}
SelectedElemIdx = -1;
SelectedSymIdx = -1;
}
void OnElemClick;
var
Btn: TclProButton;
i: Integer;
{
Btn =
TclProButton(MainForm.clSender);
i = Btn.clTagInt;
if (ElemMatched.GetItem(i) == 1)
Exit;
SelectedElemIdx = i;
SetBtnStyle(Btn, '#1D4ED8', '#3B82F6',
C_Text);
LblInfo.Text = 'Simdi sag taraftan
sembol sec.';
if (SelectedSymIdx >= 0)
CheckMatch;
}
void OnSymClick;
var
Btn: TclProButton;
i: Integer;
{
Btn =
TclProButton(MainForm.clSender);
i = Btn.clTagInt;
if (SymMatched.GetItem(i) == 1)
Exit;
SelectedSymIdx = i;
SetBtnStyle(Btn, '#1D4ED8', '#3B82F6',
C_Text);
LblInfo.Text = 'Simdi sol taraftan
eleman sec.';
if (SelectedElemIdx >= 0)
CheckMatch;
}
void ResetGame;
var
i: Integer;
{
Score = 0;
SelectedElemIdx = -1;
SelectedSymIdx = -1;
for i = 0 to 5 {
ElemMatched.SetItem(i, 0);
SymMatched.SetItem(i, 0);
}
LblInfo.Text = 'Soldan eleman, sagdan sembol
secerek eslestir.';
RefreshScore;
ClearSelections;
}
void SetupData;
{
ElemNames =
TclArrayString.Create;
SymTexts = TclArrayString.Create;
MatchMap =
TclArrayInteger.Create;
ElemMatched =
TclArrayInteger.Create;
SymMatched = TclArrayInteger.Create;
ElemNames.Add('Pil');
ElemNames.Add('Ampul');
ElemNames.Add('Anahtar');
ElemNames.Add('Direnc');
ElemNames.Add('Kablo');
ElemNames.Add('Zil');
SymTexts.Add('+ | | -');
SymTexts.Add('(X)');
SymTexts.Add('-o/ o-');
SymTexts.Add('-/\/\/-');
SymTexts.Add('--------');
SymTexts.Add('-( )-');
MatchMap.Add(0);
MatchMap.Add(1);
MatchMap.Add(2);
MatchMap.Add(3);
MatchMap.Add(4);
MatchMap.Add(5);
ElemMatched.Add(0); ElemMatched.Add(0);
ElemMatched.Add(0);
ElemMatched.Add(0); ElemMatched.Add(0);
ElemMatched.Add(0);
SymMatched.Add(0); SymMatched.Add(0);
SymMatched.Add(0);
SymMatched.Add(0); SymMatched.Add(0);
SymMatched.Add(0);
ElemBtns = TclArrayObject.Create;
SymBtns = TclArrayObject.Create;
}
void SetupUI;
var
i, TopPos: Integer;
BtnE, BtnS: TclProButton;
{
MainForm = TclForm.Create(Self);
MainForm.SetFormColor(C_Bg, C_Bg,
clGCross);
MainScroll =
MainForm.AddNewVertScrollBox(MainForm, 'MainScroll');
MainScroll.Align = alClient;
PnlHeader =
MainForm.AddNewProPanel(MainScroll, 'PnlHeader');
PnlHeader.Align = alTop;
PnlHeader.Height = 90;
PnlHeader.clProSettings.IsTransparent =
True;
PnlHeader.SetclProSettings(PnlHeader.clProSettings);
LblTitle =
MainForm.AddNewProLabel(PnlHeader, 'LblTitle', 'Basit Elektrik Devre
Elemanlari');
LblTitle.Align = alTop; LblTitle.Height
= 40; LblTitle.Margins.Top = 16;
LblTitle.clProSettings.FontSize = 22;
LblTitle.clProSettings.FontHorzAlign = palCenter;
LblTitle.clProSettings.TextSettings.Font.Style
= [fsBold];
LblTitle.clProSettings.FontColor =
clAlphaColor.clHexToColor(C_Yellow);
LblTitle.SetclProSettings(LblTitle.clProSettings);
LblSubTitle =
MainForm.AddNewProLabel(PnlHeader, 'LblSubTitle', 'Eleman - Sembol
Eslestirme');
LblSubTitle.Align = alTop;
LblSubTitle.Height = 20;
LblSubTitle.clProSettings.FontSize =
12; LblSubTitle.clProSettings.FontHorzAlign = palCenter;
LblSubTitle.clProSettings.FontColor =
clAlphaColor.clHexToColor(C_Muted);
LblSubTitle.SetclProSettings(LblSubTitle.clProSettings);
PnlBoard =
MainForm.AddNewProPanel(MainScroll, 'PnlBoard');
PnlBoard.Align = alTop; PnlBoard.Height
= 420;
PnlBoard.Margins.Left = 10;
PnlBoard.Margins.Right = 10; PnlBoard.Margins.Top = 10;
PnlBoard.clProSettings.BackgroundColor
= clAlphaColor.clHexToColor(C_Panel);
PnlBoard.clProSettings.BorderColor =
clAlphaColor.clHexToColor(C_Border);
PnlBoard.clProSettings.BorderWidth =
1;
PnlBoard.clProSettings.RoundWidth = 16;
PnlBoard.clProSettings.RoundHeight = 16;
PnlBoard.SetclProSettings(PnlBoard.clProSettings);
PnlLeft =
MainForm.AddNewProPanel(PnlBoard, 'PnlLeft');
PnlLeft.Align = alLeft; PnlLeft.Width =
(MainForm.clWidth div 2) - 20;
PnlLeft.clProSettings.IsTransparent =
True;
PnlLeft.SetclProSettings(PnlLeft.clProSettings);
PnlRight =
MainForm.AddNewProPanel(PnlBoard, 'PnlRight');
PnlRight.Align = alRight;
PnlRight.Width = (MainForm.clWidth div 2) - 20;
PnlRight.clProSettings.IsTransparent =
True;
PnlRight.SetclProSettings(PnlRight.clProSettings);
for i = 0 to 5 {
TopPos = 12 + (i * 64);
BtnE =
MainForm.AddNewProButton(PnlLeft, 'BtnElem_' + IntToStr(i),
ElemNames.GetItem(i));
BtnE.Align = alNone; BtnE.Left = 10;
BtnE.Top = TopPos; BtnE.Width = PnlLeft.Width - 20; BtnE.Height = 54;
BtnE.clTagInt = i;
SetBtnStyle(BtnE, C_Panel, C_Border,
C_Text);
MainForm.AddNewEvent(BtnE,
tbeOnClick, 'OnElemClick');
ElemBtns.Add(BtnE);
BtnS =
MainForm.AddNewProButton(PnlRight, 'BtnSym_' + IntToStr(i),
SymTexts.GetItem(i));
BtnS.Align = alNone; BtnS.Left = 10;
BtnS.Top = TopPos; BtnS.Width = PnlRight.Width - 20; BtnS.Height = 54;
BtnS.clTagInt = i;
SetBtnStyle(BtnS, C_Panel, C_Border,
C_Text);
MainForm.AddNewEvent(BtnS,
tbeOnClick, 'OnSymClick');
SymBtns.Add(BtnS);
}
PnlBottom =
MainForm.AddNewProPanel(MainScroll, 'PnlBottom');
PnlBottom.Align = alTop;
PnlBottom.Height = 130;
PnlBottom.Margins.Left = 10;
PnlBottom.Margins.Right = 10; PnlBottom.Margins.Top = 10;
PnlBottom.Margins.Bottom = 10;
PnlBottom.clProSettings.BackgroundColor
= clAlphaColor.clHexToColor(C_Panel);
PnlBottom.clProSettings.BorderColor =
clAlphaColor.clHexToColor(C_Border);
PnlBottom.clProSettings.BorderWidth =
1;
PnlBottom.clProSettings.RoundWidth =
16; PnlBottom.clProSettings.RoundHeight = 16;
PnlBottom.SetclProSettings(PnlBottom.clProSettings);
LblInfo =
MainForm.AddNewProLabel(PnlBottom, 'LblInfo', 'Soldan eleman, sagdan sembol
secerek eslestir.');
LblInfo.Align = alTop; LblInfo.Height =
40; LblInfo.Margins.Top = 10; LblInfo.Margins.Left = 10; LblInfo.Margins.Right
= 10;
LblInfo.clProSettings.FontColor =
clAlphaColor.clHexToColor(C_Text);
LblInfo.clProSettings.FontSize = 12;
LblInfo.clProSettings.FontHorzAlign = palCenter;
LblInfo.SetclProSettings(LblInfo.clProSettings);
LblScore =
MainForm.AddNewProLabel(PnlBottom, 'LblScore', 'Skor: 0 / 6');
LblScore.Align = alTop; LblScore.Height
= 28;
LblScore.clProSettings.FontColor =
clAlphaColor.clHexToColor(C_Blue);
LblScore.clProSettings.FontSize = 14;
LblScore.clProSettings.TextSettings.Font.Style = [fsBold];
LblScore.clProSettings.FontHorzAlign =
palCenter;
LblScore.SetclProSettings(LblScore.clProSettings);
BtnReset =
MainForm.AddNewProButton(PnlBottom, 'BtnReset', 'Sifirla');
BtnReset.Align = alBottom; BtnReset.Height
= 42; BtnReset.Margins.Left = 30; BtnReset.Margins.Right = 30;
BtnReset.Margins.Bottom = 12;
SetBtnStyle(BtnReset, '#334155',
'#475569', C_Text);
MainForm.AddNewEvent(BtnReset,
tbeOnClick, 'ResetGame');
ResetGame;
MainForm.Run;
}
{
SetupData;
SetupUI;
} BURADAKİ HATAYI BULAMIYORUM https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
|