我正在尝试在C ++上做石头,纸,剪刀的游戏,需要一些建议

时间:2019-03-02 22:08:47

标签: c++

以下是说明:

  

实现一个C ++控制台应用程序,该应用程序模拟   针对计算机的剪刀石头布游戏。当两个之间玩   人,每个人都会选择以下三个选项之一(通常是手动显示   手势),然后确定获胜者。在游戏里,   Rock胜过剪刀,剪刀胜过Paper,Paper胜过Rock。的   程序应随机选择以下三个选项之一(   显示),然后要求用户输入(选择Rock,Paper或   剪刀),最后与用户的选择进行比较。那时,   程序同时显示这两个选择,并打印一条语句,指示是否   用户赢了,计算机赢了,还是平局。申请应保持   跟踪当前得分(即用户获胜,失败和   领带),并在每次播放后更新屏幕。应该提示用户   每场比赛之后,如果他们想继续比赛。在。。。之初   在游戏中,程序还应询问用户的姓名和   显示分数时显示此名称。您不需要使用任何   用户分配的函数,但您可以添加任何内容   只要本文档末尾的条件是   遇见。但是,不会给予任何加分。

     

除上述要求外,作为此作业的一部分,您   用于将游戏数据存储到文本文件中。游戏应该   始终要求输入用户名(必须至少8个字符),并且   将游戏结果存储在与用户名同名的文件中   (username.txt)。如果用户以前玩过游戏,则数据   应该在启动文件之前从文件中读取并显示在屏幕上   新游戏。游戏结束时,统计数据应保存在   同一文件。游戏不应使用相同的用户名,除非   同一用户。这意味着游戏应检查是否存在   用户名并提示新用户进行进一步的身份验证   需要。这也将确保每个用户都有一个唯一的   存储的游戏数据统计信息,未被其他用户覆盖   相同的用户名。

这是我到目前为止提出的:

#include "pch.h"

#include <iostream>

using namespace std;

int main()
{
    string PlayerUsername;

    string Playerinput;

    string Winner;

    int Wins;

    int Draws;

    int Losses;

    int RNG = rand() % 3 + 1;

    std::cout << "Print your name.\n";
    cin >> PlayerUsername;

    std::cout << "Hello >>PlayerUsername>>. This is a rock, paper, scissors game. The rules are as follows: rock beats scissors, paper beats rock, and scissors beats paper. The computer will randomly pick one of the three. Print n1 for rock, print n2 for paper, print n3 for scissors. Input your choice if you wish to play. Otherwise close the program.\n";

    if (RNG == "1" && Playerinput == "rock") { std::cout << "The outcome of this game was a tie." << endl; }

    else if (RNG == "2" && Playerinput == "scissors") { std::cout << "Computer wins." << endl; }

    else if (RNG == "2" && Playerinput == "paper") { std::cout << "The outcome of this game was a tie." << endl; }

    else if (RNG == "2" && Playerinput == "rock") { std::cout << "Computer wins." << endl; }

    else if (RNG == "3" && Playerinput == "scissors") { std::cout << "The outcome of this game was a tie." << endl; }

    else if (RNG == "3" && Playerinput == "paper") { std::cout << "Computer wins." << endl; }

    else {
        std::cout << "You win." << endl;
    }
    cin >> Playerinput
}

