Problem mit Types
Übersicht

![]() |
maboxBetreff: Problem mit Types |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo, hab ein kleines Problem mit einem Type, Ich will prüfen ob die Position des einen Spielers die selbe ist wie die Position eines anderen.
Leider wird bei der Überprüfung auch der geprüft ob die Position des ersten Spielers die gleiche ist wie die des ersten spielers, was natürlich zutrifft. Wie kann ich das ändern? hier mein Code: [AUSKLAPPEN] Type Spieler
Field spieler_x Field spieler_y End Type anzahl = 500 For i = 1 To anzahl info.Spieler = New Spieler info\spieler_x = Rand(1,800) info\spieler_y = Rand(1,600) Next For info.spieler = Each Spieler If info\spieler_x = info\spieler_x Then If info\spieler_y = info\spieler_y Then anzahleinheiten = anzahleinheiten +1 EndIf Next |
||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zum Beispiel so:
Code: [AUSKLAPPEN] Type Spieler
Field spieler_x Field spieler_y End Type anzahl = 500 For i = 1 To anzahl info.Spieler = New Spieler info\spieler_x = Rand(1,800) info\spieler_y = Rand(1,600) Next For info.spieler = Each Spieler For info2.spieler = Each Spieler If info\spieler_x = info2\spieler_x And info<>info2 Then If info\spieler_y = info\spieler_y Then anzahleinheiten = anzahleinheiten +1 EndIf Next Next Wird allerdings bei vielen Einträgen etwas heikel, so eine doppelte For-Schleife. mfG |
||
![]() |
mabox |
![]() Antworten mit Zitat ![]() |
---|---|---|
warum? braucht das viel Prozessorleistung? oder was? | ||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
- Zuletzt bearbeitet von mabox am Mo, März 24, 2008 18:25, insgesamt 2-mal bearbeitet
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
naja ... es braucht n^2 schleifendurchläufe, wobei n die anzahl einträge ist.
Insofern nehme ich an kannst du dir vorstellen in welchem masse mehr einträge die rechenzeit beeinträchtigen, oder? ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du wirst selbst bemerken, wie lange der Prozessor in solchen Schleifen bleibt, abhängig von der Anzahl der Einträge.
In deinem Fall würde er 500 mal 500 Einträge überprüfen. Also die erste If-Bedingung wird 250.000mal durchgangen. Wohlgemerkt: Immer mit anderen Daten, also es ist notwendig, so einen Aufwand zu betreiben. mfG, Christoph. |
||
![]() |
mabox |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen Dank erstmal!
Aber leider funktionierts noch nicht ganz so wie ich es haben will, am schluss soll nämlich an jeder Position die Anzahl der einheiten stehen die dort vorhanden ist. Bis jetzt kommt etwas vollkommen falsches dabei heraus ![]() EDIT: habs jetzt, der Fehler war hier Code: [AUSKLAPPEN] For info.spieler = Each Spieler
For info2.spieler = Each Spieler If info\spieler_x = info2\spieler_x And info<>info2 Then If info\spieler_y = info2\spieler_y And info<>info2 Then info\spieler_einheiten = info\spieler_einheiten +1 EndIf Next Next |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Anstatt Types mit 2 For Next Schleifen zu vergleichen
ist diese hier wesentlich besser geeignet, da hier keine doppelt abgefragt werden Code: [AUSKLAPPEN] For a1.nn = Each nn
a2.nn = After a1 While a2 <> Null If a1\x = a2\x Then ;mach was End If a2 = After a2 Wend Next |
||
[BB2D | BB3D | BB+]
|
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group