Hallo
Ich bin neu in der XCode Entwicklung.
Um niemanden unnötig mit Anfängerfragen zu nerven (für "wieso geht mein NSArray nicht" gibt es schliesslich Google),
habe ich meine Library bereits auf einen lauffähigen Stand gebracht, sie liefert zudem korrekte Ergebnisse.
Allerdings gehe ich davon aus, dass der Code 'grottenschlecht' ist (gemessen an professionellen Standards), zu lange dauert und zu viel Speicher verschwendet.
Er wurde nach bestem Wissen und Gewissen erstellt, allerdings ist das Wissen in Objective-C noch sehr gering.
Ich habe tiefere Kentnisse von VBA (meist Excel), sowie einige Erfahrungen mit C, C++, PHP, Assembler, etc
habe nun aber 5 sehr harte Wochen hinter mir, einfachste Funktionen zum laufen zu bringen, da in Objective-C alles ganz anders ist...
Den Umstieg hatte ich mir ehrlich gesagt etwas einfacher vorgestellt.
Nun ja, es ist noch kein Meister vom Himmel gefallen.
Bevor ich weitere Teile des Projektes umsetze, würde ich gerne in die Runde fragen,
welche Verbesserungsvorschläge es gibt bzw. was erfahrene XCode-Entwickler anders machen würden...
Dann kann ich dies gleich beheben und mache es bei den nachfolgenden Libraries nicht erneut falsch
(bitte bei den Antworten bedenken, dass ich mich noch nicht wirklich an Fachbegriffe und Syntax gewöhnt habe).
Schliesslich plane ich noch viele weitere Programme in der XCode-Welt und es wäre schade
erst ganz am Ende zu lernen, dass man alles hätte anders machen sollen...
Hier der Code des Aufrufs meiner Library (im Original sieht die Formatierung besser aus)
Zum Test werden alle Kombinationen von 7-Karten Texas Hold'em erzeugt und die Rückmeldung ausgewertet,
wie oft Paar, Drilling, Strasse, etc vorkommen.
Die Library (.h und .m) befinden sich in der angehängten .txt
//!! TEST
NSLog(@"Start");
SCRanking *TestHand = [SCRanking new];
NSMutableArray *Cards;
Cards = [[NSMutableArray alloc] initWithObjects: @0,@0,@0,@0,@0,@0,@0, nil];
int Table[10] = {0};
int Count = 0;
//inverse loops (from high to low numbers)
//so the array is already pre-sorted
for(int C0=51; C0 >= 4; C0--)
{
[Cards replaceObjectAtIndex:0 withObject:[NSNumber numberWithInteger:C0]];
for(int C1=C0-1; C1 >= 3; C1--)
{
[Cards replaceObjectAtIndex:1 withObject:[NSNumber numberWithInteger:C1]];
for(int C2=C1-1; C2 >= 2; C2--)
{
[Cards replaceObjectAtIndex:2 withObject:[NSNumber numberWithInteger:C2]];
for(int C3=C2-1; C3 >= 1; C3--)
{
[Cards replaceObjectAtIndex:3 withObject:[NSNumber numberWithInteger:C3]];
for(int C4=C3-1; C4 >= 0; C4--)
{
[Cards replaceObjectAtIndex:4 withObject:[NSNumber numberWithInteger:C4]];
for(int C5=C4-1; C5 >= 0; C5--)
{
[Cards replaceObjectAtIndex:5 withObject:[NSNumber numberWithInteger:C5]];
for(int C6=C5-1; C6 >= 0; C6--)
{
[Cards replaceObjectAtIndex:6 withObject:[NSNumber numberWithInteger:C6]];
int HandValue = [TestHand GetHandValue: [Cards copy]];
int Pointer = HandValue/1000000; //get type of hand
Table[Pointer] += 1; //Count each result individually
Count += 1; //Count summary of results
}}}}}}}
NSLog(@"End");
Ich bin neu in der XCode Entwicklung.
Um niemanden unnötig mit Anfängerfragen zu nerven (für "wieso geht mein NSArray nicht" gibt es schliesslich Google),
habe ich meine Library bereits auf einen lauffähigen Stand gebracht, sie liefert zudem korrekte Ergebnisse.
Allerdings gehe ich davon aus, dass der Code 'grottenschlecht' ist (gemessen an professionellen Standards), zu lange dauert und zu viel Speicher verschwendet.
Er wurde nach bestem Wissen und Gewissen erstellt, allerdings ist das Wissen in Objective-C noch sehr gering.
Ich habe tiefere Kentnisse von VBA (meist Excel), sowie einige Erfahrungen mit C, C++, PHP, Assembler, etc
habe nun aber 5 sehr harte Wochen hinter mir, einfachste Funktionen zum laufen zu bringen, da in Objective-C alles ganz anders ist...
Den Umstieg hatte ich mir ehrlich gesagt etwas einfacher vorgestellt.
Nun ja, es ist noch kein Meister vom Himmel gefallen.
Bevor ich weitere Teile des Projektes umsetze, würde ich gerne in die Runde fragen,
welche Verbesserungsvorschläge es gibt bzw. was erfahrene XCode-Entwickler anders machen würden...
Dann kann ich dies gleich beheben und mache es bei den nachfolgenden Libraries nicht erneut falsch
(bitte bei den Antworten bedenken, dass ich mich noch nicht wirklich an Fachbegriffe und Syntax gewöhnt habe).
Schliesslich plane ich noch viele weitere Programme in der XCode-Welt und es wäre schade
erst ganz am Ende zu lernen, dass man alles hätte anders machen sollen...
Hier der Code des Aufrufs meiner Library (im Original sieht die Formatierung besser aus)
Zum Test werden alle Kombinationen von 7-Karten Texas Hold'em erzeugt und die Rückmeldung ausgewertet,
wie oft Paar, Drilling, Strasse, etc vorkommen.
Die Library (.h und .m) befinden sich in der angehängten .txt
//!! TEST
NSLog(@"Start");
SCRanking *TestHand = [SCRanking new];
NSMutableArray *Cards;
Cards = [[NSMutableArray alloc] initWithObjects: @0,@0,@0,@0,@0,@0,@0, nil];
int Table[10] = {0};
int Count = 0;
//inverse loops (from high to low numbers)
//so the array is already pre-sorted
for(int C0=51; C0 >= 4; C0--)
{
[Cards replaceObjectAtIndex:0 withObject:[NSNumber numberWithInteger:C0]];
for(int C1=C0-1; C1 >= 3; C1--)
{
[Cards replaceObjectAtIndex:1 withObject:[NSNumber numberWithInteger:C1]];
for(int C2=C1-1; C2 >= 2; C2--)
{
[Cards replaceObjectAtIndex:2 withObject:[NSNumber numberWithInteger:C2]];
for(int C3=C2-1; C3 >= 1; C3--)
{
[Cards replaceObjectAtIndex:3 withObject:[NSNumber numberWithInteger:C3]];
for(int C4=C3-1; C4 >= 0; C4--)
{
[Cards replaceObjectAtIndex:4 withObject:[NSNumber numberWithInteger:C4]];
for(int C5=C4-1; C5 >= 0; C5--)
{
[Cards replaceObjectAtIndex:5 withObject:[NSNumber numberWithInteger:C5]];
for(int C6=C5-1; C6 >= 0; C6--)
{
[Cards replaceObjectAtIndex:6 withObject:[NSNumber numberWithInteger:C6]];
int HandValue = [TestHand GetHandValue: [Cards copy]];
int Pointer = HandValue/1000000; //get type of hand
Table[Pointer] += 1; //Count each result individually
Count += 1; //Count summary of results
}}}}}}}
NSLog(@"End");