You are not logged in.

  • Login
Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

Dear visitor, welcome to Nitrado.net Prepaid Gameserver Community-Support - Archiv. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

JonnyMine25

User / Kunde

  • "JonnyMine25" is male
  • "JonnyMine25" started this thread

Posts: 572

  • Send private message

1

Wednesday, February 20th 2013, 2:24pm

HashMap für ein RankSystem benutzen?

Hallo,

ich soll ein Top-Ten System entwickeln. Ich habe in einer HashMap die Werte gespeichert und jetzt ist meine Frage, wie man diese nach dem größten Wert sortieren kann.
z.B.

Java source code

1
2
3
4
5
6
HashMap<String, Double> hashmap = new HashMap<String, Double>();

if(args.length == 0
 {
p.sendMessage("1. " + playermitgrößtemwert + "(Punkte: "+ punkte + ")");
}


Wie finde ich den playermitgrößtemwert heraus und wie die punkte?

itoobi

User / Kunde

  • "itoobi" is male

Posts: 153

Occupation: Student

Thanks: 2

  • Send private message

2

Wednesday, February 20th 2013, 5:58pm

Stichwort "Sortieralgorithmen"
Get our new game Shrink: Download on Google Play
Visit our website www.hgs-studios.com

Franzi564

User / Kunde

Posts: 763

Thanks: 15

  • Send private message

3

Wednesday, February 20th 2013, 7:21pm

Java source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
String maxPlayer = null;
double maxWert = 0;
for (Entry<String, Double> e : hashmap.entrySet ())
{
	String player = e.getKey();
	double wert = e.getValue();
	if (wert > maxWert)
	{
		maxPlayer = player;
		maxWert = wert;
	}
}
if (maxPlayer == null)
{
	p.sendMessage("Es gibt keinen größten Spieler!");
	return;
}
p.sendMessage("1. " + maxPlayer + "(Punkte: "+ maxWert + ")");

Ich hoffe, du versteht den Code.

This post has been edited 1 times, last edit by "Franzi564" (Feb 21st 2013, 7:10am)


jonas4345

User / Kunde

  • "jonas4345" is male

Posts: 1,216

Location: Iserlohn

Occupation: Schüler, Ton/Licht - Techniker

Thanks: 15

  • Send private message

4

Wednesday, February 20th 2013, 7:26pm

Du musst einfach, wie Franzi es dargestellt hat, immer gucken, ob ein Spieler eine höhere Punktzahl, als die Bereits höchste Punktzahl hat :)

Beispiel:
Spieler 1| 10p
Spieler 2| 5p
Spieler 3| 20p

Man guckt, ob die Punkte von Spieler 2 größer als die von Spieler 1 sind. Dies trifft nicht zu.
Also maxPunkte: 10

Dann wird geguckt, ob die Punkte von Spieler 3 größer sind als der maxWert. Das trifft zu.
Also maxPunkte: 20

Diese Schritte wiederholt man einfach, bis es keine Spieler mehr gibt :)

Freundliche Grüße,

Zitat

Uppps..... Wie war das noch? - Wer lesen kann ist klar im Vorteil?!

JonnyMine25

User / Kunde

  • "JonnyMine25" is male
  • "JonnyMine25" started this thread

Posts: 572

  • Send private message

5

Wednesday, February 20th 2013, 9:23pm

Ich versteh das nicht ;( das von Franzi schon aber das von jonas nich ;(

Stuppsman

User / Kunde

Posts: 2,766

Thanks: 25

  • Send private message

6

Thursday, February 21st 2013, 7:21am

Er hat nur die for-Schleife in Worte gepackt ;)
Nein, ich hab kein Skype.. bei Interesse an einer privaten Unterrichtsstunde, wende dich bitte direkt an mein Team! 8)

JonnyMine25

User / Kunde

  • "JonnyMine25" is male
  • "JonnyMine25" started this thread

Posts: 572

  • Send private message

7

Thursday, February 21st 2013, 3:23pm

Aso aber ich versteh jetzt nicht wie ich das mit 5 - 10 Leuten mache und nicht mit 1 Spieler

bubbleguj

User / Kunde

  • "bubbleguj" is male

Posts: 704

Location: Vancouver, Canada

Occupation: Special Projects Assistant

Thanks: 9

  • Send private message

8

Thursday, February 21st 2013, 4:32pm

Sowas hier:

