Hola a todos, tengo un problema con el C#, tengo poco tiempo aprendiendolo ya sabia algo de delphi pero la verdad es q estoy teniendo problemas al momento de "desmenuzar" el programa y separarlo en clases estructiras etc, he leido los libros y entiendo lo que dicen, pero a la hora de poner en practica las ideas....bueno...hay cosas que no funcionan como esperaba, ahorita estoy tratando de hacer una especie de tamagochy (aquella figurita virtual que habia q alimentar y todo eso) que saque de un libro, pero tengo problemas a la hora de querer colocar un simple y vulgar mensaje que muestre la edad :S.... :embarassed: :embarassed: :embarassed: el mayor problema es que no se donde declarar la funcion mostrar edad, parece que donde la pongo el mald$·&to visual studio no le gusta y me aparece el mensaje de "El nombre 'micritter' no existe en el contexto actual" ..aqui les paso el codigo pero tambien me ayudaria que me dieran una pequeña explicacion de por q es esto?..y en donde debo declararlo y por que?...si instancio el objeto en main con Critter micritter = new Critter(); podr'ia utilizarlo en cualquier clase no?...agregarle atributos me refiero....
Nota: el "programa" corre bien sin la funcion de mostraredad solo que ahora quiero ampliarlo
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CritterMenu
{
class Menu
{
static int showMenu ()
{
int input = 1;
Console.WriteLine();
//primero intente colocar la funcion mostrar edad aqui, me salio la primera advertencia que el objeto no existia en contexto
Console.WriteLine();
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("0)Exit");
Console.WriteLine("1)Escuchar al critter");
Console.WriteLine("2)alimentar al criter");
Console.WriteLine("3)jugar con el critter");
Console.WriteLine("4)renombrar al critter");
try
{
input = Convert.ToInt32(Console.ReadLine());
}
catch (FormatException)
{
Console.WriteLine("Entrada Incorrecta");
input = 1;
}
return input;
}
static void Main (string[] args)
{
bool keepGoing = true;
int choice;
Critter micritter = new Critter();
micritter.Name = "George";
while (keepGoing){
micritter.Age();
micritter.mostraredad(); //aqui parece que funcionaria, aunque no queda muy bien, solo falta declarar la funcion
//saber donde hacerlo :S
choice = showMenu();
switch (choice) {
case 0:
keepGoing = false;
break;
case 1:
micritter.talk();
Console.WriteLine("esta {0} feliz y tiene una edad de {1}",micritter.Happy, micritter.Age2 );
break;
case 2:
micritter.Eat();
Console.WriteLine("alimenta al critter");
break;
case 3:
micritter.Play();
Console.WriteLine("juegas con al critter");
break;
case 4:
Console.WriteLine("Nombre actual del critter: {0}",micritter.Name);
Console.WriteLine ("Cambiar nombre a: ");
micritter.Name = Console.ReadLine();
break;
default:
Console.WriteLine("no es una entrada valida");
break;
}//fin swith
}//fin while
}//fin main
}//fin class
class Critter {
private string name;
private int pFull = 10;
private int pHappy = 10;
private int pAge = 0;
public int Happy {
get{
return pHappy;
}
}
public int Age2{
get{
return pAge;
}
}
public string Talk(){
string message;
message = "el critter dice: \n ";
if (pHappy > 5){
Console.WriteLine("felicidad = {0}", pHappy);
message += "hola mi nombre es " +Name +"\n";
message += " me siento feliz hoy! \n";}
else if (pHappy>2){
Console.WriteLine("felicidad = {0}", pHappy);
message += " "+Name+" no se siente tan feliz ...";}
else if (pHappy>0){
Console.WriteLine("felicidad = {0}", pHappy);
message += " "+Name+" esta MOLESTO..";}
else {
Console.WriteLine("felicidad = {0}", pHappy);
message += "apunto de morir";}
return message;
}
public void Play(){
pHappy +=3;
}
public void Eat(){
pFull += 4;
}
public void Age(){
pAge++;
pFull--;
pHappy--;
if (pFull < 3){
pHappy--;}
}
public string Name{
get{
return name;
}
set {
if (value.Length>8){
Console.WriteLine ("el nombre no puede ser cambiado a mas de 8 letras");
name = value;
name = name.Substring(0,8);
Console.WriteLine ("Cambiado el nombre a {0}",name);
} else {
name = value;
}
}
}//fin de getset
public void mostraredad () {
Console.WriteLine("Mi edad es {0}", micritter.Age2);
}
public void talk ()
{
Console.WriteLine("El criter dice: my nombre es {0}", name);
}
}
/* y la funcion mostraredad seria simplemente
public void mostraredad(){
Console.WriteLine("Mi edad es {0}", micritter.Age2);
el detalle es que no se donde ponerla
*/
}
Nota: el "programa" corre bien sin la funcion de mostraredad solo que ahora quiero ampliarlo
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CritterMenu
{
class Menu
{
static int showMenu ()
{
int input = 1;
Console.WriteLine();
//primero intente colocar la funcion mostrar edad aqui, me salio la primera advertencia que el objeto no existia en contexto
Console.WriteLine();
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("0)Exit");
Console.WriteLine("1)Escuchar al critter");
Console.WriteLine("2)alimentar al criter");
Console.WriteLine("3)jugar con el critter");
Console.WriteLine("4)renombrar al critter");
try
{
input = Convert.ToInt32(Console.ReadLine());
}
catch (FormatException)
{
Console.WriteLine("Entrada Incorrecta");
input = 1;
}
return input;
}
static void Main (string[] args)
{
bool keepGoing = true;
int choice;
Critter micritter = new Critter();
micritter.Name = "George";
while (keepGoing){
micritter.Age();
micritter.mostraredad(); //aqui parece que funcionaria, aunque no queda muy bien, solo falta declarar la funcion
//saber donde hacerlo :S
choice = showMenu();
switch (choice) {
case 0:
keepGoing = false;
break;
case 1:
micritter.talk();
Console.WriteLine("esta {0} feliz y tiene una edad de {1}",micritter.Happy, micritter.Age2 );
break;
case 2:
micritter.Eat();
Console.WriteLine("alimenta al critter");
break;
case 3:
micritter.Play();
Console.WriteLine("juegas con al critter");
break;
case 4:
Console.WriteLine("Nombre actual del critter: {0}",micritter.Name);
Console.WriteLine ("Cambiar nombre a: ");
micritter.Name = Console.ReadLine();
break;
default:
Console.WriteLine("no es una entrada valida");
break;
}//fin swith
}//fin while
}//fin main
}//fin class
class Critter {
private string name;
private int pFull = 10;
private int pHappy = 10;
private int pAge = 0;
public int Happy {
get{
return pHappy;
}
}
public int Age2{
get{
return pAge;
}
}
public string Talk(){
string message;
message = "el critter dice: \n ";
if (pHappy > 5){
Console.WriteLine("felicidad = {0}", pHappy);
message += "hola mi nombre es " +Name +"\n";
message += " me siento feliz hoy! \n";}
else if (pHappy>2){
Console.WriteLine("felicidad = {0}", pHappy);
message += " "+Name+" no se siente tan feliz ...";}
else if (pHappy>0){
Console.WriteLine("felicidad = {0}", pHappy);
message += " "+Name+" esta MOLESTO..";}
else {
Console.WriteLine("felicidad = {0}", pHappy);
message += "apunto de morir";}
return message;
}
public void Play(){
pHappy +=3;
}
public void Eat(){
pFull += 4;
}
public void Age(){
pAge++;
pFull--;
pHappy--;
if (pFull < 3){
pHappy--;}
}
public string Name{
get{
return name;
}
set {
if (value.Length>8){
Console.WriteLine ("el nombre no puede ser cambiado a mas de 8 letras");
name = value;
name = name.Substring(0,8);
Console.WriteLine ("Cambiado el nombre a {0}",name);
} else {
name = value;
}
}
}//fin de getset
public void mostraredad () {
Console.WriteLine("Mi edad es {0}", micritter.Age2);
}
public void talk ()
{
Console.WriteLine("El criter dice: my nombre es {0}", name);
}
}
/* y la funcion mostraredad seria simplemente
public void mostraredad(){
Console.WriteLine("Mi edad es {0}", micritter.Age2);
el detalle es que no se donde ponerla
*/
}