65.9K
CodeProject 正在变化。 阅读更多。
Home

Windows 10 通用应用程序名称拼图游戏

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.94/5 (17投票s)

2015年7月10日

CPOL

9分钟阅读

viewsIcon

50508

downloadIcon

1165

适用于 WinMobile 的简单名称拼图游戏

引言

本文将介绍 Windows 10 技术预览版的新特性,以及如何使用 Visual Studio 2015 RC 创建一个简单的 Windows 通用应用姓名解谜游戏。

必备组件

  1. Visual Studio 2015。您可以在这里下载。(在我的示例中,我使用了 Visual Studio Community 2015 RC。)
  2. Windows 10 Mobile 预发行版 Microsoft 模拟器 (下载链接)
  3. 通用应用开发工具 (下载链接)

注意

在此示例程序中,我使用了 Windows 10 技术预览版操作系统。如果您有 Windows 10 技术预览版,则可以按照我的步骤操作。如果您有 Windows 8,则可以下载 Windows 8 模拟器并按照相同的步骤创建您的第一个通用应用。(如果您已安装 Windows 8,则可以轻松地将您的系统更新到 Windows 10 技术预览版。)

Windows 10 技术预览版

Windows 10 操作系统的一些新特性,简单易用。

Windows 开始菜单:Windows 10 的开始菜单比 Windows 8 更简洁易用,它同时包含了按字母顺序排列的 Windows 开始程序列表和应用列表,如下图所示:

按字母顺序排列的程序,方便访问

开始程序列表按字母顺序显示,每个字母作为标题。例如,如果我们点击程序列表中的一个字母,它将显示所有带有数字的字母。

如果我们点击 V,它将显示所有以 V 开头的程序,例如 Visual Studio 2015,如下所示:

Windows 程序安装和卸载列表:在 Windows 10 中,所有已安装的程序列表都显示在 **设置** > **系统** > **应用和功能** 下,然后等待几秒钟,它将在右侧加载所有已安装的程序列表。

从 **开始菜单** 中点击 **设置**。

点击第一个图标中的 **系统** (抱歉,我使用的操作系统是韩语,所以文本都是韩语,但我已在此为您翻译,因为第一个图标是系统)。

在左侧菜单中点击 **应用和功能**。这将在右侧显示所有已安装的程序。

等待几秒钟,所有已安装程序的列表将逐个加载到右侧。

我希望这些简单基本的信息能帮助您首次开始使用 Windows 10 技术预览版。

Windows 通用应用程序

以下说明了我们为何需要通用应用程序。

如果我们想要一个可以在任何 Windows 设备上运行的应用程序,例如 Windows Phone 和 Windows 8 或 Windows 10 操作系统,我们可以开发一个单一的应用程序,使用 Windows 通用应用程序使其可以在任何 Windows 设备上运行。

什么是姓名解谜游戏

姓名解谜游戏是一种问答游戏,玩家需要从隐藏的字符中选择出名字的全部字符。我有一组 12 个字符,例如“ABSDEHGZNXCU”。在这组总字符中,添加了我的名字字符“SHANU”。每当玩家点击“新解谜游戏”按钮时,我将洗牌所有字符,并动态加载带有“?”符号的按钮,表示所有字符。在这里,我们可以看到当玩家点击新游戏按钮时。我将动态加载 12 个带有“?”符号作为按钮文本的按钮。现在玩家将不知道哪个按钮包含我的名字字符。

当他们点击每个按钮时,我将显示按钮文本中隐藏的字符。如果按钮包含与我的名字相同的字符,我将显示我的名字字符在该按钮上,并在顶部显示玩家已正确选择的字符。如果玩家点击了不包含我的名字字符的其他字符,我将显示“: )”符号在按钮上,因为玩家未能选择我的名字字符。

请注意,玩家只有 9 次机会(在 12 个按钮中)。玩家必须在 9 次机会内找到我名字的所有字符。如果他们在 9 次机会内找到我的名字的所有字符,则他们赢得了解谜游戏。他们可以开始新游戏并享受游戏。每次玩家点击新游戏时,我都会洗牌字符,因此前一个按钮位置的字符在下次将不再相同。如果玩家未能在 9 次机会内找到我的名字字符,则他们输掉游戏。

注意

在本文中,您可以找到源代码 zip 文件。在 zip 文件中,我附带了该代码文件夹的三个版本。是的,我已为以下平台开发了相同的应用程序:

  1. Windows 通用应用程序源文件
  2. WPF 源文件
  3. Windows 窗体源文件。
  4. 适用于 Visual Studio 2010 的 WPF 源代码

所有这三个应用程序都已使用 Visual Studio 2015 RC 开发。下载代码,您可以根据您的需求更改逻辑并尽情享用。

