Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Acceder a un método desde otra clase

Estas en el tema de Acceder a un método desde otra clase en el foro de C/C++ en Foros del Web. Hola a todos, llevaba un tiempo buscando un foro en donde registrarme, para poder resolver las mis dudas, y en la medida de lo posible, ...
  #1 (permalink)  
Antiguo 15/01/2010, 03:22
 
Fecha de Ingreso: enero-2010
Ubicación: Alicante
Mensajes: 4
Antigüedad: 14 años, 3 meses
Puntos: 0
Acceder a un método desde otra clase

Hola a todos, llevaba un tiempo buscando un foro en donde registrarme, para poder resolver las mis dudas, y en la medida de lo posible, resolver las de otra gente que esté como yo. Mi duda es la siguiente, para clase y como proyecto de final de curso, estamos creando individualmente un remake de un juego elegido por nosotros del Amstrad CPC, yo elegí el Trivial, cosa de la que me arrepiento cada día, ya que lo que hemos hecho siempre son juego tipo Death Pit, con un personaje y varios enemigos que se mueven, pero nada como lo que yo he elegido, y ya me he encontrado con el primer problema.

Lo que quiero hacer es que si se pulsa la tecla espacio, una función cree un número aleatorio al azar entre 1 y 6 con el fin de simular un dado, y que me aparezca en la pantalla una imagen con la cara del dado correspondiente al número aleatorio que ha salido. Bien, eso ya lo tengo hecho dentro de una clase, pero ahora no sé cómo acceder a esos dos métodos desde otra clase que es la de la partida, con el fin de que se usen los métodos de mi clase dado.

Esta es mi clase dado:
Código csharp:
Ver original
  1. public void Lanzar()
  2.     {
  3.         Random r = new Random(DateTime.Now.Millisecond);
  4.         aleatorio = (short) r.Next(1, 6);
  5.     }
  6.  
  7.     public void Dibujar()
  8.     {
  9.         //Dibujamos el dado en la pantalla oculta
  10.         switch (aleatorio)
  11.         {
  12.             case 1: //Sale 1
  13.                 dado1.DibujarOculta(0, 0);
  14.                 break;
  15.  
  16.             case 2: //Sale 2
  17.                 dado2.DibujarOculta(0, 0);
  18.                 break;
  19.  
  20.             case 3: //Sale 3
  21.                 dado3.DibujarOculta(0, 0);
  22.                 break;
  23.  
  24.             case 4: //Sale 4
  25.                 dado4.DibujarOculta(0, 0);
  26.                 break;
  27.  
  28.             case 5: //Sale 5
  29.                 dado5.DibujarOculta(0, 0);
  30.                 break;
  31.  
  32.             case 6: //Sale 6
  33.                 dado6.DibujarOculta(0, 0);
  34.                 break;
  35.         }
  36.     }

Y esto es lo que quiero hacer en la clase partida para que acceda a los dos métodos de arriba
Código csharp:
Ver original
  1. void comprobarTeclas()
  2.     {
  3.           if (Hardware.TeclaPulsada(Hardware.TECLA_ESP))
  4.           {
  5.               Dado.Lanzar();
  6.               lanzar = true;
  7.           }
  8.  
  9. void dibujarElementos()
  10.     {
  11.         // Borro pantalla      
  12.         Hardware.BorrarPantallaOculta(0,0,0);
  13.          
  14.         //Dibujo el dado
  15.         if (lanzar == true)
  16.             Dado.Dibujar();
  17.        
  18.         // Finalmente, muestro en pantalla
  19.         Hardware.VisualizarOculta();        
  20.     }

Esto ha sido lo único que se me ha ocurrido, y el compilador me dice que se requiere una referencia de objeto para el campo, método o propiedad no estáticos para los dos métodos.

En fin si alguien puede ayudarme, se lo agradeceré enormemente.

Última edición por desarah; 15/01/2010 a las 05:53 Razón: Claridad del código
  #2 (permalink)  
Antiguo 15/01/2010, 05:55
 
Fecha de Ingreso: diciembre-2008
Ubicación: Vigo, Spain
Mensajes: 141
Antigüedad: 15 años, 4 meses
Puntos: 12
Respuesta: Acceder a un método desde otra clase

y como declarastes el objeto Dado de la clase partida?

yo es que ando con java, y es realmente sencillo, un ejemplo a ver si te da una idea, creo que va de lo mismo en c++:

Código Java:
Ver original
  1. public class dado{
  2.    //constructor
  3.    public dado(){
  4.    }
  5.    
  6.    //metodo
  7.    public int lanzar(){
  8.        return 8;
  9.    }
  10. }
  11.  
  12. //desde donde llamo el metodo
  13. public class partida{
  14.     public static void main(String args[]){
  15.          int asd;
  16.          //aqui creo el objeto, algo asi como seria la "referencia"
  17.          dado prueba = new dado();
  18.          //y aqui uso el metodo
  19.          asd=prueba.lanzar();
  20.     }
  21. }

Última edición por Annoying; 15/01/2010 a las 06:20
  #3 (permalink)  
Antiguo 15/01/2010, 07:43
Avatar de romulo404  
Fecha de Ingreso: enero-2010
Mensajes: 4
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Acceder a un método desde otra clase

tiene pinta de que es java XD y de q el problema es que esta llamando los metodos como si fueran estaticos ya q uso mayusculas en el nombre del objeto y si la clase ya tiene ese nombre :P no puede usarlo como nombre del objeto
  #4 (permalink)  
Antiguo 16/01/2010, 06:08
 
Fecha de Ingreso: enero-2010
Ubicación: Alicante
Mensajes: 4
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Acceder a un método desde otra clase

Es verdad, ya lo he llamado en minúsculas y el compilador no me da ningún error, pero cuando lo ejecuto, se me abre la ventana del juego y se cierra enseguida sin mostrar nada, y lo que es peor, sin decirme por qué. El código es de csharp.

dado lo he declarado así:
Código csharp:
Ver original
  1. public class Partida
  2. {
  3.  
  4.     // Componentes del juego
  5.     private Personaje miPersonaje;
  6.     private Dado dado;
  7.    
  8.     // Otros datos del juego
  9.     int puntos;             // Puntuacion obtenida por el usuario
  10.     bool partidaTerminada;  // Si ha terminado una partida
  11.     bool lanzar;            // Dice si hay que lanzar el dado o no
  12.    
  13.  
  14.     // Inicialización al comenzar la sesión de juego
  15.     public Partida()
  16.     {
  17.         miPersonaje = new Personaje();        
  18.         puntos = 0;
  19.         partidaTerminada = false;
  20.         dado = new Dado();
  21.     }

y luego lo he llamado así:
Código csharp:
Ver original
  1. void comprobarTeclas()
  2.     {
  3.           // Muevo si se pulsa alguna flecha del teclado
  4.           if (Hardware.TeclaPulsada(Hardware.TECLA_DER) )
  5.               miPersonaje.MoverDerecha();
  6.  
  7.           if (Hardware.TeclaPulsada(Hardware.TECLA_L))
  8.           {
  9.               dado.Lanzar();
  10.               lanzar = true;
  11.           }

Gracias a los dos, por lo menos he aprendido que se llama usando minúsculas y no tenía el error de antes. Ahora no funciona, pero no da errores jajaja bendita programación

Etiquetas: acceder, clase
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:01.