Entwickler-Ecke

Sonstiges (Delphi) - Hilfe zum Verstehen eines (fremden) Quelltexts gesucht


BumBum - Fr 06.03.09 15:44
Titel: Hilfe zum Verstehen eines (fremden) Quelltexts gesucht
Hallo,

ich bin ein Delphileihe und kenne mich nicht besonders gut damit aus. Ich schaffe es vielleicht unter mühe und not einen Taschenrechner zu programmieren. :oops: :!:

Ich habe ein cooles Rennen zum download im Internet gefunden, und möchte dieses gerne ein bischen aus Spaß ändern. :!: 8)

Wäre euch sehr verbunden wenn ihr mir das Programm also den Quellcode "erklären" könntet wie in dem Beitrag: [Delphi, Win32] Delphin V1.00 [http://www.delphi-forum.de/viewtopic.php?t=68417&highlight=delphin] wo neben jeder Zeile mit "//" geschrieben ist was dieser Befehl bewirkt. :?: :wink: :roll:



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
procedure TForm1.FormResize(Sender: TObject);
var
   i: Integer;
begin
     SgData.Width := ClientWidth;
     SgData.DefaultColWidth := SgData.Width div SgData.ColCount;

     SgData.Height := SgData.RowCount * SgData.DefaultRowHeight;

     for i := Low(Auto) to High(Auto) do
     begin
          Auto[i].PbSpeed.Boundsrect := SgData.Cellrect(8, i + 1);
          Auto[i].PbThrottle.Boundsrect := SgData.Cellrect(9, i + 1);
     end;
end;

function GetCarBgd(Ground: TBitmap; Form: array of TPoint; Color: TColor): Integer;
var
i: Integer;
begin
     result := 0;
     for i := Low(form) to High(form) do
     if Ground.Canvas.Pixels[form[i].x, form[i].y] = color then
         inc(result);
end;

function ColorToHtml(AColor: TColor): string;
begin
 Result := IntToHex(ColorToRgb(AColor), 6);
 Result := '#' + Copy(Result, 52) + Copy(Result, 32) + Copy(Result, 12);
end;

function HtmlToColor(AHtmlColor: string): TColor;
begin
 Delete(AHtmlColor, 11);
 Result := StrToInt('$' + Copy(AHtmlColor, 52) + Copy(AHtmlColor, 32) + Copy(AHtmlColor, 12));
end;

procedure Rotate(car: TAuto; m: TPoint; dir: double);
var
   i: Integer;
   Sinus, Cosinus: Extended;
begin
     SinCos(degtorad(dir), sinus, cosinus);
     for i := 0 to High(car.form) do
     begin
         Car.Form[i].x := Round(Car.StdForm[i].x*cosinus + car.StdForm[i].y*sinus + m.x);
         Car.Form[i].y := Round(-Car.StdForm[i].x*sinus + car.StdForm[i].y*cosinus + m.y);
     end;
end;

procedure TForm1.SgDataDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
i: Integer;
begin
     for i := 0 to High(Auto) do
         if ARow = i + 1 then
            begin
                 SgData.Canvas.Brush.Color := Auto[i].Color;
                 SgData.Canvas.FillRect(Rect);
                 SgData.Canvas.Font.Color := (not ColorToRGB(Auto[i].Color)) and $00FFFFFF;
            end;
     SgData.Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, SgData.Cells[ACol, ARow]);
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
     SgData.Selection := TGridRect(Rect(-1,-1,-1,-1));
end;

end.


versteh ich komplett nicht


Narses - Fr 06.03.09 15:54

Moin und :welcome: im Forum!

Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien [http://www.entwickler-ecke.de/richtlinien.html]:
1.2 Beiträge:
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]
Einfach oben bei Deinem ersten Beitrag auf user defined image oder user defined image klicken und den Titel ändern. Danke Dir!

Vorschlag: "Hilfe zum Verstehen eines (fremden) Quelltexts gesucht"

cu
Narses


jaenicke - Fr 06.03.09 16:08

Die Frage ist eigentlich was genau du nicht verstehst, denn den ganzen Quelltext zu erklären dauert ja ewig.

Vor allem, weil wir keine Ahnung von deinem Kenntnisstand haben. Da verwirren dann zu ausführliche Erklärungen eher, machen aber trotzdem viel Mühe erstmal.

Stell doch lieber konkrete Fragen, wenn dir an einer Stelle etwas unklar ist. :wink:


Blackheart666 - Fr 06.03.09 16:20

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Die Frage ist eigentlich was genau du nicht verstehst, ich meine den ganzen Quelltext zu erklären dauert ja ewig, vor allem, weil wir keine Ahnung von deinem Kenntnisstand haben. Da verwirren dann zu ausführliche Erklärungen eher, machen aber vor allem auch viel Mühe erstmal.

Stell doch lieber konkrete Fragen, wenn dir an einer Stelle etwas unklar ist. :wink:

Die Satzstellung ist aber auch so verwirrend, das ich etliche Anläufe brauchte um den Sinn zu verstehen. :wink:


jaenicke - Fr 06.03.09 16:25

Ich mag Bandwurmsätze eben. :) So besser? :D


BumBum - Fr 06.03.09 18:28

Ja ich hab ja desswegen geschrieben ich kann die Grundtypen und so .. kann also einen zB Taschenrechner oder so programmieren


jaenicke - Fr 06.03.09 20:50

Ja, das sind 450 Zeilen Quelltext, die kann man nicht so einfach schnell erklären...

Wenn du nicht einmal in der Lage bist zu dem Quelltext und deinen Verständnisproblemen konkrete Fragen zu stellen, dann ist solch ein Projekt für dich wohl noch eine Nummer zu groß. :nixweiss:


Sinspin - Fr 06.03.09 21:10

Das Spiel scheint ja ziemlich einfach gestickt zu sein. Ich würde sagen, mach es einfach so wie ich damals auch : probier ein bisschen rum und schau was passiert. Wenn du dann einen Quelltextabschnitt verstanden hast schreibst du einen Kommentar dran was er macht.
Das ist im übrigen die allerbeste Art um etwas zu lernen (es selber ausprobieren).

Nebenbei, sogar ich habe was gelernt : SinCos kannte ich noch nicht.


BumBum - Di 10.03.09 22:08

Meine Fragen lauten :

Wo ist definiert wie die Autos aussehen? 8)

Wo ist definiert wo die Autos starten? :idea:

Wo ist die Lenkung definiert? :?: ( im spiel muss man immer so oft klicken statt dauerhaft gas zugeben)

Wie kann man dieses SgData wegbekommen ohne das programm zu beschädigen? :oops:
(SgData wird auch im Spiel unten immer angezeit worin dann die Zeit, Geschwindigkeit, Runden usw steht)

Ich danke euch vielmals im vorraus, dass ihr mir helft !!! :!: :!: :roll:

Moderiert von user profile iconNarses: Neues Topic hier zusammengeführt