Autor Beitrag
funst3r
Hält's aus hier
Beiträge: 2



BeitragVerfasst: So 13.02.11 19:01 
Hallo,

ich bin gerade dabei Pacman zu programmieren und verzweifele gerade an folgenem Problem:

Ich habe eine Shape welche ein Coin sein soll, der eingesammelt wird.
Damit ich nicht unnütz viel Speicher verschwende, soll auf dem ganzen Projekt verteilt der coin sein. der Coin muss also verdoppelt werden, darf dabei aber nicht den Namen verändern.

D.H: Ich will dass der Coin verdoppelt wird an eine bestimmte position.

Ich habe folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
a1,b1,cx1,cy1: integer;
y: Real; //Y ist für floattostr (der Score)

procedure TForm1.Timer1Timer(Sender: TObject);
begin
a1:=bild1.left+33;
b1:=bild1.top+33;
cx1:=coin.left+12;
cy1:=coin.top+12;
if ((coin.Left>bild1.Left) and (coin.Left<a1)
and (coin.Top > bild1.Top) and (coin.Top < b1) 
and (coin.Visible=true)) or ((cx1>bild1.Left) 
and (cx1<a1) and (cy1 > bild1.Top)
and (cy1 < b1) and (coin.Visible=true)) 
then

begin
coin.Visible:=false;
y:=y+17;
end;


Mit freundlichen Grüßen

funst3r

Moderiert von user profile iconMartok: Code- durch Delphi-Tags ersetzt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 13.02.11 19:20 
Hallo und :welcome:

Erstens kann es nicht mehrere Komponenten mit dem gleichen Namen geben. Das heißt du musst schon diese Anzahl an Komponenten mit verschiedenen Namen haben.

Zweitens würde ich die Positionsprüfungen usw. in eine eigene Klasse auslagern, die sich um alles kümmert, was zu einem Coin gehört.

Drittens würde ich nicht so viele TShapes benutzen. Auch wenn es Anfangs schwieriger aussehen mag, ist es trotzdem einfacher eine TPaintbox zu nehmen und da alles selbst draufzuzeichnen. Auch das kann dann die Coin-Klasse machen.
funst3r Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: So 13.02.11 19:42 
hallo und danke für die rasche antwort.


meinst du mit dem letzten punkt, dass ich die einzelnen coins zeichnen lassen soll mit

image1.canvas.rectangle(x,y) oder anders?

aber wie kann ich dann die abfrage machen, dass die einzelnen rectangles wieder gelöscht werden?


verstehst du was ich meine?
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: So 13.02.11 21:19 
Was hältst Du davon ein Array anzulegen mit den benötigten Informationen. z.B. ein Array of Array of Char. Diese initialisierst Du beispielsweise mit
ausblenden Delphi-Quelltext
1:
SetLength(Arr,100,100);					

Füllst es mit Coins 'C', Senkrechten Wänden 'S', waagrechten Wänden 'W' deinem Pacman 'P' etc. jeder gefressene Coin wird zu einem ' '. Und jetzt das ganze in einer Paintbox malen lassen, nächsten Zustand berechnen und wieder malen lassen ....

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS