2014-11-18 3 views
0

Я боюсь с этим в течение нескольких часов. Я только хочу использовать get в моей собственности. Когда я вызываю функцию, она получает номер из этого свойства (10) и должна вычитать 1 из 10, что составляет 9. Но я не знаю, как сохранить это 9, и делать это минус 1 каждый раз, поэтому в следующий раз Я называю это, это становится 8. Я надеюсь, что это достаточно ясно.У меня есть только собственность, но я хочу, чтобы это значение менялось каждый раз, когда я называю это

main.cs:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 



namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      do 
      { 
       Zwakmonster zwakmonster = new Zwakmonster(); 
       Sterkmonster sterkmonster = new Sterkmonster(); 
       List<IMonster> monster = new List<IMonster>(); 
       string lijn; 
       string test = "exit"; 
       string nieuwelijn; 
       string zwak = "zwakmonster"; 
       string sterk = "sterkmonster"; 
       string groen = "groen"; 
       string geel = "geel"; 


       Sterkmonster henk = new Sterkmonster(); 
       henk.Naam = sterk; 
       henk.Kleur = groen; 
       Zwakmonster piet = new Zwakmonster(); 
       piet.Kleur = geel; 
       piet.Naam = zwak; 

       Console.WriteLine("Schrijf zwakmonster_iemand of sterkmonster_iemand"); 


       lijn = Console.ReadLine(); 

       if (lijn == test) 
       { 
        Environment.Exit(0); 
       } 

       else if (lijn.StartsWith("hit")) 
       { 
        if (lijn.StartsWith("hit ")) 
        { 


         nieuwelijn = lijn.Remove(0, 4); 


         if (nieuwelijn == sterk) 
         { 

          henk.Hit(); 
          Console.WriteLine(sterkmonster); 

         } 
         else if (nieuwelijn == zwak) 
         { 

          piet.Hit(); 

          Console.WriteLine(zwakmonster); 
         } 
         else 
         { 
          Console.WriteLine("iets ging er fout"); 
         } 


        } 
        else 
        { 
         Console.WriteLine("Ben je misschien een spatie vergeten na ''hit''?\n"); 

        } 
       } 
       else 
       { 
        Console.WriteLine("Verkeerd commando ingevoerd\n"); 

       } 

      } while (1 == 1); 
     } 
    } 
} 

IMonster.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    interface IMonster 
    { 






     string Naam 
     { 
      get; 
      set; 
     } 

     string Kleur 
     { 
      get; 
      set; 
     } 

     int Levens 
     { 
      get; 
     } 

     void Hit(); 



    } 
} 

zwakmonster.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Zwakmonster : IMonster 
    { 
     private string mijnNaam; 
     private string mijnKleur; 
     private int mijnLevens = 10; 
     private int nieuwelevens; 




     public string Naam 
     { 
      get { return mijnNaam; } 
      set { mijnNaam = value; } 
     } 

     public string Kleur 
     { 
      get { return mijnKleur; } 
      set { mijnKleur = value; } 
     } 

     public int Levens 
     { 
      get { return mijnLevens; } 
     } 


     public void Hit() 
     { 
      mijnLevens = mijnLevens - 1; 
      nieuwelevens = mijnLevens; 
      Console.WriteLine(nieuwelevens); 
     } 

     } 
} 
+0

Моих плохой, я продолжал делать новый монстр, когда я написал строчку «хит zwakmonster_ name "в cmd. Поэтому я продолжал создавать новые монстры и не спас их. – goedkoop

ответ

0

Allan Elder уже дал правильный ответ, чтобы сделать вещи менее сложным я хотел бы использовать только один вар для подсчета ваших жизней

class Zwakmonster : IMonster 
{ 
    private string mijnNaam; 
    private string mijnKleur; 
    private int lives = 10; 

    public string Naam 
    { 
     get { return mijnNaam; } 
     set { mijnNaam = value; } 
    } 

    public string Kleur 
    { 
     get { return mijnKleur; } 
     set { mijnKleur = value; } 
    } 

    public int Levens 
    { 
     get { return lives; } 
    } 

    public void Hit() 
    { 
     lives = lives - 1; 
    } 
} 
+0

Но когда я называю hit(); снова я хочу, чтобы это было 8, а вечером 7 и т. д. – goedkoop

+0

Возможно, мне стоит это сделать в main.cs как-то – goedkoop

+0

Так как значение хранится в «жизни», оно будет уменьшаться с каждым ударом. Вы пробовали этот код? Возможно, у вас есть другие способы доступа к значению? Обновление: посмотрите комментарий Аллана, он нашел вашу проблему, вы создаете нового монстра в каждом цикле. – svanelten

0

mijnLevens всегда будет иметь значение 10. Вам нужно назначить восстановленное Значение обратно к mijnLevens

+0

Я отредактировал мой вопрос. Когда вы запускаете это и набираете «hit zwakmonster», он должен перейти к 19, когда вы набираете его снова, он должен идти до 18 и т. Д. – goedkoop

2

Изменить этот

public void Hit() 
    { 
     newlife = mijnLevens - 1; 
    } 

к этому

public void Hit() 
    { 
     mijnLevens = mijnLevens - 1; 
     newlife = mijnLevens; 
    } 

Это удостоверится mijnLevens декрементируется. В настоящее время, mijnLevens всегда 10.

Изменить это:

 do 
     { 
      Zwakmonster zwakmonster = new Zwakmonster(); 

Для этого

 Zwakmonster zwakmonster = new Zwakmonster(); 
     do 
     { 

Так что вы не создать новый объект для каждой итерации.

+0

Большое спасибо! Так глупо, что я этого не понимал. – goedkoop

+0

На самом деле это работает, когда я вызываю удар снова, он просто возвращается к 9 снова и снова, вместо 8. Так что, когда вы набираете «hit zwakmonster_name» снова и снова в консольной строке , он идет до 9, затем 8, затем 7 и т. д. – goedkoop

+0

Может быть, мне стоит это сделать в main.cs как-то – goedkoop

Смежные вопросы