Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Quellcode |
|
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 |
for I2 := msx1 to x1 do begin // msx1 = anfang der weißen linie x1 = ende der weißen linie/schusslinie posy:=steigung*I2+c; // y-wert der weißen linie an position I2, also die funktion der linie ;) if image1.Canvas.Pixels[round(I2+1),round(posy-1)] = clred then begin //wenn ein roter kreis überschnitten wurde {bottimer.Enabled := false;} // unwichtig image1.Canvas.Pen.Color := cl3DDkShadow; image1.Canvas.brush.Color := cl3DDkShadow; //puyt1[I] gleich strecke von bot zu punkt for I := 1 to bots do begin // bots = anzahl aller bots pyt1[I] := sqrt(((I2-botkx[I])*( I2-botkx[I])) + (posy -botky[I])*(posy-botky[I])); //mit satz des pytagoras berechne ich die strekcne zwischen botmittelpunkt und weißer linie wo der rote pixel entdeckt wurde. botkx = x-wert des bots, botky = y-wert des bots end; //strecken zwischen speichern for I := 1 to bots do begin pyt2[I] := pyt1[I]; //bevor alle strecken sortiert werden, kurz zwischen speichern end; // pyt[1] gleich kleinste strecke repeat //sortiert wird mit bubblesort getauscht := false; for I :=1 to bots - 1 do begin if pyt1[I] > pyt1[I+1] then begin pyt4 := pyt1[I]; pyt1[I] := pyt1[I+1]; pyt1[I+1] := pyt4; getauscht := true; end; end; until getauscht = true; for I := 1 to bots do begin if pyt1[1] = pyt2[I] then begin // hier schaue ich welcher bot die kürzeste strecke hat und übermal ihn dann. image1.Canvas.ellipse(botkx[I]-10,botky[I]-10,botkx[I]+10,botky[I]+10); soundtimer.Enabled := true; zw1 := botky[I]; zw := botkx[I]; botkx[I] := botkx[bots]; // da der bot nicht mehr gezeichnet werden soll, wird er ans ende der bot liste geschoben, botky[I] := botky[bots]; botky[bots] := zw1; botkx[bots] := zw; bots := bots-1; // und die liste um 1 verkleinert, so wird der 'tote' bot nicht mehr neu gezeichnet exit; // da der bot aus mehreren roten pixeln besteht und die for schleife nicht jedes mal ihn eliminieren soll, // soll hier die schleife beendet werden end; end; end; end; |
Werbeanzeige