Also ich habe angefangen meine eigene version von Tower defense zu programmieren.
Um die Bahn (bewegungslinie) der zu abwehrenden Gegner festzustellen, habe ich verschiedene Farben für verschiedene Bewegungen eingerichtet. Grün ist vorwärts (nach rechts), Rot ist nach unten, und Blau ist nach oben.
Ich bin nicht weit gekommen, und schon hatte ich Probleme:
Schaut den Quelltext an. Alles, was ich dort geschrieben habe geht von 1 einzigem gegner aus. (in dieser schnellversion habe ich einen einfachen tshape benutzt).
Hättet ihr eine Idee wie ich diese Bewegungsvorlage für ALLE "Gegner" benutzen kann, ohne das ich den Code unendlich mal kopiere und für den jeweiligem shape umstellen muss?
Und habt ihr noch irgendwelche ideen auf die schnelle, die ihr für mich habt?
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:
| unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons;
type TForm1 = class(TForm) Shape1: TShape; Timer1: TTimer; Shape2: TShape; Shape3: TShape; Shape4: TShape; Shape5: TShape; Shape6: TShape; procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private public end;
var Form1: TForm1; g,r,b: boolean;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject); begin
case GetPixel(canvas.Handle,shape6.left-5,shape6.top-5) of 32768: shape6.Left := shape6.Left +1; 16777215: shape6.Left := shape6.Left +1; 255: shape6.top := shape6.top +1; 16711680: shape6.top := shape6.top -1; end;
end;
procedure TForm1.FormCreate(Sender: TObject); begin doublebuffered := true; end;
end. |
[/quote]
Moderiert von
Narses: Topic aus Open Source Projekte verschoben am Mi 22.12.2010 um 23:25