public Highscore(ConsoleGraphics gr, Spielmodus spielmodus)
    {
        this.gr         = gr;
        this.spielmodus = spielmodus;

        switch (this.spielmodus)
        {
        case Spielmodus.Normal:
            chosenHighscore = fileHighscoreNormal;
            break;

        case Spielmodus.Endlos:
            chosenHighscore = fileHighscoreEndlos;
            break;

        case Spielmodus.Hardcore:
            chosenHighscore = fileHighscoreHardcore;
            break;
        }

        if (!File.Exists(chosenHighscore))
        {
            File.Create(chosenHighscore);
        }
    }
    /// <summary>
    /// Speichert den Namen und den Score in die jeweilige Highscore Liste des Spielmodus
    /// </summary>
    /// <returns>false, wenn es nicht gespeichert werden konnte</returns>
    public static bool SaveScore(string name, int score, Spielmodus spielmodus)
    {
        try
        {
            switch (spielmodus)
            {
            case Spielmodus.Normal:
                File.AppendAllText(fileHighscoreNormal, string.Format("{0}:{1}\n", name, score));
                break;

            case Spielmodus.Endlos:
                File.AppendAllText(fileHighscoreEndlos, string.Format("{0}:{1}\n", name, score));
                break;

            case Spielmodus.Hardcore:
                File.AppendAllText(fileHighscoreHardcore, string.Format("{0}:{1}\n", name, score));
                break;
            }
            return(true);
        }
        catch
        {
            return(false);
        }
    }
    /// <summary>
    /// Initialisiert alles und startet das Spiel
    /// </summary>
    /// <param name="spielmodus">Beschreibt welcher Spielmodus gespielt werden soll</param>
    public void Start(Spielmodus spielmodus)
    {
        this.spielmodus = spielmodus;
        timer.Start();
        superman   = new Superman(gr, new Size(GAME_WIDTH, GAME_HEIGHT));
        stars      = new Stars(gr, new Size(GAME_WIDTH, GAME_HEIGHT));
        kryptonite = new Kryptonite(gr, new Size(GAME_WIDTH, GAME_HEIGHT));
        powerups   = new Powerups(gr, new Size(GAME_WIDTH, GAME_HEIGHT));

        if (this.spielmodus == Spielmodus.Normal)
        {
            // Normalmodus etwas schneller machen damit es nicht zu langweilig wird
            this.speed = 3;
        }
        else if (this.spielmodus == Spielmodus.Endlos)
        {
            this.speed = 3;
        }
        else if (this.spielmodus == Spielmodus.Hardcore)
        {
            this.speed = 6;
        }

        stars.SpawnStars(this.speed, spielmodus);
        kryptonite.SpawnKryptonite(this.speed, this.level, this.spielmodus);
        powerups.SpawnPowerup();

        Draw();
    }
Exemplo n.º 4
0
    /// <summary>
    /// Erstellt mehrere Sterne an zufälligen Position und speichert sie in einer Liste ab
    /// </summary>
    /// <param name="speed">Die Geschwindigkeit die jetzt gespielt wird</param>
    /// <param name="spielmodus">Der Spielmodus der zurzeit gespielt wird</param>
    public void SpawnStars(int speed, Spielmodus spielmodus)
    {
        this.speed = speed;

        this.listPoints.Clear();
        int amount = 0;

        if (spielmodus == Spielmodus.Normal)
        {
            // Fester Wert damit es im Normalmodus wegen der Zeit immer für jeden fair ist und nicht der eine nur 10 einsammeln muss under andere mehr
            amount = 20;
        }
        else if (spielmodus == Spielmodus.Endlos)
        {
            // Im Endlosmodus soll random zwischen 10 und 20 Sternen sein
            amount = ConsoleGraphics.rnd.Next(15, 31);
        }
        else if (spielmodus == Spielmodus.Hardcore)
        {
            amount = 50;
        }

        int xOffset = ((gr.CONSOLE_WIDTH - this.gameSize.Width) / 2) + 1;
        int yOffset = ((gr.CONSOLE_HEIGHT - this.gameSize.Height) / 2) + 1;

        for (int i = 0; i < amount; i++)
        {
            int   tries = 0;
            Point p;
            do
            {
                // Versuche einen neuen Punkt zu erstellen, wenn dieser jedoch besetzt ist soll maximal 20 mal versucht werden.
                // Wichtig für den Endlosmodus, bei dem es bei höheren Leveln sehr viel mehr Kryptonit auf einer Fläche gibt
                if (tries > 20)
                {
                    return;
                }

                int x = ConsoleGraphics.rnd.Next(2, gameSize.Width - 2) + xOffset;
                int y = ConsoleGraphics.rnd.Next(2, gameSize.Height - 2) + yOffset;
                p = new Point(x, y);
            } while (listPoints.Contains(p));

            listPoints.Add(p);
        }
    }
Exemplo n.º 5
0
    /// <summary>
    /// Erstellt mehrere Krptonite an zufälligen Position und speichert sie in einer Liste ab
    /// </summary>
    /// <param name="speed">Die Geschwindigkeit die jetzt gespielt wird</param>
    /// <param name="level">Das Level das jetzt gespielt wird</param>
    public void SpawnKryptonite(int speed, int level, Spielmodus spielmodus)
    {
        this.speed = speed;
        this.listPoints.Clear();

        int amountParam = 0;

        switch (spielmodus)
        {
        case Spielmodus.Normal: amountParam = 200; break;

        case Spielmodus.Endlos: amountParam = 200; break;

        case Spielmodus.Hardcore: amountParam = 50; break;
        }

        // Je nach Spielgröße soll mehr oder weniger Kryptonit spawnen (200 -> kleiner = mehr Kryptonit in einem Bereich, höher = weniger Kryptonit)
        int amount = ((gameSize.Width * gameSize.Height) / amountParam) + level; // jedes level 1 kryptonit mehr

        int xOffset = ((gr.CONSOLE_WIDTH - this.gameSize.Width) / 2) + 1;
        int yOffset = ((gr.CONSOLE_HEIGHT - this.gameSize.Height) / 2) + 1;

        for (int i = 0; i < amount; i++)
        {
            int   tries = 0;
            Point p;

            do
            {
                // Versuche einen neuen Punkt zu erstellen, wenn dieser jedoch besetzt ist soll maximal 20 mal versucht werden.
                // Wichtig für den Endlosmodus, bei dem es bei höheren Leveln sehr viel mehr Kryptonit auf einer Fläche gibt
                if (tries > 20)
                {
                    return;
                }

                int x = ConsoleGraphics.rnd.Next(2, gameSize.Width - 2) + xOffset;
                int y = ConsoleGraphics.rnd.Next(2, gameSize.Height - 2) + yOffset;
                p = new Point(x, y);
            } while (listPoints.Contains(p));

            listPoints.Add(p);
        }
    }