Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Banana-Coding.com - Java Knuddels Emulator. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

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!