C# SDK windows phone C random.Next();

C# SDK windows phone C random.Next();,c#,xaml,random,sdk,C#,Xaml,Random,Sdk,我在做这组代码的时候被卡住了,我试着做一个随机的。接下来我的手机游戏,一切正常,但我面临着一个逻辑错误 我的游戏有两个左箭头和右箭头,游戏以一个随机图片开始,该图片可以是左箭头或右箭头,如果出现arrow left>,我将必须按btnRight键获取点,对于我的随机箭头。下一步,0为btnLeft,1为btnRight。问题是当第一张图片是随机生成的,比如说是左箭头,当我按下btn时,我已经按下了下一个随机箭头,这意味着屏幕可能会显示左箭头,但它已经生成了下一个随机数,但当我按下btnLeft时

我在做这组代码的时候被卡住了,我试着做一个随机的。接下来我的手机游戏,一切正常,但我面临着一个逻辑错误

我的游戏有两个左箭头和右箭头,游戏以一个随机图片开始,该图片可以是左箭头或右箭头,如果出现arrow left>,我将必须按btnRight键获取点,对于我的随机箭头。下一步,0为btnLeft,1为btnRight。问题是当第一张图片是随机生成的,比如说是左箭头,当我按下btn时,我已经按下了下一个随机箭头,这意味着屏幕可能会显示左箭头,但它已经生成了下一个随机数,但当我按下btnLeft时,屏幕仍然显示左箭头,我没有得分,箭头变为右>>,这意味着我只丢了一分,我该如何解决这个问题

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Navigation;
    using Microsoft.Phone.Controls;
    using Microsoft.Phone.Shell;
    using System.Windows.Threading;
    using System.Windows.Media.Imaging;


    namespace madAssignment
    {
        public partial class gamePlay : PhoneApplicationPage
        {
            int counter = 1000000;
            DispatcherTimer timer;

            int count = 0;

            public gamePlay()
            {
                InitializeComponent();

                timer = new DispatcherTimer();
                timer.Interval = TimeSpan.FromSeconds(0.1);
                timer.Tick += timer_Tick;
                // Sample code to localize the ApplicationBar
                //BuildLocalizedApplicationBar();
            }

            void timer_Tick(object sender, EventArgs e)
            {
                //int num;
                counter -= 1;
                txtCount.Text = counter.ToString();

                if(Convert.ToInt32(txtCount.Text) == 0)
                {
                    timer.Stop();

                    Uri uri = new Uri("/gameEnd.xaml", UriKind.Relative);
                    this.NavigationService.Navigate(uri);
                }
            }

    int rand()
    {
        Random r = new Random();

        int p = 1;

        if(p == 0)
        {
            imgLeft.Visibility = Visibility.Visible;
            imgRight.Visibility = Visibility.Collapsed;
        }
        else
        {
            imgLeft.Visibility = Visibility.Collapsed;
            imgRight.Visibility = Visibility.Visible;
        }

        int i = r.Next(0, 2);

        return i;
    }

    private void btnTimerStart_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        imgLeft.Visibility = Visibility.Collapsed;
        imgRight.Visibility = Visibility.Collapsed;

        timer.Start();

        rand();

    }

    private void btnLeft_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        if (rand() == 0)
        {
            count += 1;
            txtScore.Text = count.ToString();
        }
        else
        {
            count -= 1;
            txtScore.Text = count.ToString();
        }
    }

    private void btnRight_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        if(rand() == 1)
        {
            count += 1;
            txtScore.Text = count.ToString();
        }
        else
        {
            count -= 1;
            txtScore.Text = count.ToString();
        }
    }
}

}

您面临的问题是,轻敲按钮后会生成一个随机数

实际上,您要做的是为该轮生成随机数,将其存储在实例属性中,处理输入,然后生成并更新按钮的可见性

同样在rand方法中,您将p变量显式设置为1,因此这将始终导致左侧按钮不显示,右侧按钮可见。我猜这不是你想要的能见度

如果你需要更多的帮助,请评论这个答案


如果这解决了您的问题,请将其标记为已接受的答案。

对不起,我是SDK的初学者。我知道你想教我什么,但我自己编程还不够好,因为你可以看到这些代码花了我几天的时间。你能告诉我存储实例和处理输入和生成的代码吗。谢谢你提到rand方法,我正在测试一些东西,这不是问题,非常感谢。请发布你的类中的所有代码,也可能是调用代码,以便我能够更好地帮助你。您共享的代码不足以准确理解您在做什么。您好,我已经编辑了,呃,这是我在游戏页面上的代码,所有这些代码,您调用代码先生是什么意思?