0

テキスト ファイルは、Web ブラウザーでゲームの状態を説明するために使用されています。したがって、nameWriter.WriteLine を次のようにフォーマットする必要があります。

Output to text file:
playerOneName, playerTwoName, _ , _ , _ , _ , _ , _ , _ , _

これは「ああ、これを書いてください!」のように聞こえるかもしれません。しかしいいえ、アンダースコアは空のフィールドであり、StreamWriter に置き換えられます。これは、三目並べ Web ゲームでプレーヤーの動きを追跡します。アンダースコアの代わりに何を使用して、そのスペースを読み書きできるようにすることができますか?

これが私の StreamWriter です。現在、プレーヤー名を追加するだけです。

出力をテキストにフォーマットする方法を教えてもらえますか?

多分それを配列に分けますか?配列DelimiterListを使用してコンマをキーアウトしますか?

    string[] lineParts... and reference the linePart[0-11] 
and then do a lineParts = line.Split(delimiterList)?

これが私の書き込みコードです。

private void WriteGame(string playerOneName, string playerTwoName, string[] cells)
    {
        StreamWriter gameStateWriter = null;
        StringBuilder sb = new StringBuilder();
        try
        {
            gameStateWriter = new StreamWriter(filepath, true);
            gameStateWriter.WriteLine(playerOneName + " , " + playerTwoName);
            string[] gameState = { playerOneName, 
            playerTwoName, null, null, null, null, 
    null, null, null, null, null };//I cannot use null, they will give me errors
            foreach (string GameState in gameState)
            {
                sb.Append(GameState);
                sb.Append(",");
            }
            gameStateWriter.WriteLine(sb.ToString());
        }
        catch (Exception ex)
        {
            txtOutcome.Text = "The following problem ocurred when writing to the file:\n"
               + ex.Message;
        }
        finally
        {
            if (gameStateWriter != null)
                gameStateWriter.Close();
        }
    }

最後に、playerOneName が既にテキスト ファイルにある場合、その後に playerTwoName を具体的に記述し、そこにあることを確認するにはどうすればよいですか?

Visual Studio '08 ASP.NET Web サイトとフォームの使用

4

2 に答える 2

3

まず、アンダースコアは空を意味する特別なものであり、コンマは区切り文字であるという事実を定義します。

const string EMPTY = "_";
const string DELIMITER = ",";

第二に、カンマと値の間にスペースを書かないでください。後で作業が難しくなります:

// removed spaces
gameStateWriter.WriteLine(playerOneName + DELIMITER + playerTwoName);

これで、GameState を作成する準備が整いました。

string[] gameState = { playerOneName, playerTwoName, EMPTY, EMPTY, EMPTY, EMPTY, 
                       EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,  };

プレーヤー 2 が既に存在するかどうかを確認するには、既存のファイルを開いて読み取り、2 番目のトークンが空でないかどうかを確認する必要があります。つまり、ファイルを読んだ場合です。

var line = "..."; // read the file until the line that .StartsWith(playerOne)
var playerTwo = line.Split(DELIMITER)[1];

if (playerTwo == EMPTY)
{
     // need to store the real playerTwo, otherwise leave as is
}
于 2012-04-13T22:59:05.230 に答える
0

コードを保持できますが、現在のコードでsb.Append(GameState);行うのではありません。sb.Append(GameState??"_");

「??」はC#の null 合体演算子null ?? "_"です。したがって、の結果は "_" であり、"SomeValue"??"_""SomeValue" です。

于 2012-04-13T23:33:01.557 に答える