2009-08-17 3 views
2

Eh bien j'ai décidé de faire quelque chose comme une boue et les pratiques que je peux utiliser dans d'autres endroits aussi, mais j'ai un problème .. je ne sais pas comment faire pour un utilisateur peut taper dans la zone réelle au lieu d'un TextfieldAide à la programmation de boue en Java

je voudrais expliquer mieux, mais je ne peux pas penser vraiment comment

+0

D'accord, je vais prendre un coup à ce ...voulez-vous dire que vous ne savez pas comment créer un serveur auquel on peut se connecter avec telnet ou un autre client MUD? – erickson

+0

non je veux dire pour l'entrée de l'utilisateur, je ne sais pas comment faire à l'endroit où un utilisateur peut entrer dans la section de sortie, c'est un GUI personnalisé. –

+0

Ah - tous ceux qui avaient un intérêt pour le MUD étaient impatients de se concentrer sur ça ;-). Voir l'addition que j'ai faite à ma réponse, qui, je l'espère, aidera. – Anon

Répondre

1

Si vous parlez d'un client MUD et en entrant le texte dans la même fenêtre comme la sortie, on dirait que vous rencontrerez le même problème que lorsque vous jouez un MUD via telnet nu dans un terminal - c'est-à-dire que le texte que vous entrez défile lorsque vous le tapez pour que vous ne puissiez pas voir pour éditer, etc. Je pense avoir un champ séparé où vous pouvez modifier si nécessaire avant de l'entrer est une bonne chose.

Vous pouvez simplement vous concentrer sur le serveur et laisser les utilisateurs (administrateurs aussi) se connecter via l'un des clients MUD là-bas comme zMUD. Je peux interpréter votre question mal, cependant. Il y a énormément de choses à faire pour créer un MUD, donc la plupart des gens n'ont pas de jeu viable quand ils partent de zéro - mais vous pouvez toujours apprendre beaucoup de l'effort, peu importe. Je l'ai fait moi-même, mais juste le serveur - n'a jamais rien fait avec un programme client ou une interface graphique.

Modification d'ajouter, après la réponse de commentaire OP:

Jetez un oeil à ce tutoriel Sun pour voir si elle aide:

http://java.sun.com/docs/books/tutorial/uiswing/components/textarea.html

Le premier exemple utilise un champ distinct pour l'entrée, mais faites défiler jusqu'à l'exemple "TextAreaDemo" qui peut montrer ce dont vous avez besoin.

+0

oh non vous avez ma bonne question, je voulais aussi utiliser pour faire mon propre type de commande pour un autre programme que je fais, je suis conscient du problème de défilement du texte, mais je voudrais toujours savoir comment fais le. –

+0

Je ne comprends pas très bien leur exemple de code, mais si ce que j'en tire est correct, tout ce qu'il y a à faire c'est lire le document en arrière de la position du curseur à la fin du mot ?? –

+0

Non - dans la partie que je crois que vous regardez, le programme recherche des mots à compléter automatiquement. Fondamentalement, vous travaillez avec un index basé sur zéro dans le texte dans le champ. Dans l'exemple, pour les événements d'insertion de l'utilisateur que le programme détecte, cet index est obtenu avec ev.getOffset(), et lorsque le programme insère lui-même du texte dans le champ, il le fait avec textArea.insert. Dans un endroit, ils appellent cela un décalage et dans un autre une position, mais dans les deux cas, c'est un indice basé sur zéro où l'action se produit. – Anon

1

Les boues ne sont pas si compliquées à fabriquer. Je pense que la réponse à ce que vous demandez est que vous devez utiliser le port telnet TCP/IP. Telnet est assez facile, vous ouvrez simplement un port et commencez à lire des données - il y a beaucoup d'informations là-dessus et même quelques bibliothèques qui peuvent vous aider. (Telnet est juste un port standard, mais il y a cette petite exception, une "négociation" qui commence au début, c'est juste envoyer quelques octets, mais si vous ne le faites pas alors rien ne se passe) .

Donc, vous écrivez votre code et commencez à écouter un port (4444 était un port commun MUD iirc). Ensuite, vous exécutez votre client telnet et vous vous connectez à ce port. Il créera une nouvelle connexion de port pour chaque personne appelant. Vous avez probablement un thread écoutant chaque port qui surveille ce que vous tapez, gère les backspaces et peut envoyer des commandes terminées à votre système de boue principal (Pour une méthode synchronisée car de nombreux ports peuvent envoyer des commandes à la fois).

C'est en fait assez facile. Recherchez une bibliothèque Telnet pour Java pour commencer.

Une recherche rapide a trouvé JavaSSH qui gère également telnet.

Editer: Je tiens à souligner qu'ils ne sont pas faciles à faire non plus! Faire des cartes, de l'équipement et des monstres toutes des données pour que vous n'ayez pas à reconstruire pour chaque monstre nécessite une certaine prévoyance ... C'est l'une de ces choses où vous allez probablement écrire votre premier et l'utiliser pendant un mois avant de décider il doit être réécrit à partir de zéro.

Je signale simplement que vous pourriez vouloir examiner la source de boue qui existe déjà. J'ai trouvé diku assez petit et facile à comprendre.