2016-05-22 11 views
-1

Hier ist der Fall, dass ich einen Zauber KlasseZufallswert zuweisen mit dem Klassenkombination

public abstract class Spell 
{ 

    public abstract void Castspell(); 
} 

public class Heal:Spell 
{ 
    Dictionary<string, int> heals = new Dictionary<string,int>(); 

    public Heal() 
    { 
     heals.Add ("less heal", 1); 
     heals.Add ("medium heal", 2); 
     heals.Add (" large heal", 3); 
    } 

    public override void Castspell() 
    { 
    } 


} 

die Castspell ignorieren bekommen haben(), und es gibt eine andere Klasse namens Student

public class student 
{ 
    public enum spells 
    { 
     lessheal, 
     mediumheal, 
     highheal 
    } 
    List<Spell> _skillist = new List<Spell>(); 
    public student() 
    { 
      //... 
    } 
      public void learnskills() 
    { 
     _skillist.Clear(); 
     Spell newspell = new Spell(); 
     _skillist.Add (newspell); 

    } 

, was ich bin versuchen hier zu tun ist ich möchte lernen Fähigkeit Methode, jedes Mal, wenn ich Call Es wird zufällig fügen Sie eine Heilung Zauber in den _skillist. (es könnte weniger, mittel oder hoch sein). Wie könnte ich es erreichen? bitte geben Sie mir einige Ratschläge über it.thanks

+0

Ihr Code in Diese Frage wird nicht kompiliert. Sie sollten immer sicherstellen, dass Ihr Code ein [MCVE] ist. – Enigmativity

Antwort

1

Diese Frage ist extrem breit ... jedoch würde ich vorschlagen, eine Kombination der folgenden Verfahren:

  • Schreibe eine Methode auf „Heilen“ eine Instanz erstellen von einem Wert Enum Zauber
  • die System.Random Klasse mit einer Zufallszahl
  • mit this answer erzeugt einen Zufallsgenerator aus den Zaubern bekommen ENUM mit der Zufallszahl

Um dies zu tun, müssen Sie diesen Code jedoch etwas ändern. Da Sie nicht nach einem bestimmten Problem mit Ihrem Codebeispiel fragen, kann ich nicht viel mehr tun, ohne alles für Sie neu zu schreiben, also werde ich diesen Teil Ihnen überlassen!

Edits:

  • Verwenden Sie entweder ein String Wörterbuch oder eine Enumeration zu Ihrem Zauber beziehen, sondern eine auswählen und konsistent sein. Sie verwenden beide - ein String-Dictionary (z. B. "medium heal") in einer Klasse, aber enums (spells.mediumheal) in einer anderen Klasse. Ich würde das Enum vorschlagen, wenn Sie nur eine Liste von Zaubern mit zugehörigen Nummern benötigen.
  • Unabhängig davon, was Sie verwenden, muss es von beiden Klassen zugänglich sein. Wenn Sie eine Enumeration verwenden möchten, declare it in the namespace, nicht in einer Klasse; Wenn Sie ein Wörterbuch wirklich mögen, setzen Sie es vielleicht in eine separate öffentliche statische Klasse wie in this Beispiel.
  • Wenn eine ENUM verwenden möchten, this answer könnte Ihnen einige Ideen
  • Im Allgemeinen ist der Code wirklich von einem Clean-up profitieren könnten, aber das ist außerhalb des Umfangs Ihrer Frage
+0

Also ist das Wörterbuch eine gute Möglichkeit, diese Heilklasse zu machen? –

+0

Es ist sicherlich nicht falsch, aber das "heilt" Wörterbuch ist nicht öffentlich, also wird es nicht von einer learnskills() Methode in der Schülerklasse verwendet werden, es sei denn, Sie ändern den Zugriffsmodifikator. –

+0

Ich verstehe die ersten beiden Punkte, die Sie gesagt haben, aber wie kann ich das aus der Heilungsklasse anzeigen? Ich meine, ich mache eine zufällige Klasse, um eine Zahl zu erzeugen, zum Beispiel sind es zwei, die das "medium heal" zurückgeben, aber wie kann ich es mit dem heals Wörterbuch in Verbindung bringen? Ich bin wirklich verwirrt über diesen Teil –

Verwandte Themen