0

だから私は「三目並べ」コンソール ゲームを書きました。プレーヤーの名前を読み取り、それらをテキスト ファイルに保存し、テキスト ファイルからすべてのプレーヤーのリストを表示します (または表示することになっています)。ただし、すべてのプレーヤーの名前が表示されるわけではありません。表示名オプション (ケース 2) を直接選択すると、何も表示されません。ゲームを 1 回プレイして 2 を押すと、現在の 2 人のプレイヤーの名前のみが表示されます。そのリストにあるすべてのプレイヤーの名前を表示したい!! これが私のコードです( main () のケース2を見てください)また、ケース3は予期しない結果を表示しています。助けてください

#include <iostream>
#include <fstream>
#include <stdio.h>
#include <string>
void user_info ();
void gameplay();
using namespace std;
    int turn[9],Row,Col;
    const int row=3,col=3;
    string player1;
    string player2;

void main()
{
    int x;
    cout<<endl;
    cout<<"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n";
    cout<<"$  Press 1 to play game                 $\n";
    cout<<"$  Press 2 to view the list of all players  $\n";
    cout<<"$  Press 3 to EXIT                      $\n";
    cout<<"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n\n";
    cin>>x;
    switch(x)
    {
    case 1:
        {

            cout<<"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n";
            cout<<"$                                                                             $\n";
            cout<<"$                            LETS PLAY TIC TAC TOE                            $\n";
            cout<<"$                                                                             $\n";
            cout<<"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n\n";
            user_info ();
            gameplay ();
            cout<<endl<<endl<<endl;
            main ();
        }
    case 2:
        {

            ifstream infile("file.txt",ios::in);
            cout<<"The name of players are "<<endl<<player1<<"\t"<<player2<<endl;;
            cout<<endl<<endl<<endl;
            main ();
        }
    case 3:
        {
            cout<<"Goodbye"<<endl;
            break;
        }
    default:
        {
            cout<<"Invalid choice\n";
            main();
        }
        }
    }
