要求:
1、要有联动性,老鼠和人的行为是被动的
2、考虑可扩展行,猫叫声可能会引起其他联动效应
看到这个程序设计题目,我的第一反应是用事件来解决,猫叫触发了事件,引起了老鼠的逃跑,老鼠逃跑又触发了事件导致主人被惊醒。所以按照这个思路,我做出了如下的解答。
首先,将猫、老鼠、和人分别抽象出来为三个类,分别为:Cat、Mouse、People。在Cat类中我们做如下处理:
Public
class Cat
{
Public
delegate void Crying( object sender,EventArgs
e);
Public
Event Crying cry;
Public
void OnCry(EventArgs
e)
{
If(cry!= null )
{
Cry( this ,e);
}
}
Public
void StartCrying()
{
MessageBox.Show( "猫开始叫了......" );
EventArgs
e= new EventArgs();
OnCry(e);
}
}
|
Public
class Mouse
{
Public
delegate void Runing(Object
sender,EventArgs e);
Public
evnet delegate run;
Public
void OnRun(EventArgs
e)
{
If(run!= null )
{
Run( this ,e);
}
}
Public
void StartRuning(Cat
c)
{
c.cry+= new Cat.Crying(c_Cry);
}
Public
void c_Cry( object sender,EvnetArgs
e)
{
MessageBox.Show( "老鼠开始逃跑了........" );
EventArgs
e= new EventArgs();
OnRun(e);
}
}
Public
class Person
{
Public
void Waking(Mouse
m)
{
m.run+= new Mouse.Runing(m_run);
}
Public
void m_run( object sender,EventArgs
e)
{
MessageBox.Show( "人醒了,What's
wrong?" );
}
}
|
BtnTest_Click( object sender,
EventArgs e)
{
Cat
c= new Cat();
Mouse
m= new Mouse();
Person
p= new Person();
c.StartCrying();
m.StartRunning(c);
p.Waking(m);
}
|
实验效果依次如下:
下面再通过另一个方式来解决这个问题。
Observer(观察者模式)
首先我们需要新建两个接口:
Public
interface Observer
{
Void
Response();
}
Public
interface Subject
{
Void
AddObserver(Observer obj);
}
|
Public
class Cat:Subject
{
ArrayList
arrlyList;
Public
Cat()
{
arrlyList= new ArrayList();
}
Void
AddObserver(Observer obj)
{
arrlyList.Add(obj);
}
Void
Cry()
{
MessageBox.Show( "猫叫了......" );
Foreach(Observer
obj in arrlyList)
{
obj.Response();
}
}
}
|
Public
class Mouse:Observer
{
Public
Mouse(Cat c)
{
c.AddObserver( this );
}
Public
void Response()
{
MessageBox.show( "老鼠开始逃跑了....." );
}
}
|
Public
class People:Observer
{
Public
People(Cat c)
{
c.AddOberver( this );
}
Public
Void Respone()
{
MessageBox.Show( "人醒了,What's
Wrong?" );
}
}
|
Btn_Click(Object
sender,EventArgs e)
{
Cat
c= new Cat();
Mouse
m= new Mouse(c);
People
p= new People(c);
c.Cry();
}
|
分享到:
相关推荐
2. 猫抓住了老鼠或者老鼠逃跑了,对于这两种情况,我们用体重、技能和速度来区分,若猫的体重、技能和速度大于或等于老鼠的体重、技能和速度,则猫可实现抓住老鼠的方法,若猫的体重、技能和速度小于老鼠的体重和...
貌似曾经是一道微软的面试题吧 题目是: 猫鼠大战 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。 要求: 1.要有联动性,老鼠和主人的行为是被动的。 2.考虑可扩展性,猫的叫声可能引起其他联动效应
主要是针对事件的一个例子,其中详细的代码。可以让你很清楚的理解事件的概念。这是一个很经典的例子。
Scratch程序制作——猫捉老鼠小游戏教学设计.pdf
猫和老鼠的友谊作文.doc
MFC实现猫捉老鼠游戏
猫叫,老鼠们跑,主人醒...纯C#代实现。。
猫和老鼠,猫吃老鼠的C++代码。
迷宫猫捉老鼠项目,很认真的做的,请大家多多指教吧。。。猫在迷宫里面,随即产生,毛不会主动抓老鼠
利用python实现猫和老鼠算法,可以做为初学者入门pythonGUI界面使用
用matlab制作猫捉老鼠动画 用matlab制作动画,都是一些基本的语句,实现简单的动画演示。
本程序是在一个房间里猫捉老鼠的游戏。通过键盘上的上、下、左、右方向键控制一只猫,十只老鼠在窗口中自由活动,可随时改变行走方向,遇窗口边界则改变方向。猫碰到老鼠后就吃掉它(该鼠不再显示)。若猫吃掉所有...
程序设计 猫大叫一声程序设程序设计 猫大叫一声计 猫大叫一声程序设计 猫大叫一声
c++,猫捉老鼠,迷宫内有一只猫会抓老鼠,猫是随机产生的,猫不会主动抓老鼠。多多指教
《Scratch编程——猫捉老鼠》教学设计-课一等奖复习过程.pdf
卡通人物猫和老鼠的图像数据集,共484张图片 卡通人物猫和老鼠的图像数据集,共484张图片 卡通人物猫和老鼠的图像数据集,共484张图片
Java游戏\猫和老鼠.jarJava游戏\猫和老鼠.jarJava游戏\猫和老鼠.jar
经典游戏 猫和老鼠3D游戏 2004 win7以下可以完美运行 win10未测试
简单的猫抓老鼠scratch3.0(真的很简单)
这款游戏的名字叫"猫捉老鼠",运行后点菜单栏中的“控制”-> "开始",游戏开始。 使用上下左右方向键控制中间猫的移动。右侧有计时器来计时20秒。计时结束前将老鼠全部抓住则猫获胜,如果计时结束,还有老鼠存在则...