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); }
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); }
await target.UpdateDisc(disc, UpdateDisc, CancellationToken.None);
// 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; } }