注意:该代码未编译。 错误:  *系统找不到指定的文件,这是我从Visual Studio社区获得的弹出窗口。 严重性代码说明项目文件行抑制状态 错误(有效)E0065预期为“;”岩石,纸张,剪刀C:\ Users \ FULVIO \ source \ repos \ Rock,Paper,剪刀,Rock,纸张,剪刀.cpp 18
错误(有效)E0042操作数类型不兼容(“ int”和“ const char *”)Rock,Paper,剪刀C:\ Users \ FULVIO \ source \ repos \ Rock,Paper,Scissors \ Rock,Paper,Scissors.cpp 21
错误(有效)E0042操作数类型不兼容(“ int”和“ const char *”)Rock,Paper,剪刀C:\ Users \ FULVIO \ source \ repos \ Rock,Paper,Scissors \ Rock,Paper,Scissors.cpp 23
错误(有效)E0042操作数类型不兼容(“ int”和“ const char *”)Rock,Paper,剪刀C:\ Users \ FULVIO \ source \ repos \ Rock,Paper,Scissors \ Rock,Paper,Scissors.cpp 25
错误(有效)E0042操作数类型不兼容(“ int”和“ const char *”)Rock,Paper,剪刀C:\ Users \ FULVIO \ source \ repos \ Rock,Paper,Scissors \ Rock,Paper,Scissors.cpp 27
错误(有效)E0042操作数类型不兼容(“ int”和“ const char *”)Rock,Paper,剪刀C:\ Users \ FULVIO \ source \ repos \ Rock,Paper,Scissors \ Rock,Paper,Scissors.cpp 29
错误(有效)E0042操作数类型不兼容(“ int”和“ const char *”)Rock,Paper,剪刀C:\ Users \ FULVIO \ source \ repos \ Rock,Paper,Scissors \ Rock,Paper,Scissors.cpp 31
错误(有效)E0065预期为“;”岩石,纸张,剪刀C:\ Users \ FULVIO \ source \ repos \ Rock,Paper,剪刀,Rock,纸张,剪刀.cpp 36
错误C2146语法错误:缺少';'标识符'PlayerUsername'之前的岩石,纸张,剪刀c:\ users \ fulvio \ source \ repos \岩石,纸张,剪刀\ rock,纸张,剪刀.cpp 18
错误C2059语法错误:“;”岩石,纸张,剪刀c:\ users \ fulvio \ source \ repos \ rock,纸张,剪刀\ rock,纸张,剪刀.cpp 18
错误C2446'==':没有从'const char *'到'int'的转换岩石,纸张,剪刀c:\ users \ fulvio \ source \ repos \ rock,纸张,剪刀\ rock,纸张,剪刀cpp 21 < br /> 错误C2446'==':没有从'const char *'到'int'的转换岩石,纸张,剪刀c:\ users \ fulvio \ source \ repos \ rock,纸张,剪刀\ rock,纸张,剪刀cpp 23 < br /> 错误C2446'==':没有从'const char *'到'int'的转换岩石,纸张,剪刀c:\ users \ fulvio \ source \ repos \ rock,纸张,剪刀\ rock,纸张,剪刀cpp 25 < br /> 错误C2446'==':没有从'const char *'到'int'的转换岩石,纸张,剪刀c:\ users \ fulvio \ source \ repos \ rock,纸张,剪刀\ rock,纸张,剪刀cpp 27 < br /> 错误C2446'==':没有从'const char *'到'int'的转换岩石,纸张,剪刀c:\ users \ fulvio \ source \ repos \ rock,纸张,剪刀\ rock,纸张,剪刀cpp 29 < br /> 错误C2446'==':没有从'const char *'到'int'的转换岩石,纸张,剪刀c:\ users \ fulvio \ source \ repos \ rock,纸张,剪刀,rock,纸张,剪刀cpp 31 < br /> 错误C2146语法错误:缺少';'标识符'Playerinput'之前的岩石,纸张,剪刀c:\ users \ fulvio \ source \ repos \ rock,纸张,剪刀\ rock,纸张,剪刀.cpp 37
错误C2143语法错误:缺少';'在'}'石头,剪刀之前的c:\ users \ fulvio \ source \ repos \ rock,石头,剪刀,rock,纸张,剪刀。cpp37

我想知道:  *为什么此代码未运行。  *如何添加一种在文本文件上保持得分的方法。

1 个答案:

答案 0 :(得分:1)

欢迎堆栈溢出。

您可以使用正确的语法开始询问玩家名称:

if

然后,在说明显示和链else / RNG的开始之间,您应该要求玩家输入(而不是在末尾询问)(并使用正确的语法)。

然后intRND==1。因此,您应该将其与整数而不是字符串文字进行比较(例如,RND=="1"而不是react-native)。

一项改进建议:确定谁胜出之前,先显示计算机选择的内容以及用户输入的内容,这将是不错的选择。因为只是结果会让人感到沮丧,所以在不清楚为什么赢还是输的时候。

最后,对于您将来的问题,更好地解释问题和无法理解的错误消息(此处有一些语法错误)会很有帮助。