Mastermind字符串cout问题

时间:2014-07-19 01:26:45

标签: c++

好的,我一直在努力使用这段代码,我想我已经写好了,但这是我老师的规则

1 = implies right Number, Right Place.
2 = implies right Number, Wrong Place.
0 = implies Wrong Number.

所以计算机决定12345;用户猜测11235;计算机应该回复10221.提示:当只有一个时,注意一个双数,如11。

我有它所做的一切除了我不能让它显示0时,如果它是错的你能帮我写下每一部分,除了那部分是我的代码

// Programming 2
 // Mastermind

#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <string>
using namespace std;


struct fields{//the list of variables used in my program
int size = 5;;
int range = 9;
char lowest = '0';
string guess;
string answer;
int number;
int correct;
int position;
bool gameover = false;

};

void gameplay(fields & info);//declaring the function

int main()
{
fields game;

gameplay(game);//calling the function



system("pause");
return 0;
}

void gameplay(fields & info){//calling the structure into the function

srand(time(0));//to randomize number


info.answer = "";//getting the number
for (int i = 0; i < info.size; i++)
{
    char ch = info.lowest + rand() % info.range;
    info.answer += ch;
}


info.number = 1;
info.correct = 0;
info.position = 0;

while (!info.gameover)//using a while loop to let them go until they guess it
{
    cout << "Guess #" << info.number << ": Enter 5 numbers that are '0' through '9':  ";//asking them to guess
    cout << info.answer;
    cout << "\n";
    cin >> info.guess;

    if (info.guess == info.answer)//if the guess is right this will end the game
    {
        cout << "Right!  It took you " << info.number << " move";
        if (info.number != 1) cout << "s";
        cout << "." << endl;
        info.gameover = true;

    }


    int correctNumbers = 0;

    for (char const &ch : info.guess) //seeing if there are numebrs in the guess that  is in the answer
    {
        if (info.answer.find(ch) != string::npos)
        {
            ++correctNumbers;
        }
    }

    int const digits = 5;
    int correctPositions = 0;

    int correctPosition[digits];

    int test = 0;


        for (int i = 0; i < digits; ++i)//telling which numbers is correct and  displaying the 2 or 0 for number is correct or number is wrong 
        {


            if (info.answer[i] == info.guess[i])
            {
                ++correctPositions;
            }
            if (info.answer[i] == info.guess[i]){
                correctPosition[i] = 2;
                cout << correctPosition[i];


            }

            if (correctPosition[i] != 2){
                correctPosition[i] = 1;
                cout << correctPosition[i];
            }

            if (correctPosition[i] != 2 && correctPosition[i] != 1)){
                correctPosition[i] = 0;
                cout << correctPosition[i];
            }



        }

    cout << "\nYou have " << correctPositions << " numbers in the correct position " <<endl;
    cout << "You have " << correctNumbers <<" correct numbers in the wrong position"<<  endl;
    }
     cout << "GAME OVER\n\n";
    }

0 个答案:

没有答案