Example #1
0
        static disc parseLine(string line)
        {
            disc d = new disc();

            string[] segments = line.Split(' ');

            /*
             * mypyemv
             * (1058)
             * ->
             * tdssotr,
             * pebnvks,
             * zaulju
             */

            d.name = segments[0];

            d.weight = int.Parse(segments[1].Substring(1, segments[1].Length - 1));

            disc[] arr = new disc[segments.Length - 2];
            for (int i = 2; i < segments.Length; i++)
            {
                //arr[i - 2] = segments[i].Substring(0, segments[i].Length - 1);
            }

            return(d);
        }
Example #2
0
        static int second(IEnumerable <string> lines)
        {
            Dictionary <string, disc> discMap           = new Dictionary <string, disc>();
            List <string>             linesWithChildren = new List <string>();

            //Construct dict with all discs
            foreach (var line in lines)
            {
                string[] segments = line.Split(' ');
                disc     d        = new disc();
                d.name = segments[0];
                string f = segments[1].Substring(1, segments[1].Length - 2);
                d.weight    = int.Parse(f);
                d.totWeight = d.weight;
                discMap.Add(d.name, d);

                if (segments.Length >= 3)
                {
                    linesWithChildren.Add(line);
                }
            }

            //Calc all weights for discs
            foreach (var line in linesWithChildren)
            {
                string[] segments = line.Split(' ');
                disc     d        = discMap[segments[0]];
                for (int i = 3; i < segments.Length; i++)
                {
                    string name;
                    if (i == segments.Length - 1)
                    {
                        name = segments[i];
                    }
                    else
                    {
                        name = segments[i].Substring(0, segments[i].Length - 1);
                    }

                    disc child = discMap[name];

                    d.totWeight += child.weight;
                }
                discMap[d.name] = d;
            }

            //find wrong weight
            List <disc> layer = new List <disc>();

            foreach (var line in linesWithChildren)
            {
                string[] segments = line.Split(' ');
                disc     d        = discMap[segments[0]];
                layer.Clear();
                for (int i = 3; i < segments.Length; i++)
                {
                    string name;
                    if (i == segments.Length - 1)
                    {
                        name = segments[i];
                    }
                    else
                    {
                        name = segments[i].Substring(0, segments[i].Length - 1);
                    }

                    disc child = discMap[name];

                    layer.Add(child);
                }
                //get wrong weight
                for (int i = 0; i < layer.Count; i++)
                {
                    int lower  = i - 1;
                    int higher = i + 1;
                    if (lower < 0)
                    {
                        lower = layer.Count() - 1;
                    }
                    if (higher > layer.Count() - 1)
                    {
                        higher = 0;
                    }
                    if (layer[higher].totWeight != layer[i].totWeight && layer[lower].totWeight != layer[i].totWeight)
                    {
                        if (layer[higher].totWeight < layer[i].totWeight)
                        {
                            return(layer[i].weight - (layer[i].totWeight - layer[higher].totWeight));
                        }
                        if (layer[higher].totWeight > layer[i].totWeight)
                        {
                            return(layer[i].weight + (layer[i].totWeight - layer[higher].totWeight));
                        }
                    }
                }
                discMap[d.name] = d;
            }
            return(0);
        }
Example #3
0
 await target.UpdateDisc(disc, UpdateDisc, CancellationToken.None);
