移动物体

德姆勒77

成员
已加入
2020年4月15日
留言内容
5
编程经验
3-5
哈o
目前,我正在开发“小型”控制台应用程序。它有点像带有移动物体的模拟,我已经有了主代码,我只需要其他方法的帮助即可以特定方式移动它们,或为存在的物体带来危险。谢谢你的帮助
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,524
地点
悉尼,澳大利亚
编程经验
10+
当然我们可以提供帮助,但是您的描述太含糊了。请提供完全清楚的说明,以说明您要实现的目标,您要实现的目标以及您遇到的困难。
 

德姆勒77

成员
已加入
2020年4月15日
留言内容
5
编程经验
3-5
基本上,它只是一个关于蚂蚁模拟的控制台应用程序。我认为有4-5个基本类。一种通常被称为带有坐标的对象,而在Ant类中它变得更加具体。我已经掌握了所有重要内容和主要代码。但是我试图引入一些附加方法来获得对象的灾难。它可以将它们移回家等。但是当我尝试操纵实例化对象时,我很困惑。具有参数的方法可以为它们提供用于操作,销毁或更改它们的现有对象?对于我来说,可以放置用于创建危险对象的方法,但不能正确地实现面向对象的方法,不仅限于那些随机撞击其他对象而没有真正破坏和破坏对象的对象"covering"。最后,我想使用一种随机方法或类似方法,选择3种或一种以上的突变方法。例如,当我放入switch语句时,它们被感染了,它跳转到nexxt方法,但没有结束。它混杂不完。但它应该在启动一种灾难方法后结束
 
Last edited:

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,928
地点
英国
编程经验
10+
您好,欢迎来到论坛。

请仅发布您遇到问题的相关代码,我们可以更好地了解您正在做的事情和尝试做的事情。

请记住,将您的代码发布在代码标签中,如下所示:

codetags-gif.884
 

德姆勒77

成员
已加入
2020年4月15日
留言内容
5
编程经验
3-5
C#:
using System;

namespace AmeisenSimulation
{
class MainProgram
    {
        public static void BringAntIntoDanger(objects[] Givenants)
        {
            Random rnd;
            Antdanger[] DangerObjects= new Dangerobject[15]; //dangerous objects

            for (int i = 0; i <DangerObjekte.Length; i++)
            {
                Dangerobject animal= new Antdanger(); //from antdanger class
             
                for (int k = 0; k < DangerObjects.Length; i++)
                {
                    DangerObjects[k].Aktualisieren();
                 
                    if ((objects)DangerObjects[k] == Givenants[rnd.Next(0, Givenants.Length)]) //if one object of the dangour randomly hits a ant to kill it for example it wont work but it possible ?
                    {
                        tmpAnt= GivenAnts[rnd.Next(0, Givenants.Length)];
                        Console.WriteLine("Hit,AntsFalls");
                        tmpAnt.Delete();
                    }
                }
            }
        }
     
        static void Main(string[] args)
        {
            Console.WriteLine("LOL");
            System.Console.SetCursorPosition(10, 0);
            System.Console.Write("AntSim_008_Vererbung_und_Polymorphie");

            int days= 20;
            int ants= 10;
            int queens= 1;
            object[] Dangerarray= new object[5];

            System.Console.CursorVisible = false;

            object[] myAnt= new object[ants+ queens];
         
            for (int a = 0; a < ants; a++)
                myants[a] = new Ant();

            myants[ants] = new Queen();

            for (int t = 0; t < days; t++)
            {
                for (int a = 0; a < (ants + queens); a++)
                {
                    myAnts[a].update();
                    bringAntintoDanger(meineAmeise);
                }

                //Here i wanted to start maybe a method to randomly run after normal ant simulation a catastrophe in it
                System.Threading.Thread.Sleep(200);
            }

            System.Console.SetCursorPosition(10, 24);

            System.Console.ReadKey();
        }
    }
    class GeneralObject
    {
        public int posX;
        public int posY;
        public char symbol;

        public GeneralObject()
        {
            posX = 40;
            posY = 12;
            symbol = 'A';
        }

        public void delete()
        {
            System.Console.SetCursorPosition(posX, posY);
            System.Console.Write(" ");
        }

        public void Draw()
        {
            System.Console.SetCursorPosition(posX, posY);
            System.Console.Write(symbol);
        }

        public virtual void Update()
        {
            Loeschen();
            Malen();
        }
    }

 

    class classAnt: Generalobject
    {
        protected int HPLive?;
        protected System.Random rnd;

        public ClassAnt()
            : base()
        {
            System.Threading.Thread.Sleep(20);
            rnd = new System.Random();
        }

        public override void update()
        {
            Loeschen();
            Bewegen();
            Malen();
        }


        public void Move()
        {
            Loeschen();

            posX = posX + rnd.Next(-1, 2);
            posY = posY + rnd.Next(-1, 2);

            if (posX < 0)
                posX = 0;
            if (posX > 79)
                posX = 79;

            if (posY < 0)
                posY = 0;
            if (posY > 24)
                posY = 24;

            Malen();
        }
    }

 

   
}
 
