Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Pila con solso 5 numeros para mascota virtual :)

Estas en el tema de Pila con solso 5 numeros para mascota virtual :) en el foro de Java en Foros del Web. Antes que nada hola a [email protected]! :D , tengo una duda que aun no he podido solucionar. Estoy haciendo una mascota virtual como proyecto final ...
  #1 (permalink)  
Antiguo 06/06/2015, 23:59
 
Fecha de Ingreso: junio-2015
Ubicación: Mexico
Mensajes: 4
Antigüedad: 7 años, 2 meses
Puntos: 0
Información Pila con solso 5 numeros para mascota virtual :)

Antes que nada hola a [email protected]! :D , tengo una duda que aun no he podido solucionar. Estoy haciendo una mascota virtual como proyecto final de mi materia "Estructura de datos" , y quiero usar una pila para poder almacenar solos 5 numeros (espacios) solamente con numeros 1 , no se si logro hacerme entender, quiero implementar una pila para que coma el animalito solos 5 veces y se llene , asi puede jugar y bajar de uno en uno esa pila :) . Hasta ahora he hecho este programa funcional pero sin implementar la pila. Acontinuacion lo anexo:

Clase StartGame:



/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package mascotavirtual;

import java.util.Scanner;

/**
*
* @author Natalia
*/
public class StartGame {

private Mascota mascota;
private Scanner sc;

public StartGame () {
mascota = new Mascota();
sc = new Scanner (System.in);
preguntaNombre();
preguntaEdad();
}

private void preguntaNombre (){
System.out.print("Nombre de la mascota: ");
String nombre = sc.nextLine();
mascota.setNombre(nombre);
}

private void preguntaEdad (){
System.out.print("Edad de la mascota: ");
int edad = sc.nextInt();
mascota.setEdad(edad);
}

private int presentaMenu(){
System.out.println("############################## ############");
System.out.println("Selecciona una opcion que deseas hacer con " + mascota.getNombre() + "?");
System.out.println("[1] - Alimentar");
System.out.println("[2] - Bañar");
System.out.println("[3] - Jugar");
System.out.println("\n[0] - Salir");
System.out.print("Opcion: ");
int opc = sc.nextInt();
return opc;
}

public static void main(String [] args) {
StartGame game = new StartGame();
boolean continuar = true;
do{
int opc = game.presentaMenu();
switch(opc){
case 0:
continuar = false;
break;
case 1:
System.out.println("Alimentado..");
game.mascota.alimentar();
System.out.println("Nivel de hambre: " + game.mascota.getHambre());
break;
case 2:
System.out.println("Bañado..");
game.mascota.bañarse();
System.out.println("Nivel de limpieza: " + game.mascota.getLimpieza());
break;
case 3:
System.out.println("Jugando..");
game.mascota.jugar();
System.out.println("Nivel de limpieza: " + game.mascota.getLimpieza());
System.out.println("Nivel de hambre: " + game.mascota.getHambre());
System.out.println("Nivel de energia:" + game.mascota.getEnergia());
break;
default:
System.out.println("Opcion incorrecta. Intentalo de nuevo");
}

} while(continuar);
}
}


Clase MascotaVirtual:


package mascotavirtual;

import java.util.Vector;

/**
*
* @author Natalia
*/
public class Mascota {
private String nombre;
private int edad;
private int energia;
private int hambre;
private int limpieza;
private Vector<String> items;
private boolean alive = true;

public Mascota(String nombre, int edad) {
this();//Esto llama al contructor por defecto(vacio)
this.nombre = nombre;
this.edad = edad;

}

public Mascota(){
nombre = new String();
edad=0;
energia = 100;
hambre = 0;
limpieza = 100;
items = new Vector<String>();

}

public void alimentar (){
if (alive) {
if (hambre >=5){
hambre -=5;
}else{
hambre = 0;
}
}
}

public void jugar (){
if(alive){
hambre += 5;
energia -= 4;
limpieza -= 5;
if(hambre >= 100 || energia < 1) {
//muere
alive = false;
}
}
}

public void bañarse () {
if (alive) {
limpieza += 10;
}
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre){
this.nombre = nombre;
}

public int getEdad() {
return edad;
}

public void setEdad(int edad) {
this.edad = edad;
}

public int getEnergia() {
return energia;
}

public void setEnergia (int energia) {
this.energia = energia;
}

public int getHambre (){
return hambre;
}

public void setHambre(int hambre) {
this.hambre = hambre;
}

public int getLimpieza () {
return limpieza;
}

public void setLimpieza (int limpieza) {
this.limpieza = limpieza;
}

public Vector<String> getItems() {
return items;
}

public void setItems(Vector<String> items) {
this.items = items;
}

public boolean isAlive() {
return alive;
}



}



Gracias de antemano! :D y saludos!
  #2 (permalink)  
Antiguo 08/06/2015, 11:38
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 10 años, 4 meses
Puntos: 31
Respuesta: Pila con solso 5 numeros para mascota virtual :)

