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






4.94/5 (17投票s)
适用于 WinMobile 的简单名称拼图游戏
- 下载 shanuNamePuzzleWPF2010 - 104.6 KB
- 下载 shanuPuzzleWPF - 65.2 KB
- 下载 shanuNamePuzzleWinform - 54.3 KB
- 下载 ShanuNamePuzzleApp - 16 KB
引言
本文将介绍 Windows 10 技术预览版的新特性,以及如何使用 Visual Studio 2015 RC 创建一个简单的 Windows 通用应用姓名解谜游戏。
必备组件
- Visual Studio 2015。您可以在这里下载。(在我的示例中,我使用了 Visual Studio Community 2015 RC。)
- Windows 10 Mobile 预发行版 Microsoft 模拟器 (下载链接)
- 通用应用开发工具 (下载链接)
注意
在此示例程序中,我使用了 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 文件中,我附带了该代码文件夹的三个版本。是的,我已为以下平台开发了相同的应用程序:
- Windows 通用应用程序源文件
- WPF 源文件
- Windows 窗体源文件。
- 适用于 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 日:初始版本