Last edited:

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,524
地点
悉尼,澳大利亚
编程经验
10+
我认为我从未见过有人在发布代码方面做得比这差。三组代码标签,其中没有代码,并且有一大堆未格式化的代码,然后有人提供了一个动画,确切地说明了如何做。您似乎也完全忽略了有关发布相关代码的知识,而只关注相关代码。您需要更好地隔离特定问题,并仅提供与此相关的信息。

除了别的什么都没有,你应该命名课程 目的,因为这是每种.NET类型的最终基本类型,无论它是Framework的一部分还是您自己的类型。您还应该使用"Class"您班级名称中的任何位置。您确实也应该遵守特定的命名约定,并且没有理由不遵循Microsoft的建议,这意味着类型,方法和属性的名称都以大写字母开头。有时不要使用Pascal套管,而别的时候使用骆驼套管。骆驼套管用于局部变量,参数和私有字段。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,928
地点
英国
编程经验
10+
出于命名目的,我同意,这不是课程的正确名称。无论是 :
C#:
    public class Object
    {

    }
或者 :
C#:
    public class object
    {

    }
区别在于。 IDE和编译器都会对第一个大惊小怪。第二个是使用小写字母违反命名规则 o目的,不仅如此,而且在语法上也是不正确的,因为如上所述, 目的 是个 基本类型 C#中的所有对象。您几乎永远不需要编写这样的代码(仅示例):
C#:
        internal static void Main(string[] args)
        {
            new Thread(() => Request_Response())
            {
                Name = "Executor"
            }.Start();
        }
        internal static void Request_Response()
        {
            Console.WriteLine(@[email protected]);
        }
    public static class @object
    {
        public static string @string = "foo";
    }
As you can see, you can use these names but I don't agree with why you should or would. Console.WriteLine(@[email protected]); => You can see how the code calls the class object and string by its verbatim string literal name. And this works fine, but It's not how you should be writing code, as this actually is considered a violation of one of the conventions for naming purposes. If you need to name an object by name as a type, simply call it 目的 obj instead. There are C#中的命名约定规则 正如您所指出的,您应该遵循 @jmcilhinney。关于其余代码,您需要明确说明上面代码块中的问题所在。这就是为什么我只要求相关代码,而不是整个游戏的原因。

作为旁白;您可能也希望对本文有所了解 C#编码约定-C#编程指南
 
Last edited:

德姆勒77

成员
已加入
2020年4月15日
留言内容
5
编程经验
3-5
我真的很抱歉使你们困惑!我将其更新为最重要的方法,而名为object的Method以前是我的母语,对不起,我想如果您知道这是蚂蚁的强制性对象类,那会更容易...但是我感到困惑更多...我搜索了很多东西,作为一名实习生,我需要良好的结构化想法来学习如何正确,有效地对对象进行编程。如果您有一些类似的简单代码可以移动对象等来学习,我将感到非常高兴。
 

德姆勒77

成员
已加入
2020年4月15日
留言内容
5
编程经验
3-5
我花了很多时间,而且从Main Class开始。
我写了这段代码来创建一个感染所有其他对象的对象。但是这样 "OK"如果真正的蚂蚁对象及其属性没有受到影响,并且仅通过其他方法,它只是隐蔽地使其看起来像?:D 我很想知道是否有一种方法可以让某些对象下雨,并在不使用前景的情况下为字符提供自己的颜色,也许它们会受到打击...。而我的主要问题是,使用切换方法在事后呼叫一个灾难蚂蚁移动了一会儿。我有一个功能:开关(Movementmodels){

case:0 Randomlyrunning(); break;
案例:1 ConfrontAntwithvirus(); break();
可能还有更多,但是调用其中一种方法后,它将不停地工作。。。它没有收到错误消息,但控制台窗口会上下疯狂地移动,因为如果其中一种方法正在运行,请理解我...我会为每一个帮助而高兴
我想添加我的Switch case函数以在灾难情况之间进行切换。
C#:
protected void ConfrontAntwithvirus()
{
    int VirusposX==56;
    int Virusposy==20;

    Generalobject infectedObjectInfrontofFoodstock = new Generalobject();
    infectedObjectInfrontofFoodstock .symbol="@";
    Console.SetCusorPosition(VirusposX,VirusposY);

    Console.WriteLine(infectedObjectInfrontofFoodstock .symbol);

    if(posX==56)
    {
        Console.ForegroundColor=ConsolCOlor.Red;
        Runhome();
    }

    if (posX > ViruspositionX)
        posX -= 1;
    if (posX < ViruspositionX)
        posX +=1;
    if (posY > ViruspositionY)
        posY -= 1;
    if (posY < ViruspositionY)
        posY +=1;

}
 
Last edited:
最佳 底部