Как сделать модульное тестирование на языке Си#
Привет, я вообще-то новичок в программировании, у меня было задание создать игру с одним экраном, и теперь я должен провести тесты на ней. Я совершенно не знаю, как провести тест в Visual Studio. Кто-нибудь может мне помочь, я застрял на этом уже около недели.
Это те задачи, которые я должен проверить:
1. крючок должен упасть при прослушивании события щелчка.
2. предметы (камень, драгоценный камень и денежный мешок) должны прикрепляться к крючку при столкновении.
2. сбор предметов - собранный предмет должен быть отключен при сборе.
3. Количество баллов должно увеличиваться в зависимости от стоимости собранного предмета.
4. отображение сообщения “Вы выиграли” при достижении целевого балла.
5. Игра должна сбрасываться после того, как таймер иссякнут.
Это мой код для крючка:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Hook : MonoBehaviour { [SerializeField] private Transform itemHolder; private bool itemAttached; private HookMovement hookMovement; private PlayerAnimation playerAnim; void Awake() { hookMovement = GetComponentInParent<HookMovement>(); playerAnim = GetComponentInParent<PlayerAnimation>(); } void OnTriggerEnter2D(Collider2D target) { if (!itemAttached && (target.tag == Tags.PINK_GEM || target.tag == Tags.GREEN_GEM || target.tag == Tags.BLUE_GEM || target.tag == Tags.ORANGE_GEM || target.tag == Tags.PURPLE_GEM || target.tag == Tags.LIGHT_BLUE_GEM || target.tag == Tags.PINK_GEM_SMALL || target.tag == Tags.CASH_BAG || target.tag == Tags.LARGE_STONE || target.tag == Tags.SMALL_STONE)){ itemAttached = true; target.transform.parent = itemHolder; target.transform.position = itemHolder.position; // Set the position of the hook to the position of the item hookMovement.move_Speed = target.GetComponent<Item>().hook_Speed; hookMovement.HookAttachedItem(); //animate player playerAnim.PullingItemAnimation(); if (target.tag == Tags.PINK_GEM || target.tag == Tags.GREEN_GEM || target.tag == Tags.BLUE_GEM || target.tag == Tags.ORANGE_GEM || target.tag == Tags.PURPLE_GEM || target.tag == Tags.LIGHT_BLUE_GEM || target.tag == Tags.PINK_GEM_SMALL || target.tag == Tags.CASH_BAG) { SoundManager.instance.HookGrab_Jewel(); } else if (target.tag == Tags.LARGE_STONE || target.tag == Tags.SMALL_STONE){ SoundManager.instance.HookGrab_Stone(); } SoundManager.instance.WinchCrank(true); } // If the target is an item if (target.tag == Tags.DELIVER_ITEM){ if(itemAttached){ itemAttached = false; Transform objChild = itemHolder.GetChild(0); objChild.parent = null; objChild.gameObject.SetActive(false); playerAnim.IdleAnimation(); SoundManager.instance.WinchCrank(false); } }// Remove items after winching }// On trigger enter }
Это для движения крючка:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class HookMovement : MonoBehaviour{ //Rotation of the hook on the z-axis public float min_Z = -55f, max_Z = 50f; public float rotate_Speed = 5f; private float rotate_Angle; private bool rotate_Right; private bool canRotate; public float move_Speed = 3f; // Pulling speed of the hook private float initial_Move_Speed; // How far can the hook extend public float min_Y = -4f; private float initial_Y; private bool moveDown; //For Line Renderer private RopeRenderer ropeRenderer; void Awake() { ropeRenderer = GetComponent<RopeRenderer>(); } void Start() { initial_Y = transform.position.y; initial_Move_Speed = move_Speed; canRotate = true; } void Update(){ Rotate(); GetInput(); MoveRope(); } void Rotate(){ if(!canRotate) return; if(rotate_Right){ rotate_Angle += rotate_Speed * Time.deltaTime; } else{ rotate_Angle -= rotate_Speed * Time.deltaTime; } //Rotate the hook in an angle on the z-axis transform.rotation = Quaternion.AngleAxis(rotate_Angle, Vector3.forward); if(rotate_Angle >= max_Z){ rotate_Right = false; } else if(rotate_Angle <= min_Z){ rotate_Right = true; } }// Rotate hook void GetInput(){ if(Input.GetMouseButtonDown(0)) { if(canRotate) { canRotate = false; moveDown = true; } } }// Stop rotating the hook and move the rope void MoveRope() { if(canRotate) return; if(!canRotate) { SoundManager.instance.RopeWhip(true); Vector3 temp = transform.position; if (moveDown) { temp -= transform.up * Time.deltaTime * move_Speed; } else { temp += transform.up * Time.deltaTime * move_Speed; } transform.position = temp; if(temp.y <= min_Y) { moveDown = false; }//Move the rope up when it reaches minimum y-axis if(temp.y >= initial_Y) { canRotate = true; // deactivate line renderer ropeRenderer.RenderLine(temp, false); // reset move speed move_Speed = initial_Move_Speed; SoundManager.instance.RopeWhip(false); } ropeRenderer.RenderLine(transform.position, true); } }// Move Rope public void HookAttachedItem(){ moveDown = false; } }
Это игровой скрипт:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameplayManager : MonoBehaviour { public static GameplayManager instance; [SerializeField] private Text countdownText; public int countdownTimer = 60; [SerializeField] private Text scoreText; private int scoreCount; [SerializeField] private Image scoreFillUI; public RectTransform endScreen; public Text endMessage; void Awake() { if (instance == null) instance = this; } void Start() { DisplayScore(0); countdownText.text = countdownTimer.ToString(); StartCoroutine("Countdown"); } // Start the countdown when the game starts void Update() { if (Input.GetKey(KeyCode.Escape)) { Application.Quit(); } } // End the game when the esc button is pressed. IEnumerator Countdown(){ yield return new WaitForSeconds(1f); countdownTimer -= 1; countdownText.text = countdownTimer.ToString(); if(countdownTimer <= 10){ SoundManager.instance.TimeRunningOut(true); } // Play timer sound if less than 10secs StartCoroutine("Countdown"); if(countdownTimer <= 0){ StopCoroutine("Countdown"); SoundManager.instance.GameEnd(); SoundManager.instance.TimeRunningOut(false); StartCoroutine(RestartGame()); } // Restart the game when the timer ends }//Countdown timer public void DisplayScore(int scoreValue) { if (scoreText == null) return; scoreCount += scoreValue; scoreText.text = "$" + scoreCount; scoreFillUI.fillAmount = (float)scoreCount / 100f; // Fill the score bar if(scoreCount >= 100) { StopCoroutine("Countdown"); endScreen.gameObject.SetActive (true); endMessage.gameObject.SetActive (true); // Active you won message SoundManager.instance.TimeRunningOut(false); SoundManager.instance.YayCharacter(); SoundManager.instance.GameEnd(); //Stop timer sound FX StartCoroutine(RestartGame()); } // Display score } IEnumerator RestartGame(){ yield return new WaitForSeconds(4f); UnityEngine.SceneManagement.SceneManager.LoadScene("Gameplay"); } //Restart the game }
Что я уже пробовал:
Я совершенно потерялся...пожалуйста, помогите.