Manubown - Mi 01.08.18 12:04
Titel: System.NullReferenceException
Zitat: |
System.NullReferenceException: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt." |
ich weiß nicht was ich falsch gemacht habe. hänge seit 3 stunden an diesem fehler...
hier der quellcode
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169:
| using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks;
namespace Rio { class Program { class Spieler_typ { public int steine; }
static void Main(string[] args) {
ConsoleKeyInfo a; bool Game; int zahl, rzahl, i; Random rnd = new Random(); char[] random = new char[7];
menue: Console.WriteLine("#####################"); Console.WriteLine("#Willkommen bei Rio!#"); Console.WriteLine("#####################"); Console.WriteLine(); Console.WriteLine("Drücken sie:"); Console.WriteLine("####################"); Console.WriteLine("#[1]Spiel beginnen #"); Console.WriteLine("#[2]Credits #"); Console.WriteLine("#[3]Regeln #"); Console.WriteLine("#[4]Exit #"); Console.WriteLine("####################"); a = Console.ReadKey(); Console.Clear();
switch (((char)a.Key).ToString()) { case "1": Game = true; goto Spiel; case "2": goto Credits; case "3": goto regeln; case "4": goto exit; default: goto fehler;
} Spiel: Console.WriteLine("Willkommen im spiel wie viele Spieler sind sie?"); zahl = int.Parse(Console.ReadLine()); Spieler_typ[] Player = new Spieler_typ[zahl + 1];
for (i = 1; i <= zahl; i++) { Player[i].steine = 0; }
do { for (i = 1; i <= zahl; i++) {
Console.WriteLine(" _______ "); Console.WriteLine("| |"); Console.WriteLine("| 6 |"); Console.WriteLine("| |"); Console.WriteLine("---------"); Console.WriteLine("|5 " + random[5] + " 5|"); Console.WriteLine("|4 " + random[4] + " 4|"); Console.WriteLine("|3 " + random[3] + " 3|"); Console.WriteLine("|2 " + random[2] + " 2|"); Console.WriteLine("|1 " + random[1] + " 1|"); Console.WriteLine("---------");
Console.WriteLine("Spieler " + i);
Console.WriteLine("Drucken sie eine taste um zu würfeln"); Console.ReadKey(); rzahl = rnd.Next(1, 7); Console.WriteLine("Sie haben eine " + rzahl + ". Gewürfelt."); Console.ReadKey(); if(random[rzahl] == 'X') { random[rzahl] = ' '; Player[i].steine = Player[i].steine - 1; } else { random[rzahl] = 'X'; Player[i].steine = Player[i].steine + 1; } Thread.Sleep(500); Console.Clear(); } for (i = 1; i <= zahl; i++) { if(Player[i].steine == 8 ) { Console.WriteLine("Spieler "+i+". hat Gewonnen."); Game = false; } }
} while (Game == true); goto menue;
Credits: Console.WriteLine("Alpa 0.1"); Console.WriteLine("By: Manuel"); Console.WriteLine("Programming date: 01.08.2018 - infinity"); Console.WriteLine("[Drücken sie eine beliebige taste um zum Hauptmenü zu kommen]"); Console.ReadKey(); Console.Clear(); goto menue;
regeln: Console.Clear(); goto menue;
fehler: Console.WriteLine("Falsche eingabe[5]"); Thread.Sleep(500); Console.Clear(); Console.WriteLine("Falsche eingabe[4]"); Thread.Sleep(500); Console.Clear(); Console.WriteLine("Falsche eingabe[3]"); Thread.Sleep(500); Console.Clear(); Console.WriteLine("Falsche eingabe[2]"); Thread.Sleep(500); Console.Clear(); Console.WriteLine("Falsche eingabe[1]"); Thread.Sleep(1000); Console.Clear(); goto menue;
exit: Console.WriteLine("Aufwiedersehen"); Console.WriteLine("Drücken sie eine beliebige Taste um Zu beenden"); Console.ReadKey();
} } } |
Moderiert von Th69: Quote-Tag hinzugefügt.
Th69 - Mi 01.08.18 13:16
Hallo und :welcome:
in welcher Zeile kommt denn die Exception?
Im Debugger (Projekt mittels "Debug" gebaut) kannst du dir doch den Inhalt der in der Zeile betreffenden Variablen anschauen.
Edit: Ich tippe mal auf Zeile 73.
Du hast zwar das Array mit
new initialisiert, aber die einzelnen
Spieler_typ-Einträge sind noch uninitialisiert (
null):
C#-Quelltext
1: 2: 3: 4: 5:
| for (i = 0; i < zahl; i++) { Player[i] = new Spieler_typ(); Player[i].steine = 0; } |
(du mußt also auch deine anderen Schleifen bzgl. des Index anpassen)
PS: Du solltest möglichst auf
goto verzichten. Benutze stattdessen Schleifen sowie Methoden.
Für ein erstes Programm ist dann noch in Ordnung, aber gewöhne es dir nicht an.