PHP Source code

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
                public void showBestPlayers(Player p) {            
                        HashMap<StringDoubletopten deineHashMap;
                        
                        //pX steht für Punkte        
                        int p1 0;
                        int p2 0;
                        int p3 0;
                        int p4 0;
                        int p5 0;
                        int p6 0;
                        int p7 0;
                        int p8 0;
                        int p9 0;
                        int p10 0;

                        //cX steht für den Spielernamen
                        String c1 "**********";
                        String c2 "**********";
                        String c3 "**********";
                        String c4 "**********";
                        String c5 "**********";
                        String c6 "**********";
                        String c7 "**********";
                        String c8 "**********";
                        String c9 "**********";
                        String c10 "**********";
                        
                        for(Entry<StringDoubletopten.entrySet ()){
            
                                  // Eigentlich playername, aber das hier war ein clanplugin, und ich schreibe jetzt hier nicht alles um ;)
                                String clanname e.getKey();
                                double punkte e.getValue();
                                
                                if(punkte p1 || punkte == p1 && punkte == p2) {
                                    
                                    p1 punkte;
                                    c1 clanname;
                                    break;
                                }

                                if(punkte p1 && punkte p2 || punkte == p2 && punkte == p3) {
                                    
                                    p2 punkte;
                                    c2 clanname;
                                    break;
                                }
                                
                                if(punkte p2 && punkte p3 || punkte == p3 && punkte == p4) {
                                    
                                    p3 punkte;
                                    c3 clanname;
                                    break;
                                }
                                
                                if(punkte p3 && punkte p4 || punkte == p4 && punkte == p5) {
                                    
                                    p4 punkte;
                                    c4 clanname;
                                    break;
                                }
                                
                                if(punkte p4 && punkte p5 || punkte == p5 && punkte == p6) {
                                    
                                    p5 punkte;
                                    c5 clanname;
                                    break;
                                }
                                
                                if(punkte p5 && punkte p6 || punkte == p6 && punkte == p7) {
                                    
                                    p6 punkte;
                                    c6 clanname;
                                    break;
                                }
                                
                                if(punkte p6 && punkte p7 || punkte == p7 && punkte == p8) {
                                    
                                    p7 punkte;
                                    c7 clanname;
                                    break;
                                }
                                
                                if(punkte p7 && punkte p8 || punkte == p8 && punkte == p9) {
                                    
                                    p8 punkte;
                                    c8 clanname;
                                    break;
                                }
                                
                                if(punkte p8 && punkte p9 || punkte == p9 && punkte == p10) {
                                    
                                    p9 punkte;
                                    c9 clanname;
                                    break;
                                }
                                
                                if(punkte p9 && punkte p10) {
                                    
                                    p10 punkte;
                                    c10 clanname;
                                    break;
                                }    
                            }
                            
                            p.sendMessage("1. " c1 " (" p1 " Punkte)");
                            p.sendMessage("2. " c2 " (" p2 " Punkte)");
                            p.sendMessage("3. " c3 " (" p3 " Punkte)");
                            p.sendMessage("4. " c4 " (" p4 " Punkte)");
                            p.sendMessage("5. " c5 " (" p5 " Punkte)");
                            p.sendMessage("6. " c6 " (" p6 " Punkte)");
                            p.sendMessage("7. " c7 " (" p7 " Punkte)");
                            p.sendMessage("8. " c8 " (" p8 " Punkte)");
                            p.sendMessage("9. " c9 " (" p9 " Punkte)");
                            p.sendMessage("10. " c10 " (" p10 " Punkte)");
                        
                    return;
                } 
Programmer (noun.)
A person who fixed a problem that you don't have, in a way you don't understand.

Algorithm (noun.)
Word used by programmers when they don't want to explain what they did.

prog266

Moderator im Ruhestand

Posts: 7,603

Thanks: 476

  • Send private message

9

Thursday, February 21st 2013, 5:00pm

Ist das dein Ernst?
Das ist schrecklicher Code und nicht sonderlich effizient..

Mit 2 Schleifen sollte es ohne Probleme gehen.

Gruß,
prog266

bubbleguj

User / Kunde

  • "bubbleguj" is male

Posts: 704

Location: Vancouver, Canada

Occupation: Special Projects Assistant

Thanks: 9

  • Send private message

10

Thursday, February 21st 2013, 9:31pm

Wie bereits im Code zu lesen ist, war dies Ursprünglich für ein anderes Plugin, und wurde jetzt nur raus kopiert. Das andere Plugin lief aber über eine eigene database, welche einiges komplizierter machte.. :)
Außerdem verstehe ich dein Problem nicht? Nur weil der Code länger (und unübersichtlicher) ist, soll er schlechter sein? Nicht böse gemeint, aber schreib doch selbst einen und sag nicht anderen, es sei falsch.. Danke
Programmer (noun.)
A person who fixed a problem that you don't have, in a way you don't understand.

Algorithm (noun.)
Word used by programmers when they don't want to explain what they did.

itoobi

User / Kunde

  • "itoobi" is male

Posts: 153

Occupation: Student

Thanks: 2

  • Send private message

11

Thursday, February 21st 2013, 9:38pm