He jugado y me ha parecido muy divertido, me ha recordado a los tamagochis o como se escriban.

He visto que el nivel de energía es imposible subirlo. Solo baja hasta 0 y una vez en 0 ya da igual lo que se haga con la mascota, no cambian para nada sus valores. Sin embargo se pueden seguir haciendo acciones con él aunque no cambien sus valores al hacerlo.

Por otra parte no he entendido eso de la pila. No se si te refieres a una pila de valores (un array) o a una pila de batería, o qué.

Me da que debido a lo que me ha pasado, es una pila de batería, para que no le pase lo que me ha pasado a mí con la energía.

En ese caso... no lo quieres hacer exactamente igual que con la limpieza? Podrías hacer que cada acción desgastase su batería en 1... y cada vez que cargas baterías subes 5 puntos la energía con el máximo de 100. Y luego por otra parte, que si la energía es 0 no puedas hacer otra cosa que cargar batería.

O acaso lo que quieres hacer es tener de forma gráfica una batería, que vaya indicando de forma gráfica su nivel, por ejemplo 11100 sería 60% de carga? En ese caso... mira esto... ▓▓▓░░ o esto... ■■■□□(Mapa de caracteres)

Por cierto, veo muy raro lavar a la mascota y que no quede totalmente limpia, por más sucia que estuviese antes del baño. Y también veo muy raro que pueda estar más limpia que nueva. Si el 100 siendo nueva es un porcentaje... al lavarla llega al 110... y si es porcentaje, sería raro.

Última edición por Kritik; 08/06/2015 a las 12:09
  #3 (permalink)  
Antiguo 08/06/2015, 18:44
 
Fecha de Ingreso: junio-2015
Ubicación: Mexico
Mensajes: 4
Antigüedad: 7 años, 2 meses
Puntos: 0
Respuesta: Pila con solso 5 numeros para mascota virtual :)

Si! es una mascota virtual :) , lo que me referia era una pila de valores, lo que queria hacer para que no suceda lo que haz dicho de limpieza y eso, es hacer una pila para la comida, otra para la limpieza y otra para la energia, por ejemplo:

Si le das de comer a la mascota te dira en la pantalla "Alimentado: 1/5" (5 porque quiero que la pila de valores sea solo de 5) y si le das de nuevo de comida que aparecea "Alimentado: 2/5"


Y asi hasta llegar al 5 y no pueda comer mas :)
  #4 (permalink)  
Antiguo 09/06/2015, 00:33
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 8 años
Puntos: 182
Respuesta: Pila con solso 5 numeros para mascota virtual :)

Buenas,

Aqui tienes un ejemplo de implementacion de una pila/stack ej Java:
http://www.tutorialspoint.com/javaex...data_stack.htm

De cualquier forma me resulta extrano y preocupante que a esta alturas no sepas como implementarla. La estructuras fifo y lifo son las mas sencillas y las primeras que se estudian al comienzo del curso de estructura de datos.

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 09/06/2015, 00:40
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 10 años, 4 meses
Puntos: 31
Respuesta: Pila con solso 5 numeros para mascota virtual :)

Entiendo. Imagina que llegas a una tienda de mascotas, y dices "Quiero un perrito de raza X, con el color blanco y que sea cariñoso y simpático. Ya que lo quiero para jugar con él". Pues el de la tienda de mascotas sabe que tiene que darte algún perro que cumpla con todas las especificaciones que tú le has dado. Sin embargo, el como un perro sea un perro y haga todas las cosas que hace un perro... en cuanto a su funcionamiento como ser vivo... a ti te dan igual mientras que cumpla los requisitos que le has dicho. A ti te da igual cuantas veces le lata de forma normal el corazón por minuto, cuantos litros de sangre circulen por su cuerpo, lo que le mida el intestino... a ti todo eso te da igual mientras sea un perro de raza X, el color blanco, etc.

Por lo tanto, a tu constructor de perros le vas a pasar las variables que tú le dices al dependiente. Sin embargo, el perro puede tener otras variables que puede que otro usuario pase en un constructor de perros diferente, o puede que haya variables que no se asignen en ningún constructor, pero que el perro igualmente tenga.

Así llegamos a tu caso, en el que debes de tener unas variables. No pueden ser locales de ningún método de alimentar, o bañar, etc. Porque si son locales, desaparecen tras terminar el método. Han de ser variables globales. Y por lo tanto se convierten en variables susceptibles de ser inicializadas en un constructor de perros, aunque también puede tener esas características y que a nadie le importe mientras el perro sea y se comporte como esperamos de un perro, el cual es el caso de la pila.

Una vez que la variable global, que viene a ser como una característica del perro o de su comportamiento está declarada... ya puedes trabajar con ella.

Yo simplemente te diría que sea una variable numérica, ya que va a usarse de contador. A ese contador le puedes sumar uno a su valor, o reinicializarla cuando quieras o cuando se cumpla alguna condición (Cuando llegue a 5).

