mi duda es como se le puede hacer para que en una ventana se dibujen los caracteres que presiono del teclado y se dibujen en la ventana
Estoy untilizando Interfaces graficas de uasuario
Se que el Scanner es para leer en consola pero lo que yo quiero hacer es leer desde la ventana que hago. En la ventana no existe ningun objeto de entrada como los TextArea o TextField. Solomente quiero hacer que cuando presione una tecla esta a aparezca en la ventana.
Como en el juego del ahorcado que solo presionabas las letras del teclado y aparecian las letras que coincidian.
ya que estoy haciendo uno en mi ventana que se llama VentanaJuego carga la clase Dibujo que aprte de dibujar se encarga de hacer todo el despapaye del juego y lo que quiero hacer es que see lea una letra del teclado y esta aparasca en la ventana que de algun modo yo la capturaria para luego dibujarla. Por lo que nadamas quiero saber como se le hace para leer en la ventana entradas del teclado.
mi siguiente duda ya puedo pintar las letras o una pieza del mono si te equibocas, pero ahora cuando presiono otra letra q si esta o no esta se borra la letra que ya habia encontrado o la parte del dibujo del mono q ya se habia dibujado. entonces lo que pregunto es ¿como se le hace para que no me borre todo lo que ya staba dibujado (letras o una parte del mono)?
o <- - - dibujo del mono cuando te equibocas. En ste caso la cabeza se dibujo
a _ a _ _ _ _ _ <- - - donde se colocan las letras leidas del teclado
ahora cuando me equivoco o presiono otra letra correcta se desaparece lo que habia escrito y aparece lo otro ya sea si me equivoco o le atino.
Aqui se borro lo que ya tenia dibujado.
/ <- - - dibujo del mono cuando te equibocas. En ste caso el brazo izquierdo se dibujo.
_ _ _ _ _ l l _ <- - - donde se colocan las letras leidas del teclado
y cuando deberia de quedar asi.
O <- - - dibujo del mono cuando te equibocas. Deberia ser asi
/
a _ a _ _ l l _ <- - - donde se colocan las letras leidas del teclado
adherire my codigo:
a todavia me falta validar algunas cosas pero eso pa' despues ahorita lo que busco esque pueda pintar sin que me quite lo que ya tenia
//Clase para Correr el proyecto
public class Jugar {
/**
* @param args
*/
public static void main
(String[] args
) {
VentanaMenu ahorcado=new VentanaMenu();
ahorcado.setVisible(true);
}
}
//Clase MENU
setTitle("Menu");
setSize(500,500);
setLocation(250,50);
setResizable(false);
setDefaultCloseOperation
(JFrame.
EXIT_ON_CLOSE);
this.
getContentPane().
setBackground(Color.
DARK_GRAY);
SpringLayout layout =new SpringLayout();
contenedor.setLayout(layout);
titulo.
setFont(new Font("Arial",
Font.
BOLD,
40)); titulo.
setForeground(new Color(0,
100,
250));
contrHumano.addActionListener(this);
contraCpu.addActionListener(this);
ayuda.addActionListener(this);
creditos.addActionListener(this);
contrHumano.
setPreferredSize(new Dimension(100,
60)); contraCpu.
setPreferredSize(new Dimension(100,
60)); ayuda.
setPreferredSize(new Dimension(100,
60)); creditos.
setPreferredSize(new Dimension(100,
60));
layout.putConstraint(SpringLayout.WEST,titulo,130,SpringLayout.WEST,contenedor);
layout.putConstraint(SpringLayout.NORTH,titulo,50,SpringLayout.NORTH,contenedor);
layout.putConstraint(SpringLayout.WEST,contrHumano,100,SpringLayout.WEST,contenedor);
layout.putConstraint(SpringLayout.NORTH,contrHumano,200,SpringLayout.NORTH,contenedor);
layout.putConstraint(SpringLayout.WEST,contraCpu,300,SpringLayout.WEST,contenedor);
layout.putConstraint(SpringLayout.NORTH,contraCpu,200,SpringLayout.NORTH,contenedor);
layout.putConstraint(SpringLayout.WEST,ayuda,100,SpringLayout.WEST,contenedor);
layout.putConstraint(SpringLayout.NORTH,ayuda,350,SpringLayout.NORTH,contenedor);
layout.putConstraint(SpringLayout.WEST,creditos,300,SpringLayout.WEST,contenedor);
layout.putConstraint(SpringLayout.NORTH,creditos,350,SpringLayout.NORTH,contenedor);
contenedor.add(titulo);
contenedor.add(contrHumano);
contenedor.add(contraCpu);
contenedor.add(ayuda);
contenedor.add(creditos);
}
//Clase donde se dibujara en esta ventana
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
{
char caracter;
int vidas=7;
Dibujo dibujo;
//Base de datos de palabras pa cuando juegas contra la maquina
String BDPalabras
[]={"hola",
"Alcohol",
"jugador",
"pelota",
"computadora",
"programacion",
"alemania",
"suesia",
"teclado","arbol","tierra","jupiter","dragon","lluvia","nube","lenguaje","estrella",
"diccionario","inicio","impresora","tienda","avion","ferrocarril","lucha","caramelo","dulce",
"dormir","brincar","telefono","television","radio","antena","mercado","kilometro","agua",
"estado","banco","ejercito","abanico","borrego","perro","lombriz","lengua","laguna","volcan",
"mar","sal","tecla","asiento","destruccion","parentesis","barro","mexico","salir","tren",
"redfrigerascion","salud","sol","jupiter","pantalon","sierra","dios","dos","tres","lagato",
"metro","centimetro","ahogado","helicoptero","tornado","huracan","calle","cable","monitos",
"centro","abaco","silla","explocio","lancha","tarjeta","moneda","historia","hueco","lava",
"numero","abecedario","letra","monte","palmera","playa","carton","caja","madera","luz","foco",
"cara","pierna","panza","elote","dinosuario","kakaroto"};
//Todavia no se utilizan ni se dibujan
public VentanaJuego(final int opcion)
{
setTitle("Ahorcado");
setSize(600,600);
setLocation(250,50);
setResizable(false);
setDefaultCloseOperation
(JFrame.
DISPOSE_ON_CLOSE);
if(opcion == 1)//Porsi quieres jugar contra otro humano
{
//se dibuja una ventana para introducir la palbra secreta
palabra
=JOptionPane.
showInputDialog(getParent
(),
"Ingrese la palabra a ocultar",
"Ocultador de palabra",
JOptionPane.
DEFAULT_OPTION); dibujo=new Dibujo(palabra);
}
else
{
//Si juegas contra la maquina se seleccionara una palabra de la lista
palabra=BDPalabras[100];
dibujo=new Dibujo(palabra);
}
{
{
//Obtenemos la letra presionada del teclado
caracter=e.getKeyChar();
//Convertimos la variable caracter a String ya que eso es la que recibe la variable caracter de la otra clase y se lo pasamos a la variable caracter de tipo String de la otra clase
dibujo.
caracter=String.
valueOf(caracter
); dibujo.vidas=vidas;
//una pruba nada mas para saber si esta entrando en dicho metodo
System.
out.
println(dibujo.
getQuitarVidas());
if(dibujo.getQuitarVidas() == false)
{
//Otra prueba namas para ver como se esta comportando la variable
--vidas;
}
//Repintamos denuevo toda la ventana
repaint();
}
});
//Adherimos la clase dibujo al frame
this.add(dibujo);
}
@Override
}
@Override
// TODO Auto-generated method stub
}
@Override
// TODO Auto-generated method stub
}
}
//classe para dibujar
import javax.swing.*;
import java.awt.*;
{
boolean encontrado=false;
int vidas=7;
int posicionLetra;
int xInicio=50;
char arregloPalabra[];
//Primer constructor para inciar el juego
{
this.palabra=palabra;
}
{
super.paintComponent( g );
//Dibuja Nombre del jugador
g2.
setFont(new Font("Arial",
Font.
BOLD,
25)); g2.drawString("Player 1", 250, 50);
//Dibuja Vidas
g2.
setFont(new Font("Arial",
Font.
BOLD,
25)); g2.drawString("Vidas: "+vidas, 400, 250);
//fill para rellenear las figuras de algun color. Su utilizacion es
//fill mas el nombre de la figura a rellenar (colorear) ejemplo fillRect.
//Rectangulo coloreado
//Dibuja Palo plataforma
g2.
setColor(new Color(150,
75,
0)); g2.fillRect(10, 400, 200,25);
//Dibuja Palo vertical
g2.
setColor(new Color(150,
75,
0)); g2.fillRect(50, 110 , 25, 300);
//Dibuja Palo horizontal
g2.
setColor(new Color(150,
75,
0)); g2.fillRect(20, 85 , 250, 25);
//Dibuja las lineas donde se colocaran las letras
dibujarLineas(g2);
//Dividimos la variable palabra en char para guardrlo en un arreglo de char
arregloPalabra=palabra.toCharArray();
//Recorre el arreglo de char para saber si se encuentra el caracter obteneido desde el teclado en el arreglo
for(int pos=0; pos < arregloPalabra.length; ++pos)
{
if(String.
valueOf(arregloPalabra
[pos
]).
equals(caracter
)) {
posicionLetra=pos;
letra
=String.
valueOf(arregloPalabra
[pos
]); //Para siempre dibujar la primera letra que sea en la primera posicion
if(posicionLetra == 0)
{
g2.
setColor(Color.
BLACK); g2.
setFont(new Font("Arial",
Font.
BOLD,
15)); g2.drawString(letra,55,480);
}
else
{
if(posicionLetra >= 1)
{
posicionLetra*=45;
xInicio+=posicionLetra;
g2.
setColor(Color.
BLACK); g2.
setFont(new Font("Arial",
Font.
BOLD,
25)); g2.drawString(letra,xInicio,480);
//reiniciamos las variables para que no se salgan del
//limite de las lineas
posicionLetra=0;
xInicio=50;
}
}
encontrado=true;
}
}
if(vidas == 7)
{
//Dibuja Cuerda
g2.
setColor(Color.
BLACK); g2.drawLine(250, 110, 250, 140);
}
else
{
if(vidas == 6)
{
//Dibuja Cara
g2.
setColor(Color.
BLACK); g2.fillOval(225, 140, 50, 50);
}
else
{
if(vidas == 5)
{
//Dibuja Cuerpo
g2.
setColor(Color.
BLACK); g2.drawLine(250, 140, 250, 270);
}
else
{
if(vidas == 4)
{
//Dibuja Brazo Izquierdo
g2.
setColor(Color.
BLACK); g2.drawLine(250, 210, 200, 240);
}
else
{
if(vidas == 3)
{
//Dibuja Brazo Derecha
g2.
setColor(Color.
BLACK); g2.drawLine(250, 210, 300, 240);
}
else
{
if(vidas == 2)
{
//Dibuja Pie Izquierdo
g2.
setColor(Color.
BLACK); g2.drawLine(250, 270, 200, 300);
}
else
{
if(vidas == 1)
{
//Dibuja Pie Derecho
g2.
setColor(Color.
BLACK); g2.drawLine(250, 270, 300, 300);
}
}
}
}
}
}
}
encontrado=false;
}
public boolean getQuitarVidas()
{
return encontrado;
}
//Para dibujar las lineas necesarias de acuerdo a la palabra
{
int xInicio=50;
int xFin=80;
for(int i=0; i < palabra.length(); i++)
{
g2.drawLine(xInicio, 480,xFin , 480);
xInicio+=40;
xFin+=40;
}
}
}
Entonces creo que las comprobaciones de cadenas en la base de datos de String está fallando (quizás).
Por cierto, los if's esos que tienes anidados se ven muy mal, considera arreglarlo.
Saludos.