Thread Gamelogik in Perl
(7 answers)
Opened by TheDude at 2009-07-25 18:06
Ein paar Tips:
Solche konstrukte brauchst du nicht Code (perl): (dl
)
${$TestFeld[$_[2]]}[$_[1]] so ist es einfacher: Code (perl): (dl
)
$$TestFeld[$_[2]][$_[1]] sowas: Code (perl): (dl
)
@{@$ref[$x]} ist besser so geschrieben: Code (perl): (dl
)
@{$$ref[$x]} dies Konstruktion: lässt sich auch so schreiben: Code (perl): (dl
)
$string=join('',map{$$ref[$_][$x]}(0..7)); das Code (perl): (dl
)
undef $string; Weiterhin modifizierst du "@Feld" weil du nicht korrekt dereferenzierst. Wenn du machst sind alle Arrays innerhalb "@Feld" identisch mit denen in "@TestFeld". willst du das Feld Clonen so kannst du entsprechende Module nutzen (Clone) oder es von Hand machen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 my @TestFeld; for my $y (0..$#Feld) { for my $x (0..$#{$Feld[$y]}) { $TestFeld[$y][$x]=$Feld[$y][$x]; } } Und da ist noch die Parameterübergabe an Funktionen. Entweder du machst es überall oder nirgendwo (besser überall). Dieses Mischmasch ist schwer zu lesen und sorgt leicht für Fehler (man verändert Variablen und weiß nicht mehr wo das passiert ist). Aus meiner Sicht am übersichtlichsten ist am Anfang einer Funktion die Parameter benannt zu übernehmen. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 sub mach_was { my $x=shift; # ist das gleiche unten my $y=shift(); # das gleiche wie unten my $feld=shift(@_); # besagt: verschiebe den ersten Wert aus @_ in $feld my @rest=@_; # ... # code # ... } Ich weiß nicht ob das so beabsichtigt ist, aber mir scheint du testet ein Reiche und eine Spalte nur ab dem Aktuellen Punkt das könnte bei Feldern wie diesem (vereinfacht) zu falschen Interpretationen führen. den ein einfacher Tausch: oder Würde nach deiner Suche kein Treffer ergeben (soweit ich es sehe). Zudem findet deine Suche in "GetQuality" nicht die nur die neu entstandenen Zusammenhängenden Gruppen(wie ich es erwarten würde), sondern alle in der Spalte/Zeile vorhandenen. Das kann dazu Führen, dass ein Tausch als "gut" bewertet wird obwohl er keine Verbesserung bringt, wenn es schon viele Tripple in der Zeile/Spalte gibt. Last edited: 2009-07-27 00:35:27 +0200 (CEST) |