神奇的猴子Mono

来源:互联网 发布:淘宝京东是b2b还是b2c 编辑:程序博客网 时间:2024/05/17 08:34
    Mono大家应该听说过吧,是基于UNIX的.NET Framework开发平台。发起人Miguel de Icaza可能大家不是很熟悉,在自由软件世界里可是鼎鼎大名的,是GNOME项目的发起人。
    现在Mono还处在测试阶段,最新版为1.0.5,大家可以到[url]http://www.mono-project.com/[/url]下载。虽然只是测试阶段,不过它已经实现了微软.NET Framework中的大部分类库。并且已经有了很漂亮的IDE开发工具,可谓雄心勃勃。
    mono可以在各种系统平台上使用。在windows安装很简单,按照提示一步步做就可以了。我也试了在linux下安装(Fedora Core 3),提示和一些软件包不兼容,不过不是大问题。等装好了在和大家说吧。
    在windows中安装好后,在开始菜单下就能找到mono。已经带了mono命令行,这样就不用像JAVA一样设置PATH,直接就能使用mono编译器。
    下面我们来编译一个C#程序,来感受一下mono。这是一个很简单的C#源码guess.cs,猜数字游戏:
using System;
public class Game
{
    private string number;
    private static int x,y;
    private int count=0;

    public void init()
    {
      do{
      Console.WriteLine("Please input number:");
      number=Console.ReadLine();
      }while(number.Length!=4);
    }
    public void play()
    {
      //生成随机数
      int [] a = new int [10]; //整形数组
      //把0到9十个数字依次填入a[0]到a[9]
      for(int i = 0; i < 10; i++)a[i]=i;
      //十数字随机打乱
      Random ran= new Random();
      for(int i=0;i<4;i++)
      {
        int t=ran.Next()%10;
        int s;
        s=a[i];
        a[i]=a[t];
        a[t]=s;
      }
      //取前四个数字组成四位数做为猜数字的正确答案
      string ready= a[0].ToString() + a[1].ToString() + a[2].ToString() + a[3].ToString();
      do{
        x=0;
        y=0;
        init();
        for(int i=0;i<=3;i++)
        {
           for(int j=0;j<=3;j++)
           {
              if(number[i]==ready[j])
              {
                 if(i==j)
                 ++x;
                 else
                 ++y;
              }
           }
        }
      ++count;
      Console.WriteLine("{0}A{1}B",x.ToString(),y.ToString());
      if(count>8)
      {
       Console.WriteLine("-------------------");
       Console.WriteLine("-------------------");
       Console.WriteLine("You already lossed");
       Console.WriteLine("The right answer is {0}",ready);
       Console.WriteLine("-------------------");
       Console.ReadLine();
       return;
      }
     }while(number!=ready);
      Console.WriteLine("----------------------------");
      Console.WriteLine("OK! You are very cleverness!");
      Console.WriteLine("----------------------------");
      Console.ReadLine();
   }
}
public class MyGame
{
   public static void Main()
{
   Game g=new Game();
   g.play();
}
}
   
    其实C#的源码和JAVA非常像。和JAVA一样C#中的每个东西都必须属于一个类。
    下面我们来用Mono编译它。在Mono的命令行下输入:mcs guess.cs会生成guess.exe文件,
我们可以在终端输入mono guess.exe来运行程序。奇妙的是用Mono编译的这个guess.exe文件在linux下用Mono也可以运行的!
    写这篇文章的目的是因为有很多朋友根本不知道Mono为何物。错过了这么好的编程工具损失太大了!其实Mono需要深入研究的东西太多了,这篇文章只是简单的尝试,Mono项目起源于2001年,其实网上已经有很多关于mono的介绍了。感兴趣的朋友可以搜索一下,有很多精彩的文章。好了就写到这了。等以后有机会把我自己在linux下使用Mono的心得写出来。