Sortieralgorithmen sind resourcen-freundlicher und flexibler.
http://www.java-forum.org/allgemeines/39…-sortieren.html
Get our new game Shrink: Download on Google Play
Visit our website www.hgs-studios.com

bubbleguj

User / Kunde

  • "bubbleguj" is male

Posts: 704

Location: Vancouver, Canada

Occupation: Special Projects Assistant

Thanks: 9

  • Send private message

12

Thursday, February 21st 2013, 9:42pm

Kannte ich auch nicht, danke für den Link! :)
"sind resourcen-freundlicher" - Nunja, ich denke nicht, dass meine paar Zeilen Code so viele Resourcen fressen ;)
Programmer (noun.)
A person who fixed a problem that you don't have, in a way you don't understand.

Algorithm (noun.)
Word used by programmers when they don't want to explain what they did.

JanST

User / Kunde

Posts: 84

  • Send private message

13

Friday, February 22nd 2013, 12:10am

Ich hoffe das hier hilft dir ein wenig weiter.
Ich hab das ein wenig anders gelöst d.h., keine HashMap sondern eine List.

TopList Klasse:

PHP Source code

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
public class TopList {

    private Map<StringIntegerlevels = new HashMap<StringInteger>();
    
    public TopList(Map<StringIntegerlevels) {
        this.levels levels;
    }
    
    public List<Entry<StringInteger>> getTop(int paramint) {
        List<Entry<StringInteger>> toplist = new LinkedList<Entry<StringInteger>>();
        
        for(int key 0keyparamintkey++) {
            Entry<StringIntegergetTop();
            
            if(!= null) {
                toplist.add(e);
            }
            else {
                return toplist;
            }
        }
        
        return toplist;
    }
    
    private Entry<StringIntegergetTop() {
        Entry<StringIntegertop null;
        
        for(Entry<StringIntegerset levels.entrySet()) {
            int i set.getValue();
            
            if(top == null || top.getValue()) {
                top set;
            }
        }
        if(top != null)
            levels.remove(top.getKey());
        
            return top;
    }
}


Aufruf:

PHP Source code

1
2
3
4
5
6
7
8
                  //Dieses Map-Objekt dient nur zur Vorlage und sollte später nicht verwendet werden!!!
          Map<StringIntegerdeinespielerundlevelmap = new HashMap<StringInteger>();
          List<Entry<StringInteger>> toplist = new TopList(deinespielerundlevelmap).getTop(10);
          
          for(int key 0key toplist.size(); key++) {
              Entry<StringIntegertoplist.get(key);
              player.sendMessage(key+": " e.getKey() + " (Level: " e.getValue() + ")");
          }

Stuppsman

User / Kunde

Posts: 2,766

Thanks: 25

  • Send private message

14

Friday, February 22nd 2013, 5:53am

Nunja, ich denke nicht, dass meine paar Zeilen Code so viele Resourcen fressen


Da magst du vielleicht recht haben... aber ganz ehrlich, schön programmieren sieht anders aus. Ich machs aber auch nicht sonderlich viel schöner.. ich such mir immer den größten und pack ihn in ne private ArrayList, damit er bei der nächsten Suche nach dem größten ausgelassen wird.
Nein, ich hab kein Skype.. bei Interesse an einer privaten Unterrichtsstunde, wende dich bitte direkt an mein Team! 8)

MinePvPde

User / Kunde

Posts: 125

  • Send private message

15

Friday, February 22nd 2013, 11:33am

Falls du hier nicht weiter kommst schreib mich an.
Ich kann mein Dev fragen wie er das ganze auf www.epicpvp.eu gemacht hat.
Am besten kaufst du dir ein PhP Buch so lernte er alles , ohne vorkenntnise.

This post has been edited 1 times, last edit by "MinePvPde" (Feb 22nd 2013, 11:39am)


XemsDoom

User / Kunde

  • "XemsDoom" is male

Posts: 758

Location: Zurich

Occupation: Sidekick

  • Send private message

16

Friday, February 22nd 2013, 12:36pm

Quoted

Spoiler Spoiler

Quoted