Using the Code

在这里,我们可以看到使用 Visual Studio 2015 RC 创建和运行第一个通用应用程序的简单过程。

点击 **开始**,然后选择 **Visual Studio 2015**,然后选择 **Visual Studio 2015 RC**。点击 **新建项目**,然后点击 **Windows**,然后点击 **Windows 通用**,然后点击 **下载 Windows 通用工具**。

请注意,如果您尚未安装 Windows 通用工具,则首次需要按照以下方式下载并安装它。

当您点击 **确定** 时,将打开网站链接以下载用于 Windows 通用应用开发的工具。

在该网站的左侧,您可以看到,如果您未安装 Visual Studio 2015 RC,则可以通过点击 **获取工具** 来下载并安装。

但在我的情况下,我已经安装了 Visual Studio 2015 RC,所以现在我点击右侧的 **添加工具** 按钮来下载并安装用于开发 Windows 通用应用的工具。

安装工具后,打开 Visual Studio 2015 RC,然后点击 **新建项目**,然后点击 **Windows**,然后点击 **Windows 通用**,然后点击 **空白应用** 并输入您的应用名称。

注意

在这里,安装用于 Windows 通用应用开发的工具后,我们可以看到一些新的应用程序列表,如 **空白应用**、**类库** 等。现在,由于我们需要开发通用应用程序,我们选择 **空白应用**,输入我们的项目名称,然后点击 **确定**。

现在,在这里,我们可以看到我们的第一个通用应用程序开发屏幕。默认情况下,主屏幕名称将是 _Mainpage.xaml_。

此处,设计页面的扩展名是 **可扩展应用程序标记语言** (**XAML**)。如果您使用过 WPF,那么使用通用应用程序会更容易,因为与 WPF 一样,所有窗体文件都是 XAML。

根据您的需求添加控件,并编写第一个代码以显示您的输出。在此示例中,我使用了一个 `Textblock` (`Textblock` 类似于 `Label` 控件)、`TextBox`、`Button` 和一个 `grid` 控件。`Grid` 控件是主要的,因为每当用户点击 **新游戏** 按钮时,我都会将按钮动态添加到 `grid` 中。

要显示 `Messagebox`,我们需要导入 `Windows.UI.Popups`。

公共变量

每个变量都已注释说明其用途。

String myName = "SHANU";        // This is used to find the name. Here I have used “Shanu” 
                                // as my name. You can change as per your name or any word.

        Button[] puzzleButtons; // I have created and declared the button arrays to 
                                // dynamically load the buttons to grid depending on 
                                // total NamePuzzle Character length.

 int CharCount = 0;             // To check and maintain the user click on each button

 int nameCharCount = 0;         // To check and maintain correct character clicked count.
                                // if this equals myName.length, then the user won the game.

        int findvalue = 9;      // To check the result count which is less than the 
                                // find value, here I have used 9 so the user can check 
                                // their name trail only for 9 times.

新游戏按钮点击事件

在“新游戏”按钮点击事件中,我将检查总的 `namePuzzle` 字符,并将按钮动态添加到网格中。对于动态添加的按钮,我将创建一个点击事件来检查每个谜题的结果。

