繁体   English   中英

C# 模拟收尾

[英]C# Simulation Closing

我刚刚完成了我的 2 人小游戏,但是一旦我完成输入 2 种颜色,它就会在按下下一个键时关闭。 我没有发现错误,也许有人可以帮助我? 或者也只是告诉我如何改进我的代码。 我最近才开始使用 C# 进行编程,感谢您的帮助

我的程序代码是这样的:

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

namespace Fahrrad
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Geben sie die Farbe 'blau' oder 'gruen' ein: ");
            Velo Velo1 = new Velo(Console.ReadLine());
            Console.WriteLine("Geben sie die andere Farbe ein: ");
            Velo Velo2 = new Velo(Console.ReadLine());

            ConsoleKeyInfo input;

            input = Console.ReadKey();

            switch(input.Key)
            {
                case ConsoleKey.UpArrow:
                    Velo2.Gangwechsel(1);
                    break;
                case ConsoleKey.DownArrow:
                    Velo2.Gangwechsel(0);
                    break;
                case ConsoleKey.LeftArrow:
                    Velo2.Bremse(true);
                    break;
                case ConsoleKey.RightArrow:
                    Velo2.Fortbewegung(true);
                    break;

                case ConsoleKey.W:
                    Velo1.Gangwechsel(1);
                    break;
                case ConsoleKey.S:
                    Velo1.Gangwechsel(0);
                    break;
                case ConsoleKey.A:
                    Velo1.Bremse(true);
                    break;
                case ConsoleKey.D:
                    Velo1.Fortbewegung(true);
                    break;
            }
        
        }
    }
}

我的 Class 代码是这样的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;

namespace Fahrrad
{
    internal class Velo
    {
        private double gaenge;
        private bool bremse;
        private string farbe;
        private double maxGang;
        private bool fahrend;

        // Konstruktor
        public Velo(string farbe)
        {
            this.gaenge = 1;
            this.farbe = farbe;
            if(farbe == "blau")
            {
                maxGang = 7;
            }
            else if (farbe == "gruen")
            {
                maxGang = 3;
            }
            else
            {
                Console.WriteLine("Falsche eingabe");
                Console.ReadKey();
                System.Environment.Exit(1);
            }
        }

        public void Gangwechsel(double schalten)
        {
            if(schalten == 0)
            {
                this.gaenge--;

                if(this.gaenge == 0 && this.fahrend == true)
                {
                    this.gaenge = 1;
                    Console.WriteLine("Sie sind bereits im tiefsten gang");
                }
            }
            else if(schalten == 1 && this.fahrend == true)
            {
                this.gaenge++;

                if(this.gaenge > this.maxGang)
                {
                    this.gaenge = this.maxGang;
                    Console.WriteLine("Sie sind bereits im höchsten Gang");
                }
            }
            else
            {
                Console.WriteLine("Sie müssen zum Gang wechseln fahren");
            }

             Console.WriteLine("Sie sind momentan im " + this.gaenge + " gang");
        }
    
        public void Bremse(bool bremse)
        {
            this.bremse = bremse;
        
            if(fahrend == true && this.bremse == true)
            {
                fahrend= false;
                Console.WriteLine("Sie haben die Fahrt beendet");
            }
        }

        public void Fortbewegung(bool fahrend)
        {
            this.fahrend = fahrend;
        
            if(this.bremse == true && this.fahrend == true)
            {
                Console.WriteLine("Sie haben die Bremse noch angezogen");
                this.fahrend = false;
            }
            else
            { 
                this.fahrend = true;
                Console.WriteLine("Das " + this.farbe + "Fahrrad ist im" + this.gaenge + " Gang losgefahren");
            }    
        }
    }
}

您需要一个可以通过按键终止的游戏循环。 例如:

static void Main(string[] args)
{
    Console.WriteLine("Geben sie die Farbe 'blau' oder 'gruen' ein: ");
    Velo Velo1 = new Velo(Console.ReadLine());
    Console.WriteLine("Geben sie die andere Farbe ein: ");
    Velo Velo2 = new Velo(Console.ReadLine());

    ConsoleKeyInfo input;
    bool gameIsRunning = true;

    while(gameIsRunning)
    {
        input = Console.ReadKey();

        switch(input.Key)
        {
            // your other rules here
            case ConsoleKey.Q:
                gameIsRunning = false;
                break;
        }
    }
    
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM