Autor Beitrag
Manubown
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mi 01.08.18 11:04 
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

ausblenden volle Höhe 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)
        {

            //Deklaration
            
            ConsoleKeyInfo a;
            bool Game;
            int zahl, rzahl, i;
            Random rnd = new Random();
            char[] random = new char[7];


            //Menü
            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();

            
            //Auswahl von Optionen
            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
            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(17);
                    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
            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
            regeln:
            Console.Clear();
            goto menue;

            //fehler
            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
            exit:
            Console.WriteLine("Aufwiedersehen");
            Console.WriteLine("Drücken sie eine beliebige Taste um Zu beenden");
            Console.ReadKey();

        }
    }
}


Moderiert von user profile iconTh69: Quote-Tag hinzugefügt.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4791
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 01.08.18 12: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):
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
for (i = 0; i < zahl; i++) // <- bei 0 anfangen, damit der Index paßt!
{
    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.