Win8 应用开发——阿狸 小项目

  阿狸连连看

 

 

简介:

        连连看小游戏,大多是益智小游戏,玩家只要将相同的两张牌点击就可以消除,规则简单容易上手。游戏速度节奏快,画面清晰可爱,适合细心的玩家。丰富的道具和公共模式的加入,增强游戏的竞争性。多样式的地图,使玩家在各个游戏水平都可以寻找到挑战的目标,长期地保持游戏的新鲜感。

 

 部分代码:

 

using NotificationsExtensions.TileContent;
using NotificationsExtensions.ToastContent;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Storage;
using Windows.UI.Notifications;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Imaging;
using Windows.UI.Xaml.Navigation;

// “空白页”项模板在 http://go.microsoft.com/fwlink/?LinkId=234238 上有介绍

namespace Test
{
    /// <summary>
    /// 可用于自身或导航至 Frame 内部的空白页。
    /// </summary>
    public sealed partial class Page6 : Page
    {
        private int clos = 10;         定义一个10行10列
        private int rows = 10;
        int i = 0;
        private Image ClickImg = new Image();
        DispatcherTimer tim = new DispatcherTimer();
        public Page6()
        {
            this.InitializeComponent();
            // 我们将为设置面板添加三个命令
            // 分别为 首选项,用户反馈,关于
            Windows.UI.ApplicationSettings.SettingsCommand cmd1 = new Windows.UI.ApplicationSettings.SettingsCommand("1", "首选项", c => { });
            Windows.UI.ApplicationSettings.SettingsCommand cmd2 = new Windows.UI.ApplicationSettings.SettingsCommand("2", "用户反馈", c => { });
            Windows.UI.ApplicationSettings.SettingsCommand cmd3 = new Windows.UI.ApplicationSettings.SettingsCommand("3", "关于本应用", c => { });
            // 命令是在CommandsRequested事件中添加的
            Windows.UI.ApplicationSettings.SettingsPane.GetForCurrentView().CommandsRequested += (sp, arg) =>
            {
                arg.Request.ApplicationCommands.Add(cmd1);
                arg.Request.ApplicationCommands.Add(cmd2);
                arg.Request.ApplicationCommands.Add(cmd3);
            };

        }

        /// <summary>
        /// 在此页将要在 Frame 中显示时进行调用。
        /// </summary>
        /// <param name="e">描述如何访问此页的事件数据。Parameter
        /// 属性通常用于配置页。</param>
        protected async override void OnNavigatedTo(NavigationEventArgs e)
        {
            if(e.NavigationMode==NavigationMode.New){
               
               
                ///给Grid添加10列
                for (int i = 0; i < 10; i++)
                {
                    grid1.ColumnDefinitions.Add(new ColumnDefinition());
                }
                ///给 Grid添加10行
                for (int j = 0; j < 10; j++)
                {
                    grid1.RowDefinitions.Add(new RowDefinition());
                }
                tx1.Text = (clos * rows).ToString();
                ///获取程序中图标文件
                StorageFolder InstallFolder = Package.Current.InstalledLocation;获得程序的安装路径
                var ImgFolder = await InstallFolder.GetFolderAsync("images2");
                var ImgFiles = await ImgFolder.GetFilesAsync();   获得Images文件夹下的图片
                List<string> ImgList = new List<string>();         ///将读取的图片文件添加到List中
                foreach (var ImgFile in ImgFiles)
                {
                    string FilePath = "ms-appx:///images2/" + ImgFile.Name;
                    ImgList.Add(FilePath);
                }
                ///总数10*10=100
                ///那么100/2=50
                List<string> ImgCount = new List<string>();
                for (int k = 0; k < rows * clos / 2; k++)
                {
                    int ListNum = new Random(k + DateTime.Now.Millisecond).Next(ImgList.Count - 1);
                    ImgCount.Add(ImgList[ListNum]);   添加两次  方便配对的
                    ImgCount.Add(ImgList[ListNum]);
                }
                到此100个配对的图标已OK
                ///现在要将其显示到界面上来
                for (int i = 0; i < rows; i++)
                {
                    for (int j = 0; j < clos; j++)
                    {
                        Image img = new Image();
                        img.Name = i.ToString() + j.ToString();
                        int SourceNum = new Random(i + j + DateTime.Now.Millisecond).Next(ImgCount.Count - 1);
                        BitmapImage bitmap = new BitmapImage(new Uri(ImgCount[SourceNum]));
                        ImgCount.RemoveAt(SourceNum);
                        img.Source = bitmap;
                        img.Tapped += img_Tapped;
                        grid1.Children.Add(img);
                        Grid.SetColumn(img, i);
                        Grid.SetRow(img, j);
                    }
                }
            }
        }

        void tim_Tick(object sender, object e)
        {
            i++;
            tx2.Text = i + " 秒";
        }