PHP Source code

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
                public void showBestPlayers(Player p) {            
                        HashMap topten deineHashMap;
                        
//pX steht für Punkte        
                        int p1 0;
                        int p2 0;
                        int p3 0;
                        int p4 0;
                        int p5 0;
                        int p6 0;
                        int p7 0;
                        int p8 0;
                        int p9 0;
                        int p10 0;

//cX steht für den Spielernamen
                        String c1 "**********";
                        String c2 "**********";
                        String c3 "**********";
                        String c4 "**********";
                        String c5 "**********";
                        String c6 "**********";
                        String c7 "**********";
                        String c8 "**********";
                        String c9 "**********";
                        String c10 "**********";
                        
                        for(Entry e topten.entrySet ()){
            
                                // Eigentlich playername, aber das hier war ein clanplugin, und ich schreibe jetzt hier nicht alles um ;)
                                String clanname e.getKey();
                                double punkte e.getValue();
                                
                                if(punkte p1 || punkte == p1 && punkte == p2) {
                                    
                                    p1 punkte;
                                    c1 clanname;
                                    break;
                                }

                                if(punkte p1 && punkte p2 || punkte == p2 && punkte == p3) {
                                    
                                    p2 punkte;
                                    c2 clanname;
                                    break;
                                }
                                
                                if(punkte p2 && punkte p3 || punkte == p3 && punkte == p4) {
                                    
                                    p3 punkte;
                                    c3 clanname;
                                    break;
                                }
                                
                                if(punkte p3 && punkte p4 || punkte == p4 && punkte == p5) {
                                    
                                    p4 punkte;
                                    c4 clanname;
                                    break;
                                }
                                
                                if(punkte p4 && punkte p5 || punkte == p5 && punkte == p6) {
                                    
                                    p5 punkte;
                                    c5 clanname;
                                    break;
                                }
                                
                                if(punkte p5 && punkte p6 || punkte == p6 && punkte == p7) {
                                    
                                    p6 punkte;
                                    c6 clanname;
                                    break;
                                }
                                
                                if(punkte p6 && punkte p7 || punkte == p7 && punkte == p8) {
                                    
                                    p7 punkte;
                                    c7 clanname;
                                    break;
                                }
                                
                                if(punkte p7 && punkte p8 || punkte == p8 && punkte == p9) {
                                    
                                    p8 punkte;
                                    c8 clanname;
                                    break;
                                }
                                
                                if(punkte p8 && punkte p9 || punkte == p9 && punkte == p10) {
                                    
                                    p9 punkte;
                                    c9 clanname;
                                    break;
                                }
                                
                                if(punkte p9 && punkte p10) {
                                    
                                    p10 punkte;
                                    c10 clanname;
                                    break;
                                }    
                            }
                            
                            p.sendMessage("1. " c1 " (" p1 " Punkte)");
                            p.sendMessage("2. " c2 " (" p2 " Punkte)");
                            p.sendMessage("3. " c3 " (" p3 " Punkte)");
                            p.sendMessage("4. " c4 " (" p4 " Punkte)");
                            p.sendMessage("5. " c5 " (" p5 " Punkte)");
                            p.sendMessage("6. " c6 " (" p6 " Punkte)");
                            p.sendMessage("7. " c7 " (" p7 " Punkte)");
                            p.sendMessage("8. " c8 " (" p8 " Punkte)");
                            p.sendMessage("9. " c9 " (" p9 " Punkte)");
                            p.sendMessage("10. " c10 " (" p10 " Punkte)");
                        
                    return;
                } 

Was zum Teufel soll das Bitte sein?!!!!!!
HasteBin without limit: Xems' Hastebin

xapfeltortexp

User / Kunde

Posts: 310

Thanks: 2

  • Send private message

17

Friday, February 22nd 2013, 1:33pm

Falls du hier nicht weiter kommst schreib mich an.
Ich kann mein Dev fragen wie er das ganze auf www.epicpvp.eu gemacht hat.
Am besten kaufst du dir ein PhP Buch so lernte er alles , ohne vorkenntnise.


Ein PHO Buch xD haha er redet von Java. Was will er da mit php wenn die syntax von php an c/c++ angelehnt ist?

Die lösung wudde von franzi456 doch schon gegeben....
LostForce.com | http://LostForce.com | ts.LostForce.com

This post has been edited 1 times, last edit by "xapfeltortexp" (Feb 22nd 2013, 1:40pm)


MinePvPde

User / Kunde

Posts: 125

  • Send private message

18

Friday, February 22nd 2013, 2:48pm

Sry habe mich verschrieben.
Und ich wollte ja auch nur helfen.
Aber trotzdem empfehle ich immer noch ein Buch , durchlesen und du kannst alle arten von Plugins schreiben.
Ich bin auch schon dabei. Und es klappt echt super

JonnyMine25

User / Kunde

  • "JonnyMine25" is male
  • "JonnyMine25" started this thread

Posts: 572

  • Send private message

19

Friday, February 22nd 2013, 7:19pm

@MinePvPDe
Hab ich bereits.
Eine Frage an alle: Ist es möglich alle Sections in eine HashMap zu übetragen^^?

Stuppsman

User / Kunde

Posts: 2,766

Thanks: 25

  • Send private message

20

Friday, February 22nd 2013, 8:54pm

Was isn das für ne Frage? :D Ja, klar ^^
Nein, ich hab kein Skype.. bei Interesse an einer privaten Unterrichtsstunde, wende dich bitte direkt an mein Team! 8)

Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net

Similar threads