Du bist nicht angemeldet.

1

Sonntag, 10. Juli 2011, 14:12

KDice - Dicen um Knuddels

Autor: KoRn
Datum: 2. May 2011

Client.java
Suche:

Java-Quelltext

1
public Client(Socket socket) { 
Darüber:

Java-Quelltext

1
2
3
4
private Client kdice_user;
private int kdice_id;
private int kdice_count;
private String kdice_dice;

Suche:

Java-Quelltext

1
public boolean checkSpam(String channel) {  
Darüber:

Java-Quelltext

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
 public int getDiceID() {
        return kdice_id;
    }

    public String getDice() {
        return kdice_dice;
    }

    public Client getDiceUser() {
        return kdice_user;
    }

    public int getDiceCount() {
        return kdice_count;
    }

    public void setDiceUser(Client user, int count, String dice) {
        kdice_user = user;
        kdice_id = IntegerUtil.rand(100000, 999999);
        kdice_count = count;
        kdice_dice = dice;
    }

    public void increaseKnuddels(int num) {
        knuddels += num;
    }

    public void decreaseKnuddels(int num) {
        knuddels -= num;
    }  

CommandParser.java
if-Condition erweitern:

Java-Quelltext

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
else if(cmd.equals("kdice") || cmd.equals("kd")) {
            try{
                String[] pieces = arg.split(":");
                if(arg.equals("") || pieces.length != 3){
                    client.sendButlerMessage(channel.getName(), "Bitte die Funktion folgendermaßen benutzen:#/kdice [USER]:[ANZAHL]w[AUGENZAHL]:[KNUDDEL]");
                    return;
                }

                String userName = pieces[0];
                String dice = pieces[1];
                int kAnz = Integer.parseInt(pieces[2]);

                if(kAnz <= 0) {
                    client.sendButlerMessage(channel.getName(), "Anzahl muss positiv sein!");
                    return;
                }

                if(client.getKnuddels() < kAnz) {
                    client.sendButlerMessage(channel.getName(), "Du besitzt leider im Moment nicht genügend Knuddels!");
                    return;
                }

                Client c = Server.get().getClient(userName);

                if (c == null) {
                    client.sendButlerMessage(channel.getName(), arg + " ist mir unbekannt.");
                } else {
                    if(c.getName().equals(client.getName())) {
                        client.sendButlerMessage(channel.getName(), "Du kannst nicht mit dir selbst spielen!");
                        return;
                    }
                    if(c.getChannel() != client.getChannel()) {
                        client.sendButlerMessage(channel.getName(), "Dein Partner befindet sich in einem anderen Channel!");
                        return;
                    }
                    if(c.getKnuddels() < kAnz) {
                        client.sendButlerMessage(channel.getName(), "Dein Partner besitzt leider im Moment nicht genügend Knuddels!");
                        return;
                    }

                    c.setDiceUser(client, kAnz, dice);
                    client.sendButlerMessage(channel.getName(), "°>_h" + c.getName() + "|/serverpp "|/w "<° wurde benachrichtigt!");
                    c.sendButlerMessage(channel.getName(),
                                        "°>_h" + client.getName() +
                                        "|/serverpp "|/w "<° möchte mit dir um " +
                                        kAnz +
                                        " Knuddels mit " +
                                        dice +
                                        " würfeln!#Wenn du damit einverstanden bist, klicke auf " +
                                        "°>{button} Ok ||call|/ok " +
                                        c.getDiceID() +
                                        "<°"
                                        );
                }

            }catch(Exception ex){
                client.sendButlerMessage(channel.getName(), "Bitte die Funktion folgendermaßen benutzen:#/kdice [USER]:[ANZAHL]w[AUGENZAHL]:[KNUDDEL]");
            }
        } else if(cmd.equals("ok")) {
          try {
              int id = Integer.parseInt(arg);
              if(client.getDiceID() == id) {

                  if(client.getDiceUser() == null) {
                      client.sendButlerMessage(channel.getName(), "Dein KDice-Partner befindet sich mitlerweile offline!");
                      return;
                  }

                  String dice1 = IntegerUtil.dice(client.getDice());
                  String dice2 = IntegerUtil.dice(client.getDice());

                  int ges1 = Integer.parseInt(dice1.substring(dice1.indexOf('=') + 1).trim());
                  int ges2 = Integer.parseInt(dice2.substring(dice2.indexOf('=') + 1).trim());

                  Client winner = ges1 > ges2 ? client : client.getDiceUser();
                  Client loser = ges1 > ges2 ? client.getDiceUser() : client;

                  String msg1 = PacketCreator.action(">", channel.getName(), String.format("°>_h%s|/serverpp "|/w "<° rollt einen Würfel...#%s", client.getName(), dice1));
                  String msg2 = PacketCreator.action(">", channel.getName(), String.format("°>_h%s|/serverpp "|/w "<° rollt einen Würfel...#%s", client.getDiceUser().getName(), dice2));

                  String msg3 = "";
                  if(ges1 != ges2) {
                      msg3 = PacketCreator.action(">", channel.getName(),
                                        String.format(
                                            "°>_h%s|/serverpp "|/w "<° gewinnt die KDice-Runde und bekommt %s Knuddels von °>_h%s|/serverpp "|/w "<°!",
                                            winner.getName(),
                                            client.getDiceCount(),
                                            loser.getName()
                                        )
                                    );

                      winner.increaseKnuddels(client.getDiceCount());
                      loser.decreaseKnuddels(client.getDiceCount());
                  } else {
                      msg3 = PacketCreator.action(">", channel.getName(),
                                        String.format(
                                             "Die KDice-Runde zwischen °>_h%s|/serverpp "|/w "<° und °>_h%s|/serverpp "|/w "<° geht Remis aus und jeder behält seinen Einsatz von _%s Knuddels_",
                                             winner.getName(),
                                             loser.getName(),
                                             client.getDiceCount()
                                        )
                            );
                  }
                  client.setDiceUser(client, 0, "");

                  for (Client cl : channel.getClients()) {
                    cl.send(msg1);
                    cl.send(msg2);
                    cl.send(msg3);
                  }
              }
          } catch (NumberFormatException nfe) {
          } catch (Exception ex) { }
        }  

Außerdem eine neue Klasse erstellen (IntegerUtil im Package tools)

Java-Quelltext

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
package tools;

/**
 *
 * @author Flav od. Duncan !?!?
 */
public class IntegerUtil {
    public static int rand(int min, int max) {
        return (int) (Math.random() * (max - min + 1) + min);
    }

    public static String dice(String arg) throws Exception{
        StringBuilder buffer = new StringBuilder();
        String[] w = arg.toLowerCase().split("w");
        int wuerfel = Integer.parseInt(w[0]);
        int augen = Integer.parseInt(w[1]);
        int[] dices = new int[wuerfel];
        int gesamt = 0;

        if(wuerfel > 25 || augen > 100000){
            throw new Exception("zu groß du bob");
        }

        buffer.append(wuerfel).append("W").append(augen).append(":");

        for(int i = 0; i < wuerfel; i++){
            dices[i] = IntegerUtil.rand(1, augen);
            buffer.append(" ").append(dices[i]);
            gesamt += dices[i];
            if((i + 1) < wuerfel){
                buffer.append(",");
            }
        }

        buffer.append(" = ");
        buffer.append(gesamt);

        return buffer.toString();
    }
}  

MfG
Kein Support per PN. Nur im Forum!