2014-12-07 45 views
2

我是新来的,编程一个c#程序。任何人都可以帮助我在c#控制台的猜谜游戏?我需要限制玩家的猜测次数为10次,得分为-10的猜测次数。当玩家获胜时,如果他们想再次玩,则回应否,它将结束游戏显示所有玩家的得分和他们的平均得分。我如何开始评分代码?有人可以给我任何想法或我可以用于模式的代码示例吗?谢谢如何存储猜谜游戏的分数?

这里是我的代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Midterm 
{ 
    class Program 
    { 
     int answer; 
     int guess; 
     static void Main(string[] args) 
     { 
      Program p = new Program(); 
      p.Opening(); 
      p.randomize(); 

      while (true) 
      { 
       p.userData(); 
       p.Display(); 
      } 

     } 

     //method for the introduction 
     private void Opening() 
     { 
      Console.WriteLine("Welcome to the Guessing Game! Pless any key to continue!"); 
      Console.ReadLine(); 
     } 

     //method for getting user input 
     private void userData() 
     { 
      Console.WriteLine("Enter your guess number."); 
      guess = int.Parse(Console.ReadLine()); 

     } 

     //method for display 
     private void Display() 
     { 

      if (guess == answer) 
      { 
       Console.WriteLine("Congratulation. You won!"); 
       Console.WriteLine("Score: "); 
       PlayAgain(); 
      } 
      else if (guess > answer) 
      { 
       Console.WriteLine("Your guess is high"); 
      } 
      else if (guess < answer) 
      { 
       Console.WriteLine("Your guess is low"); 
      } 

     } 

     private void Score() 
     { 
      int[] score = new int[100]; 

     } 

     private void AverageScore() 
     { 


     } 

     //method for playing again question 
     private void PlayAgain() 
     { 
      Console.WriteLine("Do you want to play again? Yes or No"); 
      string respond = Console.ReadLine().ToLower(); 
      if (respond == "yes") 
      { 
       Opening(); 
       randomize(); 

       while (true) 
       { 
        userData(); 
        Display(); 
       } 

      } 
      else if (respond == "no") 
      { 
       EndProgram(); 
      } 
      else 
      { 
       Console.WriteLine("You enter a wrong respond."); 
       Console.WriteLine("Will automatic exit you"); 
       EndProgram(); 
      } 
     } 

     //method for the random number generator 
     private void randomize() 
     { 
      Random rand = new Random(); 
      answer = rand.Next(1, 500); 
     } 

     //method for end program 
     private void EndProgram() 
     { 
      Console.WriteLine("\n"); 
      Console.WriteLine("Press any key to Exit"); 
      Console.ReadKey(); 
     } 

    } 
} 
+0

我建议你不要不用数组来表示每场比赛的比分,而是使用“列表”。这样,您可以不断添加新分数,并且列表会自动变长,然后您可以简单地使用LINQ'.Average()'方法来获取平均值。 – Enigmativity 2014-12-07 06:22:31

回答

-1

下方,你必须在类级别INT猜测加 INT得分= 0; 然后当用户得到正确答案时加 得分++;

希望这有助于!

+0

@Downvoter,为什么downvote? – SuncoastOwner 2014-12-07 13:50:14

2

向userData()方法添加一个计数器。每次猜测后增加计数器。

使用计数器计算Display()方法中的分数。

考虑从Display()中调用userData()。

if (attempts < 10 && answer != guess) 
    Console.WriteLine("some feedback"); 
    userData(); 

这是主观的,但如果我在写这个节目,我可能会围绕构建评分系统的反馈环路。

示例伪代码:

private void start() { 
    display welcome message; 
    answer = new random number; 
    guess = getInput(); 
    score = 10; 
    win = false; 

    while (score > 0 && win == false) { 
    if (!evaluateGuess(answer, guess)) { 
     guess = getInput(); 
     score--; 
    } 
    else if (evaluateGuess(answer, guess)) { 
     display winning message and score; 
     win = true; 
     playAgain(); 
    } 
    } 
} 

private void evaluateGuess(answer, guess) { 
    if (answer == guess) { 
    display feedback; 
    return true; 
    } 
    else { 
    display other feedback; 
    return false; 
    } 
} 
+0

谢谢你的回应,我会尝试你的想法。我还有一个问题,我如何使用数组来追踪玩家玩的游戏的分数?你能给我另一个示例代码吗? – 2014-12-07 05:47:35

2

我写的透明度HLSL代码,然后我会在身体和用于我的前景另一个图像内透明的图像:

sampler stream : register(s0); 
sampler back : register(s1); 
sampler character : register(s2); 



float4 DepthToRGB(float2 texCoord : TEXCOORD0) : COLOR0 
{ 
// We can't easily sample non-normalized data, 
// Texture is a short packed stuffed into a BGRA4444 (4 bit per component normalized) 
// It's not really BGRA4444 which is why we have to reverse the normalization here 
float4 color = tex2D(stream, texCoord); 
float4 backColor = tex2D(back, texCoord); 
float4 characterColor = tex2D(character, texCoord); 

// convert from [0,1] to [0,15] 
color *= 15.01f; 

// unpack the individual components into a single int 
int4 iColor = (int4)color; 
int depthV = iColor.w * 4096 + iColor.x * 256 + iColor.y * 16 + iColor.z; 

// player mask is in the lower 8 bits 
int playerId = depthV % 8; 

if(playerId == 0) 
{ 
    //Not yet recognized 
    return backColor * float4(1.0, 1.0, 1.0, 1.0); 
} 
else 
{ 
    return backColor * characterColor; 
} 
} 

technique KinectDepth 
{ 
pass KinectDepth 
{ 
    PixelShader = compile ps_2_0 DepthToRGB(); 
} 
}