1

私は完全に初心者のように聞こえるかもしれませんが、ストレスがたまりすぎて、適切に研究を行うことができません.

基本的に、リストに127の道路名があり、それらをラベルにランダムな順序で1つずつ表示したいのですが、正しい場合は緑色のボックスに1つずつ増加し、間違っている場合は黄色のボックスに増加しますが、同じラベルに正しい答えが表示され、送信ボタンを押すと次の道路名に移動します。これが私が今まで行ったことです。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        RL = RoadLocationNames();
        i = 1;
        red = 1;
        y = 1;
    }

    List<KeyValuePair<string, string>> RL;
    int i,red, y;

    private void button1_Click(object sender, EventArgs e)
    {
        Random random = new Random();
        int r = random.Next(RL.Count);

        lbLocation.Text = RL.ElementAt(r).Key;

        if (tbRoad.Text.ToLower() == RL.ElementAt(r).Value.ToLower())
        {
            Green.Text = i.ToString();
            i++;
            RL.Remove(RL.ElementAt(r));
        }
        else
        {
            label3.Text = RL.ElementAt(r).Value.ToString();
            Red.Text = i.ToString();
            i++;
        }

        Yellow.Text = y.ToString();
        y++;

    }

    public List<KeyValuePair<string, string>> RoadLocationNames()
    {
        List<KeyValuePair<string, string>> RLNs = new List<KeyValuePair<string,string>>();
        RLNs.Add(new KeyValuePair<string, string>("Road Name", "Location Name"));

        return RLNs;
    }

現在、インターネットが非常に遅いため、フォームのスクリーンショットをほとんどアップロードできませんが、試してみます. 明日試験があり、このアプリを使用して準備をしたいのですが、よくわかりません.

  • 代わりに道路名を表示する方法 (道路名と私のコードが現在行っていることであるその答え) は、ボタン送信ですべてを実行しているためである可能性があります。ロジックとコードの助けが必要です (申し訳ありませんが急いでいます)

コードで迅速な対応が必要です

4

1 に答える 1

1

はい、それはあなたが提出物ですべてをやっているからです。コードを次のように分割することをお勧めします。

  1. 初期化 - 道路の名前と場所のリストを作成し、セットアップを実行します (次のステップ)。
  2. セットアップ - ユーザーの現在の回答をクリアし、道路名/場所のペアをランダムに選択して、質問部分をフォームに表示します。
  3. ユーザー送信 - 回答を確認し、適切なカウンターを増やします。回答が正しい場合はセットアップを再度実行し、そうでない場合は回答がどうあるべきかを表示します。

初期化は、フォーム コンストラクターで行うことができます。セットアップはプライベート メソッドである必要があります。ユーザー送信は、クリック ハンドラーである必要があります。

(おそらく間違っている、正しい答えと間違った答えの両方をインクリメントiしているようです。これが、そのような間違いをより明確にするために、1文字よりも適切な変数名を選択する理由です。)

于 2012-11-20T08:39:42.157 に答える