Zdravím vás, zase já. :smile1: Potřebovala bych poradit s programem, který simuluje závody. Jde o to, že po nastavení velikosti závodníků (SpinEdit1) a jejich formátu (kruhy nebo čtverce - RadioButtony) se po stisku tlačítka Button1 spustí závod, který lze přeručit stiskem tlačítka Button3. Mimo tohle má jít zvyšovat rychlost pomocí TrackBaru, ale bohužel netuším, jak jej tam napojit (hádám, že přes vlastnost OnChange, ale nevím jak). U závodníků má jít také měnit barva(Button2), což mi také pracuje. Přes Memo tam mají jít uložit nějaké údaje o hráči, to je snad také v pořádku (na Buttonu4). Můj velký problém tedy spočívá v TrackBaru a v tom, že pomocí SpinEdit2 má jít měnit počet závodníků (tedy kruhů nebo čtverců). Neporadili byste mi prosím? Pokud by bylo potřeba hodím sem obrázek programu.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, Spin, Menus;
type
TForm1 = class(TForm)
Button1: TButton;
Label6: TLabel;
Image1: TImage;
Label7: TLabel;
Label8: TLabel;
RadioGroup1: TRadioGroup;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Label9: TLabel;
Button2: TButton;
ColorDialog1: TColorDialog;
SaveDialog1: TSaveDialog;
SpinEdit1: TSpinEdit;
Button3: TButton;
Timer1: TTimer;
Memo1: TMemo;
Button4: TButton;
Label1: TLabel;
SpinEdit2: TSpinEdit;
TrackBar1: TTrackBar;
Label2: TLabel;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure Uloit1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TKruh = class
public
constructor Create;
end;
var
Form1: TForm1;
x,y,a,b,sx,sy,cil,h,v:integer;
barva: TColor;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
Button3.Enabled:=true;
end;
procedure TForm1.Button2Click(Sender: TObject); //ZMENA BARVY
begin
if ColorDialog1.Execute then barva:=ColorDialog1.Color ;
image1.Canvas.Pen.Color:=barva;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Timer1.Enabled:=false;
end;
procedure TForm1.Button4Click(Sender: TObject); //ULOZENI
begin
if SaveDialog1.Execute then
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
form1.image1.Canvas.Brush.Color:=clwhite;
x:=20 ; //ROZMĚRY
sx:=20 ;
y:=Form1.ClientHeight div 2;
sy:=Form1.ClientHeight div 2;
cil:=form1.ClientWidth - 50;
a:= random(50); //RYCHLOSTI ZÁVODU
b:= random(50);
Button3.Enabled:=false;
Timer1.Enabled:=false;
Memo1.Text:='';
end;
procedure TForm1.SpinEdit1Change(Sender: TObject); //VELIKOST ZAVODNIKU
begin
h:=SpinEdit1.Value;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Timer1.Enabled then
if (x<cil) and (sx<cil) then
begin
repaint;
Canvas.Pen.Width:=3;
canvas.Rectangle(cil,y-10,cil+15,y+30); //VYKRESLENÍ CÍLE
canvas.Brush.Style:=bsClear;
if RadioButton1.Checked then //KRUH
begin
canvas.Pen.Color:=barva;
canvas.Ellipse(x,y,x+h,y+h);
canvas.Pen.Color:=barva;
canvas.Ellipse(sx,sy,sx+h,sy+h);
end;
if RadioButton2.Checked then //CTVEREC
begin
canvas.Pen.Color:=barva;
canvas.Rectangle(x,y,x+h,y+h);
canvas.Pen.Color:=barva;
canvas.Rectangle(sx,sy,sx+h,sy+h);
end;
x:=x+a;
sx:=sx+b;
end //KDO VYHRAL
else begin
timer1.Enabled:=false;
if a=b then
begin
showmessage('Nikdo nevyhrál.');
timer1.Enabled:=false
end;
if b>a then
begin
showmessage('Vyhrál závodník 2.');
timer1.Enabled:=false
end;
if a>b then
begin
showmessage('Vyhrál závodník 1.');
timer1.Enabled:=false
end;
end; //KONEC KDO VYHRAL
end;
procedure TForm1.Uloit1Click(Sender: TObject); //ULOZENI UDAJU
begin
if SaveDialog1.Execute then
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;
constructor TKruh.Create;
begin
x:=20 ;
y:=Form1.ClientHeight div 2;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
v:=TrackBar1.Position;
label2.Caption:=inttostr(v);
//a:= a+v;
//b:= b+v;
end;
end.
Fórum › Delphi
TrackBar
Šest programátorských zákonů:
1. V každém programu je alespoň jedna chyba.
2. Každý program lze zkrátit alespoň o jeden řádek.
3. Nejjednodušší chyby se nejhůře hledají.
4. Každou opravou se do programu zanese nová chyba.
5. Když už se zdá, že program je v pořádku, určitě jsme něco přehlédli.
6. Programátor dělá, co umí. Počítač si dělá, co chce.
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 6 hostů
Podobná vlákna
Nastavení mírky TrackBar ve VS 2008 — založil tipetka