2014-09-26 46 views
-4

我想用C#和XNA显示多个文本。情况就是这样。如果A则显示AAAAA;如果在'A'之后B,则同时显示BBBBAAAA
这里是我写的代码:C#和XNA显示多个文本

if (Score == A) 
{ 
    spriteBatch.DrawString(
     Font,       
     "AAAAAAAAAAAAAAAAAA", 
     scorePos,      
     Color.White); 
} 
if (Score == B) 
{ 
    spriteBatch.DrawString(
     Font,       
     "BBBBBBBBBBB", 
     scorePos2,      
     Color.White); 
} 

不过,如果我显示BBBAAA消失;我应该用什么来代替我的If声明?

+0

'如果A则显示AAAAA,若B,则显示BBBB'我没有看到,逻辑代码,只有一个比较的分数。 – gunr2171 2014-09-26 15:41:34

+0

你能举一个具体的例子吗?我不明白为什么你不能在这里删除if块。你知道什么条件,对吗?而你的A B条件并不能很好地转换你的代码示例。 – 2014-09-26 15:42:54

+0

你好,谢谢你的回复。我明白代码中存在问题。除了使用“如果其他”,我应该使用什么? – user3684119 2014-09-26 15:43:10

回答

0

它仍然不是完全明确你想要什么样的行为,但似乎你不明白什么else做什么。

如果if/else if报表上面,但请不要else(或else if)语句将执行。

使用您的代码,这意味着您将只执行“A”块“B”块,从来都不会。

如果你只是想“A”打印为和“B”打印烧烤(相互独立的),只是不使用else

if (A) 
{ 
} 
if (B) 
{ 
} 

如果你只是想,如果打印烧烤你有作为,然后窝他们:

if (A) 
{ 
    if (B) 
    { 
    } 
} 

老实说,我怀疑你想在你目前的代码中的任何else结构。您在Score变量上检查等号时是否存在额外的问题。 Score永远不可能同时等于“A”和“B”,因此无论如何你永远无法进入这两个条件。你需要找到一个不同的条件来检查。

+0

感谢您的回复。我之前有错别字,我修正了它。是的,你是对的,如果我使用“else”语句,我不能同时拥有A和B. – user3684119 2014-09-26 16:23:38

+0

@ user3684119您仍然存在互斥条件的问题。你需要找到一种不同的方式来确定要绘制哪一种,因为它们永远不会是真实的。 – BradleyDotNET 2014-09-26 16:27:06

+0

我曾考虑过使用嵌套if作为第二个例子。但是A或B会首先出现,所以外部如果可能难以确定。而且我有A,B,C,D等,嵌套如果会有点困难?再次感谢。 – user3684119 2014-09-26 16:30:26

0

感谢所有的答复。当我找出答案时,我发现我的问题很愚蠢。只是定义了两个变量就可以解决问题,修改后的男女同校是像

 if (Score == 1) 
     { 
      spriteBatch.DrawString(
       Font,       // SpriteFont 
       "AAAAAAA", // Text 
       scorePos,      // Position 
       Color.White); 
     }//end of H2 

     ////If O2 matched, score=2 
     if (Score2 == 1) 
     { 
      spriteBatch.DrawString(
       Font,       // SpriteFont 
       "BBBBBBBB", // Text 
       scorePos3,      // Position 
       Color.White); 
     }//end of O2