猫叫,鼠逃,人醒

目地:通过调用猫叫的方法,联动鼠逃和人醒

设计:
  1.     public delegate void doSomethings();
  2.     class Cat
  3.     {
  4.         public string name;
  5.         public event doSomethings afterCry;
  6.         public Cat(string _name)
  7.         {
  8.             name = _name;
  9.         }
  10.         public void Cry()
  11.         {
  12.             Console.WriteLine("猫 "+name+" 叫;");
  13.             afterCry();//触发猫叫以后的事件;
  14.         }
  15.     }
设计一个委托,同时在猫类中声明一个该类型的事件,在猫叫这个方法里面触发这个事件。

  1.     abstract class ObserverBase
  2.     {
  3.         protected Cat cat;
  4.         protected ObserverBase(Cat c)
  5.         {
  6.             cat = c;
  7.             if(c!=null)
  8.                 c.afterCry += new doSomethings(Act);
  9.         }
  10.        protected abstract void Act();
  11.     }
声明一个观察者基类,同时声明一个猫对象,在构造函数中给猫对象的猫叫事件增加一个处理方法Act。但是Act方法是一个抽象方法,具体处理由扩展类自己去处理,这样就为猫叫事件的处理增加了扩展性,使得不同的观察者可以对同一个事件产生不同的处理方法。

  1.     class Mouse:ObserverBase
  2.     {
  3.         private string name;
  4.         public Mouse(string name, Cat enemy):base(enemy)
  5.         {
  6.             this.name = name;
  7.         }
  8.         protected override void Act()
  9.         {
  10.             if(cat!=null)
  11.                 Console.WriteLine("猫 " + base.cat.name + " 叫,老鼠 " + name + "逃");
  12.         }
  13.     }
声明一个老鼠类,继承自观察者基类,在构造时,调用基类构造方法,同时给自己赋值。覆盖基类的Act方法,从而使得老鼠对于猫叫事件有了自己的处理。

  1.     class Person : ObserverBase
  2.     {
  3.         string name;
  4.         
  5.         public Person(string name,Cat pet):base(pet)
  6.         {
  7.             this.name = name;
  8.         }
  9.         protected override void  Act()
  10.         {
  11.             if(base.cat!=null)
  12.                 Console.WriteLine("猫 "+base.cat.name+" 叫,人 "+name+" 醒;");
  13.         }
  14.     }
声明一个人类,同样继承自观察者基类,在构造时,也调用基类构造方法,同时给自己赋值。覆盖基类的Act方法,从而使得人对于猫叫事件有了自己的处理。

  1.     class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             Cat cobj = new Cat("Tom");//有只猫叫Tom
  6.             Mouse mobj = new Mouse("Jerry", cobj);//有只老鼠叫Jerry,它的敌人是猫Tom
  7.             Person pobj = new Person("Mike", cobj);//有个人叫Mike,他养了一只叫Tom的宠物猫
  8.             cobj.Cry();//Tom猫叫了一声
  9.             Console.ReadLine();
  10.         }
  11.     }
最后是主程序。

运行结果:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中实现捉老的小游戏可以使用图形界面库如Pygame或Tkinter来创建游戏界面,并利用键盘事件来控制小老的移动。可以使用图片资源来表示和老,通过碰撞检测来判断是否追上老以结束游戏。可以将游戏时长、和老的状态显示在主页面上。 下面是一个简单的实现思路: 1. 导入所需的库,如Pygame或Tkinter。 2. 创建游戏界面,并在界面上显示开始按钮。 3. 当点击开始按钮后,游戏开始,和老的图片出现在界面上。 4. 监听键盘事件,根据按键来移动小老的位置。 5. 使用自动算法来追踪老的位置,可以使用简单的路径规划算法或者加入一些随机性。 6. 判断是否追上老,如果是则游戏结束,显示游戏时长和相应的提示信息。 7. 将游戏时长、和老的状态显示在主页面上,可以使用标签或文本框来实现。 这样,你就可以通过编写相应的代码来实现Python捉老小游戏了。同时,FTP(文件传输协议)是一种用于向互联网上传送文件的标准协议,而SFTP(SSH文件传输协议)则是在FTP的基础上增加了安全性,使用SSH进行加密和身份验证。在Python中,可以使用ftplib库来实现FTP协议的文件上传和下载,使用paramiko库来实现SFTP协议的文件操作。你可以根据具体需求选择适合的协议来进行文件传输操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [利用python如何实现捉老小游戏](https://download.csdn.net/download/weixin_38544625/14908284)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Python实现捉老小游戏!虽然简陋但是童真永在!](https://blog.csdn.net/weixin_43881394/article/details/110636980)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [基于Python实现FTP文件上传与下载操作(FTP&SFTP协议)](https://download.csdn.net/download/wjianwei666/88279227)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值