        void img_Tapped(object sender, TappedRoutedEventArgs e)
        {
            ///获得当前小图标
            Image Img = sender as Image;
            if (ClickImg.Source == null)
            {
                ClickImg = Img;
            }
            else if (((Windows.UI.Xaml.Media.Imaging.BitmapImage)(ClickImg.Source)).UriSource != ((Windows.UI.Xaml.Media.Imaging.BitmapImage)(Img.Source)).UriSource)
            {
                ClickImg = Img;
            }
            else
            {
                ///如果本次点击的图标与前面储存的ClickImg相同,则让两个小图标隐藏
                if (((((Windows.UI.Xaml.Media.Imaging.BitmapImage)(ClickImg.Source)).UriSource == ((Windows.UI.Xaml.Media.Imaging.BitmapImage)(Img.Source)).UriSource)) && (Img.Name != ClickImg.Name))
                {
                    ClickImg.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                    Img.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                    ClickImg = new Image();

                    ///处理一下clos*rows=100个图标点击完成给予简单提示
                    if ((Convert.ToInt32(tx1.Text) - 2) > 0)
                    {
                        tx1.Text = (Convert.ToInt32(tx1.Text) - 2).ToString();
                    }
                    else
                    {
                        MessageDialog MsgDig = new MessageDialog("恭喜,您已通过!");
                        tx1.Text = "0";
                        tim.Stop();
                        MsgDig.ShowAsync();
                    }

                }
            }
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            tim.Interval = TimeSpan.FromMilliseconds(1000);
            tim.Tick += tim_Tick;
            tim.Start();
        }

    }
}


布局: 

<Page
    x:Class="Test.Page6"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Test"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <Grid x:Name="grid1" Width="800" Height="600"></Grid>
        <TextBlock HorizontalAlignment="Left" Margin="35,21,0,0" TextWrapping="Wrap" Text="剩余:" VerticalAlignment="Top" Height="24" Width="90" FontSize="24"/>
        <TextBlock x:Name="tx1" HorizontalAlignment="Left" Margin="130,21,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Height="24" Width="113" TextAlignment="Center" FontSize="24"/>
        <TextBlock HorizontalAlignment="Left" Margin="35,59,0,0" TextWrapping="Wrap" Text="时间:" VerticalAlignment="Top" Height="24" Width="90" FontSize="24"/>
        <TextBlock x:Name="tx2" HorizontalAlignment="Left" Margin="130,59,0,0" TextWrapping="Wrap" Text="0 秒" VerticalAlignment="Top" Width="113" Height="32" FontSize="24" TextAlignment="Center"/>
        <Button Content="开始" HorizontalAlignment="Left" Margin="35,100,0,0" VerticalAlignment="Top" Height="57" Width="139" Background="#B311DABF" Click="Button_Click_1"/>
    </Grid>
</Page>


 

天气预报

 

 

简介:

      调用webService ,解析xml文件,输入城市名称,可以查询天气预报..

 部分代码:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using Windows.ApplicationModel;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Storage;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using System.Xml;
using Windows.Data.Xml.Dom;

// “空白页”项模板在 http://go.microsoft.com/fwlink/?LinkId=234238 上有介绍

namespace Test
{
   
    /// <summary>
    /// 可用于自身或导航至 Frame 内部的空白页。
    /// </summary>
    public sealed partial class Page5 : Page
    {
        List<Traffic> list2 = new List<Traffic>();
        public Page5()
        {
            this.InitializeComponent();
        }

        /// <summary>
        /// 在此页将要在 Frame 中显示时进行调用。
        /// </summary>
        /// <param name="e">描述如何访问此页的事件数据。Parameter
        /// 属性通常用于配置页。</param>
        protected async override void OnNavigatedTo(NavigationEventArgs e)
        {
            if(e.NavigationMode==NavigationMode.New){
                StorageFolder sfloder = Package.Current.InstalledLocation;
               var floder=await sfloder.GetFolderAsync("images");
               var files= await floder.GetFilesAsync();
               List<string> list = new List<string>();
                foreach(var file in files ){
                    string path = "ms-appx:///images/"+file.Name;
                    list.Add(path);
               }
                fv.ItemsSource = list;
            }
        }
        //改变事件
        private void ToggleSwitch_Toggled_1(object sender, RoutedEventArgs e)
        {

        }

        private async void bt1_Click(object sender, RoutedEventArgs e)
        {
            MessageDialog dialog = new MessageDialog("提示");
            dialog.Commands.Add(new UICommand("确定") { Id=1});
            dialog.Commands.Add(new UICommand("取消") { Id=2});
            var result=await dialog.ShowAsync();
            if((int)result.Id==1){
               
            }else if((int)result.Id==2){
            
            }

        }

