WPF 简易猜猜看

原创 2015年07月08日 12:14:26


</pre>        不通过断的做一些小东西,来巩固基础,猜猜看难点在与怎么将图片与名字相对应起来,参与过不同类似猜猜看的编写,总结如下。<p></p><p></p><p>            解决方法1:</p><p>                      将图片的名字命名为数字,如:1.JPG  这样可以实现用random函数随机图片。</p><p>                       然后将图片的真实内容名字放进一个字符串数组,要求其所在索引要与图片的名字一致。如:2,JPG 图片的真实名字,应放在字符串数组的第2个位置。这样实现                          的名字与图片的对应。</p><p></p><p>            解决方法2: </p><p>                     将图片的名字命名为数字+名字。 如:1红花.jpg </p><p>                     使用random()函数随机函数,随机提取图片</p><p>                     使用正则表达式提取数字或名字,实现图片与名字的匹配</p><p></p><p>                    正则表达式使用如下:</p><p><span style="font-family: monospace; white-space: pre; background-color: rgb(240, 240, 240);">           Match match = Regex.Match(imageNam[num[n]],@"[0-9]{12}(\w{2,})")   // 提取名字 </span></p><p></p><p>            解决方法3:</p><p>                      将图片+名字信息存入数据库。</p><p>                      从数据库中提取图片+名字信息       <span style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;">SELECT TOP 10 * FROM ywle order by newid()    相关链接如下:</span></p><p>                      <a target=_blank href="http://blog.csdn.net/tangbow/article/details/7784718">http://blog.csdn.net/tangbow/article/details/7784718</a></p><p>                      根据数据库的信息是实现图片与名字的匹配</p><p></p><p>这里使用的是第2种方法,其他方法实现链接:<a target=_blank href="http://blog.csdn.net/yixueming/article/details/44202091">点击打开链接</a></p><p></p><p>   效果图:</p><p></p><p><img src="http://img.blog.csdn.net/20150708124336069?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p><p><img src="http://img.blog.csdn.net/20150708124347920?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p><p><pre name="code" class="csharp"><img src="http://img.blog.csdn.net/20150708124619651?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />


     实现代码:

   

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace 猜猜看
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
        
        }

        
        #region 按钮事件
        private void PicGuessName_Click(object sender, RoutedEventArgs e)
        {
            Grid_NameGuessPIC.Visibility = System.Windows.Visibility.Hidden;
            Grid_PicGuessName.Visibility = Visibility;
            bing_Name();
        }

        private void NameGuessPIC_Click(object sender, RoutedEventArgs e)
        {
            Grid_NameGuessPIC.Visibility = Visibility;
            Grid_PicGuessName.Visibility = System.Windows.Visibility.Hidden;
            bing_Pic();
        }
        #endregion


        // 加载图片信息
        public string[] LoadPic() {
             string Path =@"D:\old\Project\Old\项目\猜猜看\猜猜看\Image\";
             string[] imageName = Directory.GetFiles(Path);
             return imageName;
        }

        // 猜图片_绑定数据
        public void bing_Pic() {
              

            //  随机抽取照片
            Random random = new Random();
            int[] num={0,0,0};
            for (int i = 0; i < 3;) {
                int k = random.Next(8);
                if (k != 0 && !num.Contains(k-1))
                {
                    num[i] = k-1;
                    i++;
                }
            }


            //  获取照片路径
            string[] imageNam = LoadPic();


            // 绑定照片控件
            string name = imageNam[num[0]];
            Uri url = new Uri(name, UriKind.Absolute);
            BitmapImage bitmap = new BitmapImage(url);
            Img1.Source = bitmap;
            //     Img1.Source = new BitmapImage(new Uri(imageNam[num[0]], UriKind.Absolute));

            Img2.Source = new BitmapImage(new Uri(imageNam[num[1]]));
            Img3.Source = new BitmapImage(new Uri(imageNam[num[2]]));

            // 绑定文本控件

           int n = random.Next(3);
           Match match = Regex.Match(imageNam[num[n]],@"[0-9]{12}(\w{2,})");
           TBlock_Name.Text = match.Groups[1].Value;
        }


        // 猜名字_数据绑定
        public void bing_Name() {
            //  随机抽取照片
            Random random = new Random();
            int[] num = { 0, 0, 0 };
            for (int i = 0; i < 3;)
            {
                int k = random.Next(8);
                if (k!=0&&!num.Contains(k-1)) {
                    num[i] = k-1;
                    i++; 
                }
                
            }


            //  获取照片路径
            string[] imageNam = LoadPic();

           
            //  绑定文本控件
            string[] name = {"","",""};
            for (int i = 0; i < 3; i++) {

                Match match = Regex.Match(imageNam[num[i]], @"[0-9]{12}(\w{2,})");
                name[i] = match.Groups[1].Value;
            }

            TBlock_Guess1.Text = name[0];
            TBlock_Guess2.Text = name[1];
            TBlock_Guess3.Text = name[2];


            // 绑定图片控件
             int m = random.Next(3);
             GuessImg.Source = new BitmapImage(new Uri(imageNam[num[m]]));
             
             
        }

        private void Img2_MouseDown(object sender, MouseButtonEventArgs e)
        {

            Image img = (Image)sender;
            Match match = Regex.Match(img.Source.ToString(), @".+([0-9]{12})([\w]{2,})\.jpg");
            if (TBlock_Name.Text == match.Groups[2].Value)
            {
                MessageBox.Show("猜对了");
            }
            else {
                MessageBox.Show("猜错了");
            }
            
        }

        private void TBlock_Guess1_MouseDown(object sender, MouseButtonEventArgs e)
        {
            TextBlock TB = (TextBlock)sender;
            
            Match match = Regex.Match( GuessImg.Source.ToString(), @".+([0-9]{12})([\w]{2,})\.jpg");

            if (TB.Text == match.Groups[2].Value) { MessageBox.Show("你猜对了"); } else { MessageBox.Show("猜错了"); }
        }
     }
}

 界面设计代码:

<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="猜猜看.MainWindow"
        Title="MainWindow" Height="440.972" Width="732.462">
    <Window.Background>
        <ImageBrush  ImageSource="D:\old\Project\Old\项目\猜猜看\猜猜看\Image\2.jpg">
           
        </ImageBrush>
    </Window.Background>
    <Grid>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition MaxHeight="60"/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <TextBlock Text="猜猜看" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="BlueViolet" FontSize="20"/>
            <Grid Grid.Row="1" >
                <Grid.RowDefinitions>
                    <RowDefinition  MaxHeight="60"/>
                    <RowDefinition Height="240" />
                    <RowDefinition MaxHeight="60"/>
                </Grid.RowDefinitions>
                <Grid Grid.Row="0">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition/>
                        <ColumnDefinition/>
                    </Grid.ColumnDefinitions>
                    <Button x:Name="PicGuessName" Content="猜名字" Margin="100,15" Click="PicGuessName_Click"/>
                    <Button Grid.Column="1" x:Name="NameGuessPIC" Content="猜图片" Margin="100,15" Click="NameGuessPIC_Click"/>
                </Grid>
                <Grid x:Name="Grid_NameGuessPIC" Visibility="Hidden" Grid.Row="1">
                    <Grid.RowDefinitions>
                        <RowDefinition MinHeight="160"/>
                        <RowDefinition MaxHeight="60"/>
                    </Grid.RowDefinitions>
                    <Grid Grid.Row="0">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <Image x:Name="Img1" Margin="20,15,10,15" MouseDown="Img2_MouseDown"/>
                        <Image x:Name="Img2" Grid.Column="1" Margin="15,15" MouseDown="Img2_MouseDown"/>
                        <Image x:Name="Img3" Grid.Column="2" Margin="15,15" MouseDown="Img2_MouseDown"/>
                    </Grid>
                    <Grid Grid.Row="1">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <TextBlock x:Name="TBlock_Name" Grid.Column="1" Width="150" Margin="2" HorizontalAlignment="Left" Foreground="Blue"/>
                        <TextBlock Grid.Column="0" Width="50" Margin="2" HorizontalAlignment="Right" Text="姓名:" FontSize="15" TextAlignment="Right"/>
                    </Grid>

                </Grid>
                <Grid Grid.Row="1" x:Name="Grid_PicGuessName" Visibility="Visible">
                    <Grid.RowDefinitions>
                        <RowDefinition MinHeight="160"/>
                        <RowDefinition MaxHeight="60"/>
                    </Grid.RowDefinitions>
                    <Image Name="GuessImg" Margin="260,10"/>
                    <Grid Margin="0,175,0,5" Grid.RowSpan="2">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <TextBlock x:Name="TBlock_Guess1" Margin="5" Width="120" MouseDown="TBlock_Guess1_MouseDown" Foreground="Blue"/>
                        <TextBlock x:Name="TBlock_Guess2" Grid.Column="1" Margin="5" Width="120" MouseDown="TBlock_Guess1_MouseDown" Foreground="Blue"/>
                        <TextBlock x:Name="TBlock_Guess3"  Grid.Column="2" Margin="57,5,64,5" Width="120" MouseDown="TBlock_Guess1_MouseDown" Foreground="Blue"/>
                    </Grid>
                </Grid>
            </Grid>
        </Grid>
    </Grid>
</Window>



代码链接:http://pan.baidu.com/s/1dDq9E97



                      


版权声明:本文为博主原创文章,未经博主允许不得转载。

C# 猜猜看游戏

  • 2015年07月06日 20:48
  • 9.21MB
  • 下载

《Java程序设计》第17周课程设计:《猜猜看》游戏 第四天

今天我为了实现按钮判断进行了少量的调整,利用输出的text进行判断是否其图片与标记的名字相对应; 可惜我还不能在上方对话框显示名字; 图片旁边的三个黑点其实获取的图片的名称,因为避免被看见我把他隐...

蚂蚱猜猜看

  • 2006年03月16日 00:00
  • 1.4MB
  • 下载

猜猜看应用

  • 2015年06月06日 09:51
  • 38.44MB
  • 下载

图形界面练习:数字猜猜看

项目要求:一共有十次机会猜猜随机生成的整形数值,并为程序设计一个图形界面 图形界面实现效果: /** * swing的练习使用 * * @author SUMMER * *...

猜猜看源代码

  • 2015年07月08日 10:09
  • 4.48MB
  • 下载

《JAVA课程设计》实训第四天——《猜猜看》游戏

第四天,本来想进一步去改进《猜猜看》游戏的,但是很多问题都不理解,也不熟悉怎么去弄到连接数据库,统计猜对次数,所以并没有进行再多的修改。 基本上就是这样的运行结果了 import java.awt...

《猜猜看》游戏的开发总结

《猜猜看》游戏的开发总结 1.最终成果 1.1 课程设计的目的        把软件工程中规范的软件开发方法应用到本次教师认识学生软件“猜猜看”的开发过程中,以经济地开发出高质量的软件并有效的...
  • Ajixk
  • Ajixk
  • 2015年07月07日 12:26
  • 411

《JAVA程序设计》实训第一天——《猜猜看》游戏

课程实训是做一个猜猜看的小游戏。对于对代码不熟悉不了解的我来说的确挺难的。但是我还是会努力的。import java.awt.EventQueue; import javax.swing.JFrame...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF 简易猜猜看
举报原因:
原因补充:

(最多只允许输入30个字)