2016-10-07 3 views
1

지금 Unity 4.6.9에서 Number Wizard 게임을 만들려고합니다. 지금까지 모든 것은 첫 번째 추측을 제외하고는 작동합니다.Unity의 마법사 게임이 첫 번째 클릭에 대한 추측을 업데이트하지 않습니다.

게임에서 숫자가 500으로 추측되면 숫자가 더 높거나 낮거나 같음을 말해야합니다. 이상적으로 숫자가 더 높거나 낮다고 말하면 즉시 새 번호 (더 높은 경우 750 또는 낮은 경우 250).

문제는 바로 추측을 변경하지 않는다는 것입니다.

  1. 귀하의보다 큰 500 : 나는 번호가 원래 생각보다 큰 것을 게임을 말할 때

    는 화합, 콘솔이 말한다?

  2. 더 큰 경우 Y를 누르고 더 작은 경우 N을 누르고 500이면 E를 누릅니다.
  3. 500보다 높거나 낮습니까?
  4. 750보다 높거나 낮습니까?
  5. 875보다 높거나 낮습니까?

문제는 3 행입니다. "750보다 높거나 낮은가요?"라는 질문을하고 4 행은 "875보다 높거나 낮은가?"등의 질문을해야합니다.

코드에서 잘못 수행 한 것이 무엇인지 잘 모르겠습니다. 누구든지 그것을 살펴보고 내 실수를 지적하면 매우 감사 할 것입니다.

using UnityEngine; 
using System.Collections; 

public class NumberWizard : MonoBehaviour { 

    int max = 1000; 
    int min = 1; 
    int guess = 500; 

    // Use this for initialization 
    void Start() { 

     max += 1; 

     print ("Welcome to Number Wizard."); 
     print ("To begin, pick a number in your head, but don't tell me what it is."); 

     print ("The highest number you can pick is " +max +", and the lowest number you can pick is " +min +"."); 
     print ("Is your number greater than " +guess +"?"); 
     print ("Press Y if it is greater, N if it is lesser, or E if it is " +guess +"."); 
    } 

    // Update is called once per frame 
    void Update() { 

     string NewGuess = "Is it higher or lower than " +guess +"?"; 

     if (Input.GetKeyDown(KeyCode.Y)) { 
      min = guess; 
      guess = (max + min)/2; 
      print (NewGuess); 
     } else if (Input.GetKeyDown(KeyCode.N)) { 
      max = guess; 
      guess = (max + min)/2; 
      print (NewGuess); 
     } else if (Input.GetKeyDown(KeyCode.E)) { 
      print ("I won!"); 
     } 
    } 
} 

다시 말하지만 도움을 주시면 큰 도움이됩니다.

답변

0

문제는 실제로 새로 계산 된 추측을 포함하도록 인쇄중인 NewGuess 문자열을 업데이트하지 않는 것입니다. 깨끗한 솔루션은 인쇄가 매개 변수로 전달 새로운 생각으로 Update 메서드에서 호출 할 수있는 새로운 방법을 생성하는 것,

void Update() { 

    string NewGuess = "Is it higher or lower than " +guess +"?"; 

    if (Input.GetKeyDown(KeyCode.Y)) { 
     min = guess; 
     guess = (max + min)/2; 
     NewGuess = "Is it higher or lower than " +guess +"?"; 
     print (NewGuess); 
    } else if (Input.GetKeyDown(KeyCode.N)) { 
     max = guess; 
     guess = (max + min)/2; 
     NewGuess = "Is it higher or lower than " +guess +"?"; 
     print (NewGuess); 
    } else if (Input.GetKeyDown(KeyCode.E)) { 
     print ("I won!"); 
    } 
} 

을 또는이보십시오.

예 :

void PrintNewGuess(int newGuess) 
{ 
    String newGuessString = "Is it higher or lower than " +newGuess +"?"; 
    print(newGuessString); 
} 
+0

은 또한, 나는이 게임을 추측하고있어 Udemy의 통일 과정에서이다. 훌륭한 수업입니다. :) – LaneL

+0

고마워요, 완벽하게 작동했습니다! –

+0

그리고 맞습니다. 그것은 Unity에 대한 과정입니다. 나는 그것을 배우고 다른 하나를 통해 갈 수 있도록 많은 다른 사람들이있어, 이것이 첫 번째입니다. –

관련 문제