【问题标题】:C# Array/Random Image Help for Memory Game记忆游戏的 C# 数组/随机图像帮助
【发布时间】:2011-07-15 15:20:09
【问题描述】:

我正在尝试创建一个游戏,用户将在其中看到一张图片,然后转到下一页并需要点击同一张图片。一种记忆游戏。我遇到的问题是随机排序数组,并能够确定他们点击了哪个图像。在我的页面上,我有五个随机填充的图像和一个提交按钮。理想情况下,我希望它检查以确保他们选择了一个,然后将其与选择的程序进行比较(在此示例中,为简单起见,我没有使用 post 或任何东西。我可以轻松编码,所以我只需要弄清楚为什么这不起作用)现在我只是随机选择一个值,然后尝试确定用户是否单击了同一个值。但有时我得到的结果好坏参半,我在我的 selvalue 和 programvalue 变量中得到相同的数字。谁能帮我?我在 c# 中编码

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
            {
                Random random = new Random();
                List<string> urls = new List<string> { };
                List<int> nums = new List<int> { };
                List<string> iconnames = new List<string> 
                    {
                        "images/verimage1.png", 
                        "images/verimage2.png", 
                        "images/verimage3.png", 
                        "images/verimage4.png", 
                        "images/verimage5.png" 
                    };
                int noiconlabel = random.Next(iconnames.Count);
                switch (noiconlabel)
                {
                    case 0:
                        {
                            iconnamelabel.Text = "Newspaper";
                            HiddenField2.Value = "1";
                            break;
                        }
                    case 1:
                        {
                            iconnamelabel.Text = "iPod";
                            HiddenField2.Value = "2";
                            break;
                        }
                    case 2:
                        {
                            iconnamelabel.Text = "Star";
                            HiddenField2.Value = "3";
                            break;
                        }
                    case 3:
                        {
                            iconnamelabel.Text = "Lock";
                            HiddenField2.Value = "4";
                            break;
                        }
                    case 4:
                        {
                            iconnamelabel.Text = "Die";
                            HiddenField2.Value = "5";
                            break;
                        }
                }
                for (int a = 0; a < 5; a++)
                {
                    int index = random.Next(iconnames.Count);
                    var name = iconnames[index];
                    urls.Add(name);
                    nums.Add(index + 1);
                    iconnames.RemoveAt(index);
                }

                Image1.ImageUrl = urls[0];
                Image1.CommandArgument = nums[0].ToString();
                Image2.ImageUrl = urls[1];
                Image2.CommandArgument = nums[1].ToString();
                Image3.ImageUrl = urls[2];
                Image3.CommandArgument = nums[2].ToString();
                Image4.ImageUrl = urls[3];
                Image4.CommandArgument = nums[3].ToString();
                Image5.ImageUrl = urls[4];
                Image5.CommandArgument = nums[4].ToString();

            }
    }

    protected void Image1_Click(object sender, ImageClickEventArgs e)
    {
        ImageButton img = (ImageButton)(sender);
        HiddenField1.Value = img.CommandArgument;

    }

    protected void Image2_Click(object sender, ImageClickEventArgs e)
    {
        ImageButton img = (ImageButton)(sender);
        HiddenField1.Value = img.CommandArgument ;
    }

    protected void Image3_Click(object sender, ImageClickEventArgs e)
    {
        ImageButton img = (ImageButton)(sender);
        HiddenField1.Value = img.CommandArgument;
    }

    protected void Image4_Click(object sender, ImageClickEventArgs e)
    {
        ImageButton img = (ImageButton)(sender);
        HiddenField1.Value = img.CommandArgument;
    }

    protected void Image5_Click(object sender, ImageClickEventArgs e)
    {
        ImageButton img = (ImageButton)(sender);
        HiddenField1.Value = img.CommandArgument;
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        string selvalue = HiddenField1.Value;
        string programvalue = HiddenField2.Value;

        if (selvalue == null | selvalue == "")
        {
            errorverlabel.Text = "<span style='color: red; font-size: 8pt;'>No Verification Image Selected, Please try again.</span>";
        }
        else
        {
            if (selvalue != programvalue)
            {
                errorverlabel.Text = "<span style='color: red; font-size: 8pt;'>Wrong Verification Image Selected, Please try again.</span>";
            }
        }
    }

}

【问题讨论】:

  • 你能澄清一下你遇到的实际问题吗?
  • 您是否考虑过实际创建图像数据库?您可以将它们作为数据集读取并从那里使用它们,您可以只使用 .mdf。不确定您正在创建什么类型的网站,但这可以作为 ASP.NET MVC 3 应用程序使用。
  • 你在使用 WPF 吗?窗体?还有什么?
  • @AresAvatar- 这显然是一个 ASP.NET 页面。此外他基本上说这是一个网站。
  • 您的某些图像 CommandArgument 可以具有相同的值。你不能保证它们有不同的,只是随机的——有时它们可​​能是相同的。这是故意的吗?

标签: c# asp.net arrays random


【解决方案1】:

你需要使用逻辑 || (OR) 运算符,而不是按位 | (OR) 运算符。

变化:

if (selvalue == null | selvalue == "")

if (selvalue == null || selvalue == "")

【讨论】:

  • 在这种情况下不会产生影响
猜你喜欢
  • 2015-07-30
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
  • 2012-05-05
  • 2011-12-13
  • 1970-01-01
相关资源
最近更新 更多