        private async void bt2_Click(object sender, RoutedEventArgs e)
        {
            HttpClient client = new HttpClient();
            var result = await client.GetStringAsync("http://openapi.aibang.com/bus/stats?app_key=f41c8afccc586de03a99c86097e98ccb&city=%e6%b5%8e%e5%8d%97&q=%e9%bd%90%e9%b2%81%e8%bd%af%e4%bb%b6%e5%9b%ad");
            //new MessageDialog(result).ShowAsync();
            List<string> list = new List<string>();
            XmlDocument xd = new XmlDocument();
            xd.LoadXml(result);
            XmlNodeList nodeList = xd.SelectSingleNode("root").ChildNodes;
            foreach (IXmlNode xn in nodeList)//遍历所有子节点
            {
                XmlElement xe = (XmlElement)xn;
                if (xn.NodeName == "stats")
                {
                    XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
                    foreach (IXmlNode xn1 in nls)//遍历
                    {
                        for (int item = 0; item < xn1.ChildNodes.Count; item++)
                        {
                            XmlElement xe2 = (XmlElement)xn1.ChildNodes[item];//转换类型 
                            //Traffic tr = new Traffic();
                            string content = "";
                            if (xe2.TagName.Equals("xy"))
                            {
                                content = xe2.InnerText;
                               
                            }
                            if (xe2.TagName.Equals("name"))
                            {
                                content = xe2.InnerText;
                               
                            }
                            if (xe2.TagName.Equals("line_names"))
                            {
                                content = xe2.InnerText;
                            }
                            list.Add(content);
                            
                        }
                    }
                }
            }
            Traffic tr = new Traffic();
            tr.name = list[0];
            tr.local = list[1];
            tr.content = list[2];
            Traffic tr2 = new Traffic();
            tr2.name = list[3];
            tr2.local = list[4];
            tr2.content = list[5];
            Traffic tr3 = new Traffic();
            tr3.name = list[6];
            tr3.local = list[7];
            tr3.content = list[8];
            list2.Add(tr);
            list2.Add(tr2);
            list2.Add(tr3);
            fv2.ItemsSource = list2;
            //new MessageDialog(list.Count.ToString()).ShowAsync();
        }
    }
}


布局代码:

<Page
    x:Class="Test.Page5"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Test"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
    <Page.TopAppBar>
        <AppBar Background="Gray">
             <StackPanel Orientation="Horizontal" >
                <Button x:Name="bt1" Style="{StaticResource HomeAppBarButtonStyle}" AutomationProperties.Name="主页" Click="bt1_Click"></Button>
                <Button x:Name="bt2" Style="{StaticResource FavoriteAppBarButtonStyle}" AutomationProperties.Name="收藏" Click="bt2_Click"></Button>
                <Button x:Name="bt3" Style="{StaticResource SaveAppBarButtonStyle}" AutomationProperties.Name="保存"></Button>
            </StackPanel>
        </AppBar>
    </Page.TopAppBar>
    <Page.BottomAppBar>
        <AppBar Background="Gray">
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" >
                <Button  x:Name="bt4"  Style="{StaticResource ShowBccAppBarButtonStyle}" AutomationProperties.Name="关于"></Button>
                <Button  x:Name="bt5" Style="{StaticResource NoAppBarButtonStyle}" AutomationProperties.Name="退出"></Button>
            </StackPanel>
        </AppBar>
    </Page.BottomAppBar>
        <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <ProgressBar HorizontalAlignment="Center" VerticalAlignment="Center"  Height="19" Width="201" IsIndeterminate="True"/>
        <ProgressRing HorizontalAlignment="Left" Margin="647,284,0,0" VerticalAlignment="Top" Height="47" Width="74" IsActive="True"/>
        <ToggleSwitch Header="网络设置" HorizontalAlignment="Left" Margin="1172,139,0,0" VerticalAlignment="Top" Toggled="ToggleSwitch_Toggled_1"/>
        <ScrollViewer HorizontalScrollBarVisibility="Auto" HorizontalAlignment="Left" Height="270" Margin="25,61,0,0" VerticalAlignment="Top" Width="497">
            <Image Source="images/ali01.png" Height="514" Width="518"></Image>
        </ScrollViewer>
        <FlipView HorizontalAlignment="Left" x:Name="fv" Margin="25,424,0,0" VerticalAlignment="Top" Width="758" Height="309">
            <FlipView.ItemTemplate>
                <DataTemplate>
                    <Image Source="{Binding}"></Image>
                </DataTemplate>
            </FlipView.ItemTemplate>
        </FlipView>
        <FlipView x:Name="fv2" HorizontalAlignment="Left" Margin="761,426,0,0" VerticalAlignment="Top" Width="543" Height="332">
            <FlipView.ItemTemplate>
                <DataTemplate>
                    <ScrollViewer HorizontalScrollBarVisibility="Auto" HorizontalAlignment="Left" VerticalScrollBarVisibility="Auto">
                        <StackPanel Orientation="Vertical">
                        <TextBlock Text="{Binding name}"></TextBlock>
                        <TextBlock Text="{Binding local}"></TextBlock>
                            <TextBlock Text="{Binding content}"></TextBlock>
                    </StackPanel>
                    </ScrollViewer>
                </DataTemplate>
            </FlipView.ItemTemplate>
            
        </FlipView>

    </Grid>
</Page>


 

 此项目参考"传智播客.net培训Windows 8开发视频教程"

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值