private void button_Click(object sender, RoutedEventArgs e)
        {
            string namePuzzle = "ABSDEHGZNXCU";

            // to shuffle the character and reorder the characters for new Puzzle Game start

            Random rnd = new Random();

            string findmyNameChar = new string(namePuzzle.ToCharArray().
                            OrderBy(s => (rnd.Next(2) % 2) == 0).ToArray());

            int xVal = 10;
            int yVal = 20;
            int boxWidth = (Convert.ToInt32(pnlButtons.Width) / 3) - 20;
            int boxHeight = 54;
            pnlButtons.Children.Clear();
            CharCount = 0;
            nameCharCount = 0;
            lblmyNameChars.Text = "";


         MessageDialog dlg = new MessageDialog("Note : you have only 9 Chances to 
                find my name and my Name total Character is 5", "Find My Name");

            dlg.ShowAsync();

            puzzleButtons = new Button[findmyNameChar.Length];
            int column = 0;
            int rows = 0;

            for (int i = 0; i < findmyNameChar.Length; i++)
            {
                puzzleButtons[i] = new Button();
                puzzleButtons[i].Name = findmyNameChar[i].ToString();
                puzzleButtons[i].FontSize = 24;
                puzzleButtons[i].Background = new SolidColorBrush(Windows.UI.Colors.Orange);
                puzzleButtons[i].Foreground = new SolidColorBrush(Windows.UI.Colors.Black);
                puzzleButtons[i].Width = boxWidth;
                puzzleButtons[i].Height = boxHeight;
                puzzleButtons[i].Content = "?";
                puzzleButtons[i].HorizontalAlignment = HorizontalAlignment.Left;
                puzzleButtons[i].VerticalAlignment = VerticalAlignment.Top;
                puzzleButtons[i].Margin = new Thickness(xVal, yVal, 0, 0);
                puzzleButtons[i].Click += new RoutedEventHandler(btnPuzzleArray_Click);

                pnlButtons.Children.Add(puzzleButtons[i]);

                xVal = xVal + boxWidth + 10;
                column = column + 1;

                if (xVal + 100 >= pnlButtons.Width)
                {
                    rows = rows + 1;
                    column = 0;
                    xVal = 10;
                    yVal = yVal + boxHeight + 20;
                }
            }
        }

在动态创建的按钮点击事件中,我将检查点击的字符是否在 `Name` 中。如果字符存在于名字中,则我将增加计数。如果计数等于名字的总长度,则我将显示一个消息框,告知玩家已赢得解谜游戏。

        private void btnPuzzleArray_Click(object sender, RoutedEventArgs e)
        {
            Button tb = (Button)sender;
            CharCount = CharCount + 1;

            if (CharCount > findvalue)
            {
                if (nameCharCount >= myName.Length)
                {
           MessageDialog dlg = new MessageDialog
           ("Wow You find my name with in your trial limit ", "Find My Name");
                    dlg.ShowAsync();                
                }
                else
                {
                    MessageDialog dlg = new MessageDialog
                    ("Sorry your can try only 9 time and start New game", "Find My Name");
                    dlg.ShowAsync();                  

                }
                return;
            }

            if (myName.ToUpperInvariant().Contains(tb.Name.ToString()) == true)
            {
                tb.Content = tb.Name.ToString();
                tb.IsEnabled = false;
                tb.Foreground = new SolidColorBrush(Windows.UI.Colors.Green);
                nameCharCount = nameCharCount + 1;
                lblmyNameChars.Text = lblmyNameChars.Text + tb.Name.ToString();
                lblmyNameChars.Visibility = Visibility.Visible;
            }
            else
            {
                tb.Content = ":(";
                tb.IsEnabled = false;
                tb.Foreground = new SolidColorBrush(Windows.UI.Colors.Red);
            }

            if (nameCharCount >= myName.Length)
            {
                MessageDialog dlg = new MessageDialog
                ("Wow You find my name with in your trial limit ", "Find My Name");

                dlg.ShowAsync();        
                return;
            }
        }

现在我们的简单应用程序已经准备好了。我们现在可以在 Windows Phone 上运行我们的应用程序,也可以作为普通的桌面应用程序运行。

正如我之前提到的,Windows 通用应用程序可以在任何 Windows 设备上运行。

如果您尚未安装 Windows 模拟器,请下载并安装到您的计算机上,以便在 Windows Phone 模拟器中运行示例应用程序。

下载并安装模拟器。我使用的是 Windows 10 模拟器。

安装模拟器后,我们打开程序,现在在 **运行** 按钮旁边,我们可以选择设备类型来运行我们的程序。

在本地计算机上运行

要将我们的应用程序作为普通的 Windows 输出在本地计算机上显示,我们选择本地计算机并点击 **运行**。我们可以看到输出显示为我们普通的桌面应用程序。

在 Windows 模拟器中运行

选择 **模拟器** 并点击 **运行**。在这里,我使用的是 Emulator 10.0.10 UVGA 4 inch。

第一次运行时,请等待几秒钟,因为 Windows 模拟器需要打开并初始化操作系统。

模拟器中的操作系统启动后,我们的应用程序将在模拟器中运行。

用户可以通过点击“新姓名解谜游戏”按钮来开始解谜游戏。我将向用户显示一个消息框,在用户点击关闭按钮后,解谜游戏将开始。

从加载的按钮中,用户可以点击任何按钮来查找我的名字字符。正如我们在这里看到的,如果我的名字字符被找到在点击的按钮中。然后我将显示它的字符,例如,这里我们看到“S”,而我的名字以外的其他字符的按钮将显示为“:(“。

如果在九次尝试内找到了名字中的所有字符,我将通过消息框显示一条获胜消息。

如果在九次尝试内未能找到名字中的所有字符,我将显示失败消息,并开始新游戏以进行新的尝试。

关注点

希望您喜欢我的第一个姓名解谜游戏 Windows 手机应用。下载它,从源代码中更改为您自己的名字,然后尽情玩耍。如果您喜欢这个姓名解谜游戏,请为本文投票。

历史

  • 2015 年 7 月 10 日:初始版本
© . All rights reserved.