Uwagi cd.kodu:
1.Niepotrzebnie robisz spację pomiędzy identyfikatorem a nawiasem (foo ()
), utrudnia to nieco czytanie kodu.
2.Don't Repeat Yourself! Spójrz na procedurę LoadImages
czy DrawImage
- praktycznie cały czas powtarzasz tam jeden fragment kodu...
3.
If PosX = 1 Then x := 810;
If PosX = 2 Then x := 821;
If PosX = 3 Then x := 832;
If PosX = 4 Then x := 843;
If PosX = 5 Then x := 854;
If PosX = 6 Then x := 865;
If PosX = 7 Then x := 876;
If PosX = 8 Then x := 887;
If PosX = 9 Then x := 898;
If PosX = 10 Then x := 909;
If PosX = 11 Then x := 920;
If PosX = 12 Then x := 931;
If PosX = 13 Then x := 942;
If PosX = 14 Then x := 953;
If PosX = 15 Then x := 964;
If PosX = 16 Then x := 975;
If PosX = 17 Then x := 986;
If PosX = 18 Then x := 997;
Nie mam pojęcia czy wartości x
-ów biorą się z jakiegoś wzoru; jeżeli nie - lepiej jest wrzucić to do tablicy.
Const
Pancernik : Byte = 1;
Rakietowy : Byte = 2;
Krazownik : Byte = 3;
Niszczyciel : Byte = 4;
Podwodny : Byte = 5;
Eskortowiec : Byte = 6;
Tralowiec : Byte = 7;
Desantowy : Byte = 8;
Bateria : Byte = 9;
Mina : Byte = 10;
Po to wymyślono enum'y, aby takich udziwnień nie robić.
5.{Wersja alfa 1.0.0.0}
:P
1.0 będzie gdy ukończysz większość z listy rzeczy do zrobienia...
Numerowanie zaczyna się od 0.1
wzwyż.
Uses Ships,Fields,Worlds,Connection,Draw,blcksock,WinGraph,WinCrt;
Wygodniej i estetyczniej jest, gdy moduły są pooddzielane przecinkami wraz ze spacją (Ships, Fields, Worlds {...}
).
Jest to bardziej czytelne.
Begin
BMap[x,y].ShipId := World^.Field[x,y]^.GetShipId;
BMap[x,y].ShipType := World^.Field[x,y]^.GetShipType;
BMap[x,y].Player := World^.Field[x,y]^.GetFieldPlayer;
end;
Tutaj może nie jest to jakimś specjalnie dużym błędem, ale gdy tych wartości byłoby więcej, zalecane jest użycie konstrukcji With
.
Until (Key = '1') or (Key = '2');
Lepiej jest zapisać:
Until (Key in ['1', '2']);
i := i + 1;
I += 1
lub chociaż Inc(I)
...
If PosX = 1 Then x := 0;
If PosX = 2 Then x := 100;
If PosX = 3 Then x := 200;
If PosX = 4 Then x := 300;
If PosX = 5 Then x := 400;
If PosX = 6 Then x := 500;
If PosX = 7 Then x := 600;
If PosX = 8 Then x := 700;
Mnożenie stało się zbyt mainstreamowe czy co?
11.W funkcji DrawInfo
ładniej wyglądałoby case
, niżeli drabinka if'ów
imho, a najlepiej jakaś tablica.
Until (Check = 255) or (check = 254);
Patrz punkt ósmy.
Until (Key = 't') or (Key = 'T') or (Key = 'n') or (Key = 'N');
LowerCase + konstrukcja z punktu ósmego.
If ShipType = Pancernik Then Speed := 2;
If ShipType = Rakietowy Then Speed := 1;
If ShipType = Krazownik Then Speed := 2;
If ShipType = Niszczyciel Then Speed := 4;
If ShipType = Podwodny Then Speed := 2;
If ShipType = Eskortowiec Then Speed := 3;
If ShipType = Tralowiec Then Speed := 2;
If ShipType = Desantowy Then Speed := 1;
If ShipType = Bateria Then Speed := 0;
If ShipType = Mina Then Speed := 0;
Tablica, tablica, tablica...
Until (MoveDone = True)
Niepotrzebne = True
.
16.ShipPuted
.
No ja jestem słaby z angielskiego, ale forma przeszła put
to put
, nie putted
:P
Chyba tyle :P