var MyForm: TclGameForm; bottleImg: TClProImage; spinnerTimer: TClTimer; selectedPerson: string; persons: TClArrayString; spinSpeed: Integer; isSpinning: Boolean; personCount, i, index, angle: Integer; personCountInput: TClEdit; startButton: TClProButton; personCountLabel: TCLProLabel;
// Prosedürlerin ön bildirimleri procedure InitializeGame; procedure StartGame; procedure StartSpin; procedure StopSpin; procedure OnSpinTimer; procedure ShowSelectedPerson(person: string); procedure OnClickStartButton;
// Ana kod bloğu begin InitializeGame; end
procedure InitializeGame; begin MyForm := TclGameForm.Create(Self); MyForm.SetFormColor('#f1e9e9', '#7893b0', MyForm);
// Kişi sayısı girişi personCountLabel := MyForm.AddNewProLabel(MyForm, 'personCountLabel', 'Enter number of people:'); ClRTSetProperty(personCountLabel, 'Top', 50); ClRTSetProperty(personCountLabel, 'Left', 50);
personCountInput := MyForm.AddNewEdit(MyForm, 'personCountInput', ''); ClRTSetProperty(personCountInput, 'Top', 80); ClRTSetProperty(personCountInput, 'Left', 50); ClRTSetProperty(personCountInput, 'Width', 100);
startButton := MyForm.AddNewProButton(MyForm, 'startButton', 'Start Game'); ClRTSetProperty(startButton, 'Top', 120); ClRTSetProperty(startButton, 'Left', 50); MyForm.AddNewEvent(startButton, tbeOnClick, 'OnClickStartButton');
MyForm.RunModal; end
procedure StartGame; begin personCount := StrToInt(personCountInput.Text); if personCount <= 0 then begin ShowMessage('Please enter a valid number of people.'); Exit; end
persons := TClArrayString.Create; for i := 0 to personCount - 1 do begin persons.Add('Person' + IntToStr(i + 1)); end
// Şişe resmi bottleImg := MyForm.AddNewProImage(MyForm, 'bottleImg'); MyForm.setImage(bottleImg, ' https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Bouteille.jpg/800px-Bouteille.jpg" rel="nofollow - https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Bouteille.jpg/800px-Bouteille.jpg '); bottleImg.Align := alCenter; bottleImg.Width := 200; bottleImg.Height := 300; // Timer ayarları spinnerTimer := MyForm.AddNewTimer(MyForm, 'spinnerTimer', 10); // Timer her 10ms'de bir çalışır spinnerTimer.Enabled := False; MyForm.AddNewEvent(spinnerTimer, tbeOnTimer, 'OnSpinTimer');
// Oyun başlat isSpinning := False; StartSpin; end
procedure StartSpin; begin if not isSpinning then begin isSpinning := True; spinSpeed := 30; // Başlangıç dönme hızı spinnerTimer.Enabled := True; end end
procedure StopSpin; begin if isSpinning then begin isSpinning := False; spinnerTimer.Enabled := False; // Şişenin hangi kişiyi işaret ettiğini bulur angle := bottleImg.RotationAngle; index := Round((angle mod 360) / (360 / persons.Count)); selectedPerson := persons.GetItem(index); ShowSelectedPerson(selectedPerson); // Burada prosedürü çağırıyoruz end end
procedure OnSpinTimer; begin if isSpinning then begin // Şişeyi döndür bottleImg.RotationAngle := bottleImg.RotationAngle + spinSpeed; spinSpeed := spinSpeed * 0.98; // Dönme hızını yavaşlatır if spinSpeed < 1 then begin StopSpin; end end end
procedure ShowSelectedPerson(person: string); begin ShowMessage('Selected Person: ' + person); // Burada seçilen kişiye göre bir görev veya soru sorulur end
procedure OnClickStartButton; begin StartGame; end
söylediğiniz gibi prosedür tanımlarını yaptım sıralamaları düzeltmeye çalıştım .dizi yapısını da düzelttiğimi düşünüyorum. ama hala çalıştıramıyorum. hatam nerede yardımcı olur musunuz ?
|