En tu caso, lo que intuyo que quieres hacer es que no reste hambre hasta que haya comido 5 veces. Bueno, pues pones algo como:
Código:
if(variablepilacomida>=5){
hambre-=5;
variablepilacomida=0;
print ("Qué rico, estoy lleno")
}
else
print ("Comiendo... "+variablepilacomida+"/5")
Luego puedes seguir metiendo más y más variables para controlar X o Y función. Y no tienes por qué mostrarlas al usuario. Muchas variables son de uso interno y que al usuario no le importan para nada. Igual que a ti no te importa cuantas pulsaciones por minuto tenga tu perro siempre y cuando sean las normales para su perro, la cifra en concreto te da igual... con tal de que sea un perro que no esté enfermo y se muera por un infarto. Mientras no le pase eso... la cifra de sus pulsaciones te da exactamente igual... mientras sea blanco, cariñoso y juguetón, etc.

Por lo tanto, si crees que necesitas otra variable booleana tipo comido=true cuando variablepilacomida=5 y que pase a false solo después de jugar, para que no puedas volver a empezar a comer 1/5, 2/5 etc sin antes haber hecho otra cosa, pues utiliza todas las variables que necesites para hacer de tu programa un programa más completo y que controle más cosas.

Para programar tus propios programas solo necesitas 1 cosa: Imaginación.
Una vez que tienes claro qué quieres hacer (lo has imaginado) ya solo necesitas otra cosa más: "Abstracción". El proceso de llevar un concepto de la vida real a un concepto abstracto como puede ser una variable, un objeto, un método, etc.

Para programar para otros no te hace falta imaginación, ya los otros te dicen: "Hazme un programa que haga X cosa". Lo que si sigues necesitando es la capacidad de abstracción.
Para abstraer un concepto de la vida real... lo primero que necesitas es conocer ese concepto y todas sus propiedades. Las propiedades que después se convertirán en variables globales. Y las acciones que hará, tanto internas (controles de procesos, etc) como externas (que den directamente un resultado al usuario) Y todas ellas han de estar en la mente del programador antes de escribir la primera línea de código. El programador ha de conocer a la perfección los objetos de la vida real con los que quiere trabajar antes de abstraerlos. Llevar esos conceptos al código es muy fácil después de que sepas exactamente todas las características que tiene y su función. Si quieres averiguar cuanta distancia puede recorrer tu perro a la hora has de irte a las características más elementales del perro. No con velocidad en km/h... que si, puedes tener ese dato... pero si no lo tienes tendrás que averiguarlo a partir de datos más simples, y quizás llegues a la longitud de las patas, la fuerza de impulso vertical, lo que llegan a levantarse del suelo en el trote, y el ángulo que recorre cada pata al trotar. Con todo eso puedes llegar a saber cuanta distancia recorre en una zancada. con la velocidad de zancadas averiguar los km/h.

Quiero decir, que eso lo decides tú, a partir de qué datos vas a trabajar y como vas a controlar tu programa. Pero para eso has de conocer algún dato del objeto de la vida real. Ya sea conocer su velocidad en km/h o conocer su velocidad de zancada y la distancia de cada zancada... o la fuerza de las patas en cada zancada... has de conocer algún dato que te pueda servir para sacar la información con la que pretende trabajar.

en tu caso, has de conocer algo con respecto a ese proceso de llenar la pila. Como funciona exactamente tu programa... y luego, qué información necesitas saber para que funcione de esa manera. Necesitas un contador? Necesitas controlar también X cosa? Pues oye... un contador es una variable numérica. Una variable de control de si/no? Eso es una variable booleana. Pero eso debes de conocer tú la información que necesitas para que tu programa haga X o Y cosa.

Última edición por Kritik; 09/06/2015 a las 00:50
  #6 (permalink)  
Antiguo 09/06/2015, 09:28
 
Fecha de Ingreso: junio-2015
Ubicación: Mexico
Mensajes: 4
Antigüedad: 7 años, 2 meses
Puntos: 0
Respuesta: Pila con solso 5 numeros para mascota virtual :)

Gracias! :), me ha quedado mas claro algunas duditas que tenia. Gracias!
  #7 (permalink)  
Antiguo 12/06/2015, 09:51
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 10 años, 4 meses
Puntos: 31
Respuesta: Pila con solso 5 numeros para mascota virtual :)

Yo quiero jugar al juego completo :D
  #8 (permalink)  
Antiguo 17/06/2015, 16:45
 
Fecha de Ingreso: junio-2015
Ubicación: Mexico
Mensajes: 4
Antigüedad: 7 años, 2 meses
Puntos: 0
Respuesta: Pila con solso 5 numeros para mascota virtual :)

jajjaaja, ya pude agregarle la pila, aunque ahora tengo que hacerle unas modificaciones jajaja, ya que este terminado prometo pasarte el codigo completo :)

Etiquetas: netbeans, pilas
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 21:24.