C# if语句中的2个值不起作用-石头剪纸游戏C
因此,我陷入了一种困境,我无法使我的if语句正确工作,它们在屏幕上什么也不显示,有趣的是,当计算机和用户在石头-布-剪刀游戏中绘图时,只有最上面的if语句工作 以下是方法中无法正常工作的代码:C# if语句中的2个值不起作用-石头剪纸游戏C,c#,arrays,C#,Arrays,因此,我陷入了一种困境,我无法使我的if语句正确工作,它们在屏幕上什么也不显示,有趣的是,当计算机和用户在石头-布-剪刀游戏中绘图时,只有最上面的if语句工作 以下是方法中无法正常工作的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SPSProject
{
class Game
{
string compChoice;
string playerChoice;
string name;
Random randy;
public string PAPER;
public string STONE;
public string SCISSORS;
static void Main()
{
Game myGame = new Game(); // create new Game object
myGame.play(); // call its play method
}
//*******************************************************
public Game()
{
randy = new Random(); // create new Random object
}
//*******************************************************
public void play()
{
setupScreen();
introduction();
getPlayerChoice();
getComputerChoice();
drawPlayerChoice();
printChoices();
showResult();
Console.ReadKey(); // wait for a key press
}
//********************************************************
private void setupScreen()
{
Console.Title = " The Great Scissors-Paper-Stone Game";
Console.SetWindowSize(100, 36);
Console.SetBufferSize(100, 36);
Console.BackgroundColor = ConsoleColor.White;
Console.ForegroundColor = ConsoleColor.Black;
Console.Clear(); // clear screen in chosen colour
}
//********************************************************
private void introduction()
{
Console.WriteLine("\tPlay the Scissors Paper Stone Game");
Console.WriteLine("\t==================================");
}
//********************************************************
private void getPlayerChoice()
{
Console.WriteLine("WHAT IS YOUR NAME?");
name = Console.ReadLine();
Console.WriteLine("\n\twhat is your choice" + " " + name + "?");
Console.Write("\tScissors Paper or Stone : ");
playerChoice = Console.ReadLine();
playerChoice = playerChoice.ToUpper();
}
//*******************************************************
private void getComputerChoice()
{
int num;
num = randy.Next(3); // pick a random number (0, 1 or 2)
if (num == 0)
{
compChoice = "SCISSORS";
}
if (num == 1)
{
compChoice = "PAPER";
}
if (num == 2)
{
compChoice = "STONE";
}
}
//***************************************************
private void printChoices()
{
Console.WriteLine("\n\t You picked " + playerChoice);
Console.WriteLine("\tThe computer choice is " + compChoice);
}
//***************************************************
private void showResult()
{
if (playerChoice == compChoice)
{
Console.WriteLine("\n\tA DRAW!!");
}
if (playerChoice == PAPER && compChoice == SCISSORS)
{
Console.WriteLine("COMPUTER WINS AS SCISSORS BEATS PAPER");
}
if (playerChoice == STONE && compChoice == SCISSORS)
{
Console.WriteLine(name + "WINS AS STONE BEATS SCISSORS");
}
if (playerChoice == SCISSORS && compChoice == PAPER)
{
Console.WriteLine(name + "WINS AS SCISSORS BEATS PAPER");
}
if (playerChoice == STONE && compChoice == PAPER)
{
Console.WriteLine(name = "WINS AS STONE BEATS PAPER");
}
if (playerChoice == SCISSORS && compChoice == STONE)
{
Console.WriteLine("COMPUTER WINS AS STONE BEATS SCISSORS");
}
if (playerChoice == PAPER && compChoice == STONE)
{
Console.WriteLine(name + "WINS AS PAPER BEATS STONE");
}
}
//******************************************************
private void drawPlayerChoice()
{
if (playerChoice == "SCISSORS")
{
drawScissors(15, 10);
}
else if (playerChoice == "PAPER")
{
drawPaper(15, 10);
}
else if (playerChoice == "STONE")
{
drawStone(15, 10);
}
}
//*******************************************************************
private void drawScissors(int x, int y)
{
Console.SetCursorPosition(x, y++); // set start position then increment y to move down
Console.Write(" \\ /");
Console.SetCursorPosition(x, y++);
Console.Write(" \\ /");
Console.SetCursorPosition(x, y++);
Console.Write(" \\ /");
Console.SetCursorPosition(x, y++);
Console.Write(" \\ /");
Console.SetCursorPosition(x, y++);
Console.Write(" \\ /");
Console.SetCursorPosition(x, y++);
Console.Write(" \\ /");
Console.SetCursorPosition(x, y++);
Console.Write(" **");
Console.SetCursorPosition(x, y++);
Console.Write(" / \\");
Console.SetCursorPosition(x, y++);
Console.Write(" (----/ \\----)");
Console.SetCursorPosition(x, y++);
Console.Write(" \\ / \\ /");
Console.SetCursorPosition(x, y++);
Console.Write(" == ==");
Console.WriteLine("\n\n");
}
//**************************************************************
private void drawStone(int x, int y)
{
Console.SetCursorPosition(x, y++); // set start position then increment y to move down
Console.Write(" ___---___ ");
Console.SetCursorPosition(x, y++);
Console.Write(" .-- --. ");
Console.SetCursorPosition(x, y++);
Console.Write(" ./ () .-. \\. ");
Console.SetCursorPosition(x, y++);
Console.Write(" / o . ( ) \\ ");
Console.SetCursorPosition(x, y++);
Console.Write(" / . '-' \\ ");
Console.SetCursorPosition(x, y++);
Console.Write(" / () () \\ ");
Console.SetCursorPosition(x, y++);
Console.Write(" | o () | ");
Console.SetCursorPosition(x, y++);
Console.Write(" | .--. O | ");
Console.SetCursorPosition(x, y++);
Console.Write(" \\ . | | | ");
Console.SetCursorPosition(x, y++);
Console.Write(" \\ `.__.' o . / ");
Console.SetCursorPosition(x, y++);
Console.Write(" `\\ o () /' ");
Console.SetCursorPosition(x, y++);
Console.Write(" `--___ ___--' ");
Console.SetCursorPosition(x, y++);
Console.Write(" --- ");
Console.WriteLine();
}
//************************************************************************
private void drawPaper(int x, int y)
{
Console.SetCursorPosition(x, y++); // set start position then increment y to move down
Console.Write(" .--.------------------.");
Console.SetCursorPosition(x, y++);
Console.Write(" / \\ \\ \\ \\ \\ \\ \\ \\ \\");
Console.SetCursorPosition(x, y++);
Console.Write(" / OOO \\ |");
Console.SetCursorPosition(x, y++);
Console.Write(" | OOOO || A N D R E X | |");
Console.SetCursorPosition(x, y++);
Console.Write(" | OOOO | |");
Console.SetCursorPosition(x, y++);
Console.Write(" \\ OOO / /");
Console.SetCursorPosition(x, y++);
Console.Write(" \\ // / / / / / / / //");
Console.SetCursorPosition(x, y++);
Console.Write(" `--'-|| | | | | | | | |");
Console.SetCursorPosition(x, y++);
Console.Write(" \\ \\");
Console.SetCursorPosition(x, y++);
Console.Write(" \\ \\");
Console.SetCursorPosition(x, y++);
Console.Write(" \\ \\");
Console.SetCursorPosition(x, y++);
Console.Write(" \\ \\ \\ \\ \\ \\ \\ \\ \\\\");
Console.SetCursorPosition(x, y++);
Console.Write(" \\________________\\");
Console.WriteLine();
}
//************************************************************************
private void drawSmile()
{
Console.WriteLine("\n .-\"\"\"\"-.-\"\"\"\"-. ");
Console.WriteLine(" _.'` `'._ ");
Console.WriteLine(" .-' __..,.___.___.,..__ '-. ");
Console.WriteLine(" '-.-;` | | | | | `;-.-' ");
Console.WriteLine(" \\'-\\_/\\__| | |__/\\_/-'/ ");
Console.WriteLine(" \\, _ '---'---' _ ,/ ");
Console.WriteLine(" \\'./`'.--.--.--,--.'`\\.'/ ");
Console.WriteLine(" \\ `'-;__|__|__|__;-'` / ");
Console.WriteLine(" '. .' ");
Console.WriteLine(" `'-....---....-'` ");
}
//*************************************
private void drawThumbsUp()
{
Console.WriteLine();
Console.WriteLine(" _ ");
Console.WriteLine(" ( (( ");
Console.WriteLine(" \\ =\\ ");
Console.WriteLine(" __\\_ `-\\ ");
Console.WriteLine(" (____))( \\----- ");
Console.WriteLine(" (____)) _ ");
Console.WriteLine(" (____)) ");
Console.WriteLine(" (____))____/----- ");
Console.WriteLine();
}
//*************************************
private void drawThumbsDown()
{
Console.WriteLine();
Console.WriteLine(" ______ ");
Console.WriteLine(" ((____ \\----- ");
Console.WriteLine(" ((_____ ");
Console.WriteLine(" ((_____ ");
Console.WriteLine(" ((____ ----- ");
Console.WriteLine(" / / ");
Console.WriteLine(" (_(( ");
Console.WriteLine();
}
}
}
我尝试了不同的方法使“draw”一下面的if语句能够工作,方法是去掉两个“&&”,只使用一个。顺便说一下,这没有任何作用,我想不出任何其他方法来解决这个问题。问题可能就在这里。您可以在Console.WriteLine中分配而不是连接
if (playerChoice == STONE && compChoice == PAPER)
{
Console.WriteLine(name = "WINS AS STONE BEATS PAPER");
}
但是通过一堆if语句来计算胜利者的想法通常是不好的您从未设置字符串的值。 纸
也考虑使用枚举,如果在代码中使用其他,则 我们需要了解如何分配playerChoice和compChoice,以及纸/石头/剪刀的值。另外,如果玩家选择了他们不会输的石头,你需要显示代码,而不是描述它们。我无法通过电话游戏看出你的问题。你不需要发布全部代码,只需发布与你的问题相关的代码。尤其是竖起大拇指和微笑不太可能帮助任何人。@Himbrombere为自己说话,这让我很开心@泽山-诺恩疯了。供将来参考:虽然代码是一个问题,但它几乎肯定不是整个问题的原因。这可能只是许多问题中的一个。我对C允许赋值表达式感到惊讶和失望。它们是C/C++中经常出现错误的原因。@bufjape你还能怎么做a=b=C=5?我也解决了这个问题,非常感谢你给出的明确答案!虽然这可以通过调试来解决。。。为了扩展,您没有点击任何语句,因为您正在将播放器输入与其他内容进行比较。OK,我将更改此设置。谢谢您的帮助,现在可以使用了。不客气。但是看看另一个回答,因为它指出了另一个错误。