Entwickler-Ecke

Open Source Projekte - Str8ts


Mathematiker - Mi 11.01.12 23:49
Titel: Str8ts
Hallo Delphi-Fans,
hier ist mein erster Vorschlag für ein kleines Spiel.
Seit bitte nett zu mir und zerpflückt meinen Quelltext nicht gar zu sehr. Es ist hier wirklich mein erster Versuch.

Beste Grüße
Mathematiker

Rev 1/2: diverse Änderungen durchgeführt.


Narses - Do 12.01.12 08:26

Moin und :welcome: in der EE!

Also für einen "ersten Versuch" habe ich schon erheblich viel schlechteres gesehen! :shock: :zustimm:

Kleiner Tipp: deine Code-Formatierung ist allerdings schon etwas überarbeitungsfähig. :nixweiss: Schau dich mal nach einem Styleguide um, wenn du da keine Ahnung hast, wie man das machen könnte. :idea:

cu
Narses


jaenicke - Do 12.01.12 08:30

user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
hier ist mein erster Vorschlag für ein kleines Spiel.
Das Prinzip ähnelt ja Sudoku. Die Umsetzung ist ein wenig umständlich von der Bedienung her, funktioniert aber soweit gut.
Schlecht:
Du hast Position des Formulars auf poDesktopCenter statt auf poScreenCenter bewirkt. Dadurch erscheint das Fenster bei z.B. zwei Bildschirmen genau auf der Kante dazwischen, da sich der Desktop über beide erstreckt. Deshalb: poScreenCenter ist sinnvoller.

user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Seit bitte nett zu mir und zerpflückt meinen Quelltext nicht gar zu sehr.
So schlecht ist der gar nicht. ;-)
Deine Formatierung ist allerdings, sorry, grauenhaft. Aber das sieht wohl bei jedem anfangs ähnlich schlecht aus, da man meist erst später erkennt wie wichtig eine gute Formatierung ist.

Ein paar Tipps (der Styleguide [http://www.delphi-treff.de/object-pascal/delphi-styleguide/] wurde ja schon genannt):


Alles in allem heißt das für diesen Quelltext:

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:
  with bitmap.canvas do begin
    font.name:='Verdana';
    for i:=0 to grad-1 do for j:=0 to grad-1 do begin
       brush.color:=clwhite;
       pen.color:=clgray;
               if (lfeld[i+1,j+1]=0or (lfeld2[i+1,j+1]=2then begin
                                          brush.color:=clblack;
                                          font.color:=clwhite;
                                          end else begin
                                          brush.color:=clwhite;
                              if lfeld2[i+1,j+1]=1 then font.color:=clnavy
                                                   else font.color:=clblack;
                                          end;
       rectangle(xoffset+i*fbreite,yoffset+j*fbreite,
                 xoffset+i*fbreite+fbreite+1,yoffset+j*fbreite+fbreite+1);
                  k:=inttostr(lfeld[i+1,j+1]);
              if hilfe then
                if (loesung[i+1,j+1]=lfeld[i+1,j+1]) and (lfeld2[i+1,j+1]=0)
                   then begin brush.color:=clyellow; font.color:=clblack end
                   else brush.style:=bsclear;
                  font.size:=34;
               if lfeld2[i+1,j+1]>0 then begin
                  textout(xoffset+i*fbreite+(fbreite div 2)-(textwidth(k) div 2),
                          yoffset+j*fbreite+(fbreite div 2)-(textheight(k) div 2),k);
                  end else begin
                  if length(lmoeg[i+1,j+1])=1 then begin
                     k:=lmoeg[i+1,j+1];
                     textout(xoffset+i*fbreite+(fbreite div 2)-(textwidth(k) div 2),
                            yoffset+j*fbreite+(fbreite div 2)-(textheight(k) div 2),k);
                     end else begin
                     if lfeld[i+1,j+1]>0 then begin
                     if cb2.checked then begin
                      font.size:=9;
                      for ii:=1 to 9 do begin
würde ich diese Formatierung vorschlagen:

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:
  MyCanvas := bitmap.Canvas;
  MyCanvas.Font.Name := 'Verdana';
  for i := 0 to grad - 1 do
    for j := 0 to grad - 1 do
    begin
      MyCanvas.Brush.Color := clWhite;
      MyCanvas.Pen.Color := clGray;
      if (lfeld[i + 1, j + 1] = 0or (lfeld2[i + 1, j + 1] = 2then
      begin
        MyCanvas.Brush.Color := clBlack;
        MyCanvas.Font.Color := clWhite;
      end
      else
      begin
        MyCanvas.Brush.Color := clWhite;
        if lfeld2[i + 1, j + 1] = 1 then
          MyCanvas.Font.Color := clNavy
        else
          MyCanvas.Font.Color := clBlack;
      end;
      k := IntToStr(lfeld[i + 1, j + 1]);
      if hilfe then
        if (loesung[i + 1, j + 1] = lfeld[i + 1, j + 1]) and (lfeld2[i + 1, j + 1] = 0then
        begin
          MyCanvas.Brush.Color := clYellow;
          MyCanvas.Font.Color := clBlack
        end
        else
          MyCanvas.Brush.Style := bsClear;
      MyCanvas.Font.Size := 34;
      if lfeld2[i + 1, j + 1] > 0 then
      begin
        MyCanvas.TextOut(xoffset + i * fbreite + (fbreite div 2) - (MyCanvas.TextWidth(k) div 2),
          yoffset + j * fbreite + (fbreite div 2) - (MyCanvas.TextHeight(k) div 2), k);
      end
      else
      begin
        if length(lmoeg[i + 1, j + 1]) = 1 then
        begin
          k := lmoeg[i + 1, j + 1];
          MyCanvas.TextOut(xoffset + i * fbreite + (fbreite div 2) - (MyCanvas.TextWidth(k) div 2),
            yoffset + j * fbreite + (fbreite div 2) - (MyCanvas.TextHeight(k) div 2), k);
        end
        else
        begin
          if lfeld[i + 1, j + 1] > 0 then
          begin
            if CB2.checked then
            begin
              MyCanvas.Font.Size := 9;
              for ii := 1 to 9 do
So streust du Befehle nicht über den ganzen Bildschirm und musst nicht so weit einrücken.


Mathematiker - Do 12.01.12 14:28

Besten Dank für die ersten Hinweise.
Ich werde erst einmal den Quelltext umformatieren.
Beste Grüße
Mathematiker


baka0815 - Fr 13.01.12 13:11

Bin ich blind? Ich sehe weder Quelltext noch download?! :gruebel:

Edit: Jetzt ist er da...