Example #4
0
// Update is called once per frame
    void Update()
    {
        if (colidiu)
        {
            timer += Time.deltaTime;

            if (timer > cooldown)
            {
                colidiu = false;
                accel   = initialAccel;
                timer   = 0.0f;
            }
        }

        dirV = rb.velocity;

        if (dirV.magnitude * 100 < 1)
        {
            dirV = lastDirV;
        }

        if (playerNumber == 1 || playerNumber == 2)
        {
            if (Input.GetKey(up))
            {
                rb.AddForce(transform.forward * accel);
                lastDirV = dirV;
                directionVector.transform.LookAt(dirV * 100);

                if (!temDisco)
                {
                    spriteAnimator.SetTrigger("walkingUp");
                }
                else
                {
                    spriteAnimator.SetTrigger("walkingUpBC");
                }
            }

            if (Input.GetKey(left))
            {
                rb.AddForce(-transform.right * accel);
                lastDirV = dirV;
                directionVector.transform.LookAt(dirV * 100);

                if (!temDisco)
                {
                    spriteAnimator.SetTrigger("walkingLeft");
                }
                else
                {
                    spriteAnimator.SetTrigger("walkingLeftBC");
                }
            }

            if (Input.GetKey(down))
            {
                rb.AddForce(-transform.forward * accel);
                lastDirV = dirV;
                directionVector.transform.LookAt(dirV * 100);

                if (!temDisco)
                {
                    spriteAnimator.SetTrigger("walkingDown");
                }
                else
                {
                    spriteAnimator.SetTrigger("walkingDownBC");
                }
            }

            if (Input.GetKey(right))
            {
                rb.AddForce(transform.right * accel);
                lastDirV = dirV;
                directionVector.transform.LookAt(dirV * 100);

                if (!temDisco)
                {
                    spriteAnimator.SetTrigger("walkingRight");
                }
                else
                {
                    spriteAnimator.SetTrigger("walkingRightBC");
                }
            }

            if (!Input.GetKey(right) || !Input.GetKey(down) || !Input.GetKey(left) || !Input.GetKey(up))
            {
                directionVector.transform.LookAt(lastDirV * 100);

                if (!temDisco && hasStarted)
                {
                    spriteAnimator.SetTrigger("goIdle");
                }
                else if (temDisco && hasStarted)
                {
                    spriteAnimator.SetTrigger("goIdleBC");
                }
            }

            if (Input.GetKeyDown(fire))
            {
                if (temDisco)
                {
                    disc novoDisco = Instantiate(disco).GetComponent <disc>();
                    novoDisco.transform.position = transform.position + dirV.normalized;

                    if (dirV.magnitude != 0)
                    {
                        novoDisco.Shoot(dirV.normalized);
                    }
                    else
                    {
                        novoDisco.Shoot(lastDirV.normalized);
                    }
                    temDisco = false;
                }
            }
        }
        else if (playerNumber == 3 || playerNumber == 4)
        {
            if (Input.GetAxis(upJoy) > 0.5f)
            {
                rb.AddForce(transform.forward * accel);
                lastDirV = dirV;
                directionVector.transform.LookAt(dirV * 100);
            }

            if (Input.GetAxis(leftJoy) < -0.5f)
            {
                rb.AddForce(-transform.right * accel);
                lastDirV = dirV;
                directionVector.transform.LookAt(dirV * 100);
            }

            if (Input.GetAxis(downJoy) < -0.5f)
            {
                rb.AddForce(-transform.forward * accel);
                lastDirV = dirV;
                directionVector.transform.LookAt(dirV * 100);
            }

            if (Input.GetAxis(rightJoy) > 0.5f)
            {
                rb.AddForce(transform.right * accel);
                lastDirV = dirV;
                directionVector.transform.LookAt(dirV * 100);
            }

            if (Input.GetAxis(rightJoy) == 0 && Input.GetAxis(downJoy) == 0 && Input.GetAxis(leftJoy) == 0 && Input.GetAxis(upJoy) == 0)
            {
                directionVector.transform.LookAt(lastDirV * 100);
            }

            if (Input.GetButton(fireJoy))
            {
                if (temDisco)
                {
                    disc novoDisco = Instantiate(disco).GetComponent <disc>();
                    novoDisco.transform.position = transform.position + dirV.normalized;

                    if (dirV.magnitude != 0)
                    {
                        novoDisco.Shoot(dirV.normalized);
                    }
                    else
                    {
                        novoDisco.Shoot(lastDirV.normalized);
                    }
                    temDisco = false;
                }
            }
        }

        if (temDisco && hasStarted)
        {
            spriteAnimator.SetBool("hasBC", true);
        }
        else
        {
            spriteAnimator.SetBool("hasBC", false);
        }

        if (temDisco && !isSlow)
        {
            accel  = accel / slowDown;
            isSlow = true;
        }
        if (!temDisco && !colidiu)
        {
            isSlow = false;
            accel  = initialAccel;
        }
    }