void user_info ()
{
    ofstream infile("file.txt",ios::app);
    cout<<"player 1 enter your name :";
    cin>>player1;
    cout<<"\n\nplayer 2 enter your name :";
    cin>>player2;

    cout<<endl<<endl;
    cout<<player1<<"'s symbol is 'O'\n\n";
    cout<<player2<<"'s symbol is 'X'\n\n";
    cout<<endl<<endl;
    infile<<player1<<"\t"<<player2<<endl;

}
void gameplay ()
{
    char arr[row][col]={'_','_','_','_','_','_','_','_','_'};
    cout<<endl<<endl;
    for(int i=0;i<3;i++)
        {
            for(int j=0;j<3;j++)
            {
                cout<<arr[i][j]<<"\t";
            }
            cout<<endl<<endl;
        }
    for(int k=1;k<=9;k++)
    {       
turn :  cout<<endl; 
        if(k%2!=0)
        {
        cout<<player1<<" will enter row and column :";
        cin>>turn[k];
        if(turn[k]<=33)
        {
            Row=turn[k]/10-1;
            Col=turn[k]%10-1;
        }
        else 
        {
            cout<<"wrong input...";
            goto turn;
        }

            arr[Row][Col]= 'O';


        for(int i=0;i<3;i++)
        {
            for(int j=0;j<3;j++)
            {
                cout<<arr[i][j]<<"\t";
            }
            cout<<endl<<endl;
        }
        if (arr[0][0]=='O' && arr[0][0]==arr[1][1] && arr[1][1]==arr[2][2]) {cout<<player1<<" wins"<<endl;break;}
        if (arr[2][0]=='O' && arr[2][0]==arr[1][1] && arr[1][1]==arr[0][2]) {cout<<player1<<" wins"<<endl;break;}
        if (arr[0][0]=='O' && arr[0][0]==arr[1][0] && arr[1][0]==arr[2][0]) {cout<<player1<<" wins"<<endl;break;}
        if (arr[0][1]=='O' && arr[0][1]==arr[1][1] && arr[1][1]==arr[2][1]) {cout<<player1<<" wins"<<endl;break;}
        if (arr[0][2]=='O' && arr[0][2]==arr[1][2] && arr[1][2]==arr[2][2]) {cout<<player1<<" wins"<<endl;break;}
        if (arr[0][0]=='O' && arr[0][0]==arr[0][1] && arr[0][1]==arr[0][2]) {cout<<player1<<" wins"<<endl;break;}
        if (arr[1][0]=='O' && arr[1][0]==arr[1][1] && arr[1][1]==arr[1][2]) {cout<<player1<<" wins"<<endl;break;}
        if (arr[2][0]=='O' && arr[2][0]==arr[2][1] && arr[2][1]==arr[2][2]) {cout<<player1<<" wins"<<endl;break;}

        if (k== 9){cout<<"The game is DRAW!!"<<endl; break;} //sum=9 because there are only 9 boxes in the game


        }
    //big   
        else
        {
turn2 :      cout<<endl;    
            cout<<player2<<" will enter row and column :";
            cin>>turn[k];
            if(turn[k]<=33)
            {
                Row=turn[k]/10-1;
                Col=turn[k]%10-1;
            }
            else 
            {
                cout<<"wrong input...";
                goto turn2;
            }


                arr[Row][Col]= 'X';



            for(int i=0;i<3;i++)
            {
                for(int j=0;j<3;j++)
                {
                    cout<<arr[i][j]<<"\t";
                }
                cout<<endl<<endl;
            }
        }
            if (arr[0][0]=='X' && arr[0][0]==arr[1][1] && arr[1][1]==arr[2][2]) {cout<<player2<<" wins"<<endl;break;}
            if (arr[2][0]=='X' && arr[2][0]==arr[1][1] && arr[1][1]==arr[0][2]) {cout<<player2<<" wins"<<endl;break;}
            if (arr[0][0]=='X' && arr[0][0]==arr[1][0] && arr[1][0]==arr[2][0]) {cout<<player2<<" wins"<<endl;break;}
            if (arr[0][1]=='X' && arr[0][1]==arr[1][1] && arr[1][1]==arr[2][1]) {cout<<player2<<" wins"<<endl;break;}
            if (arr[0][2]=='X' && arr[0][2]==arr[1][2] && arr[1][2]==arr[2][2]) {cout<<player2<<" wins"<<endl;break;}
            if (arr[0][0]=='X' && arr[0][0]==arr[0][1] && arr[0][1]==arr[0][2]) {cout<<player2<<" wins"<<endl;break;}
            if (arr[1][0]=='X' && arr[1][0]==arr[1][1] && arr[1][1]==arr[1][2]) {cout<<player2<<" wins"<<endl;break;}
            if (arr[2][0]=='X' && arr[2][0]==arr[2][1] && arr[2][1]==arr[2][2]) {cout<<player2<<" wins"<<endl;break;}

            if (k== 9){cout<<"The game is DRAW!!!"<<endl; break;} //sum=9 because there are only 9 boxes in the game



    }

}
4

1 に答える 1

0

2番目のケースにrdbufを追加します。コードは次のようになります。

case 2:
    {

        ifstream infile("file.txt",ios::in);
        cout<<"The name of players are "<<endl<<player1<<"\t"<<player2<<endl;;
        **cout << infile.rdbuf()<<endl;**
        cout<<endl<<endl<<endl;
        main ();
    }

rdbufすべてのファイルを読み取り、coutあなたの助けを借りて内容をコンソールにダンプします

プレーヤー名をファイルに書き込むために、次のようにuser_infoを変更します。

void user_info ()
{
    ofstream infile("file.txt",ios::app);
    cout<<"player 1 enter your name :";
    cin>>player1;
    infile << player1;
    cout<<"\n\nplayer 2 enter your name :";
    infile << player2;
    cin>>player2;

    cout<<endl<<endl;
    cout<<player1<<"'s symbol is 'O'\n\n";
    cout<<player2<<"'s symbol is 'X'\n\n";
    cout<<endl<<endl;
    infile<<player1<<"\t"<<player2<<endl;

}
于 2013-01-12T13:50:36.320 に答える