C#学习笔记 08/01/18
2008-01-18 23:52
344 查看
花了两天时间写雪球大战,昨天写到晚上十一点决定停工。好像还是在总的框架上出了点问题,用完全面向对象的方法来写程序到底感觉是不一样的。
我 一共创建了四个类:Game,Menu,Map,Chara。思路是由Game类负责统筹协调其他各个类的行为。在Game类中含有一个Map类和两个 Chara类,而Menu类通常是作为一个函数中的局部对象的,不长期保留。在游戏开始时,玩家可以选择地图的类型和不同的角色,然后根据玩家的选择,在 Game的构造函数中创建不同的Map和Chara对象。最后在游戏主循环中不断调用两个Chara对象的action函数来执行各自的动作(投掷雪球, 制作雪球,移动)就可以了。
但这其中其实隐藏着问题,就是各个对象之间的信息交流并不顺利。比如一个Chara类对象的函数需要查看 Map类中的一个变量,那么必须通过Game.map.xx的方式进行,但这样总觉得不太舒服。因为一旦我更改设计,把Chara对象从Game类中移出 来,那么所有上面的语句就都要改。
所以我在想是否可以采用这样的设计:使用一个只包含公有静态变量的类,以实现全局变量的效果。并且,各种有具体意义的类对象也都放在这个类里面。而Game类还是负责管理。
嗯,下面去看C#的图形界面编程吧。
我 一共创建了四个类:Game,Menu,Map,Chara。思路是由Game类负责统筹协调其他各个类的行为。在Game类中含有一个Map类和两个 Chara类,而Menu类通常是作为一个函数中的局部对象的,不长期保留。在游戏开始时,玩家可以选择地图的类型和不同的角色,然后根据玩家的选择,在 Game的构造函数中创建不同的Map和Chara对象。最后在游戏主循环中不断调用两个Chara对象的action函数来执行各自的动作(投掷雪球, 制作雪球,移动)就可以了。
但这其中其实隐藏着问题,就是各个对象之间的信息交流并不顺利。比如一个Chara类对象的函数需要查看 Map类中的一个变量,那么必须通过Game.map.xx的方式进行,但这样总觉得不太舒服。因为一旦我更改设计,把Chara对象从Game类中移出 来,那么所有上面的语句就都要改。
所以我在想是否可以采用这样的设计:使用一个只包含公有静态变量的类,以实现全局变量的效果。并且,各种有具体意义的类对象也都放在这个类里面。而Game类还是负责管理。
嗯,下面去看C#的图形界面编程吧。
相关文章推荐
- (原创)c#学习笔记08--面向对象编程简介01--面向对象编程的含义01--对象的含义01--属性和字段
- (原创)c#学习笔记08--面向对象编程简介01--面向对象编程的含义03--静态和实例类成员
- (原创)c#学习笔记08--面向对象编程简介02--OOP技术01--接口
- (原创)c#学习笔记08--面向对象编程简介01--面向对象编程的含义01--对象的含义02--方法
- (原创)c#学习笔记08--面向对象编程简介01--面向对象编程的含义02--一切皆对象
- C#学习笔记和年轻真好 08/01/19
- (原创)c#学习笔记08--面向对象编程简介01--面向对象编程的含义03--对象的生命周期--构造函数和析构函数
- (原创)c#学习笔记10--定义类成员01--成员定义01--定义字段
- C# 学习笔记(Interface) - 08
- (原创)c#学习笔记10--定义类成员01--成员定义06--自动属性
- (原创)c#学习笔记03--变量和表达式01--c#的基本语法
- cocos2d-x学习笔记18:内存管理01:概述
- (原创)c#学习笔记08--面向对象编程简介02--OOP技术03--多态性
- (原创)c#学习笔记08--面向对象编程简介03--Windows应用程序中的OOP
- (原创)c#学习笔记10--定义类成员01--成员定义03--定义属性
- (原创)c#学习笔记10--定义类成员02--类成员的其他议题01--隐藏基类方法
- (原创)c#学习笔记09--定义类01--c#中的类定义
- C#学习笔记:01背包
- (原创)c#学习笔记10--定义类成员06--示例应用程序01--规划应用程序
- (原创)c#学习笔记04--流程控制04--循环01--do循环