MVC iOS突破游戏设计

时间:2012-06-29 13:33:39

标签: model-view-controller

我在游戏中突破了以下模型:

  • Ball.h
  • Block.m
  • GamePlay.m
  • Paddle.h
  • Paddle.m

我也有以下观点:

  • BallView
  • BlockView用来
  • PaddleView

我的问题是,当我更改模型中的属性时,我还必须在视图中更改属性。例如:

球模型:

@interface Ball : NSObject
@property (nonatomic, strong) NSNumber *radius;
@property (nonatomic, strong) NSNumber *xSpeed;
@property (nonatomic, strong) NSNumber *ySpeed;
@property (nonatomic, strong) NSNumber *xDirection;
@property (nonatomic, strong) NSNumber *yDirection;
@property (nonatomic) CGPoint location;
@property (nonatomic, strong) UIColor *color;
@end

Ball View:

@interface BallView : UIView
@property (strong, nonatomic) UIColor *color;
@property (nonatomic) int radius;
@end

当模型的属性发生变化时,我会有位置或颜色。我必须在视图中更新这些相同的属性。我不应该在模型中跟踪位置和颜色吗?

1 个答案:

答案 0 :(得分:0)

我认为MVC的主要观点是随着时间的推移可维护性。如果您明天决定需要完全不同的游戏视图,那么模型代码可以保持不变,因此您可以专注于修改视图部分。

此外,如果你知道你需要一些关于游戏状态的数据,你知道在哪里可以找到它 - 在模型中。例如,如果他有兴趣看到你打破积木,你可能想通过互联网将球的位置传送给你的朋友。

正如你可以从最后两段猜测的那样,你确实应该存储和更新模型中球的位置和颜色。该视图不应该是应用状态的所有者。