Objective-c打僵尸小游戏练习源码
来源:互联网 发布:求数组最大值 编辑:程序博客网 时间:2024/06/01 07:13
打僵尸代码
练习
假设有两只僵尸,一只是普通僵尸,一只是道具僵尸,特征是:
- 普通僵尸:姓名、血量、失血量、 被攻击、死亡
- 道具僵尸:姓名、血量、失血量、道具、被攻击、丢失道具、死亡
代码如下
main.m 主文件
#import <Foundation/Foundation.h>#import "Zombie.h"#import "ToolZombie.h"int main(int argc, const char * argv[]) { @autoreleasepool{ Zombie *z1 = [[Zombie alloc] initWithName:@"普通僵尸" blood:50 loseBlood:3]; // 赋值 ToolZombie *tz1 = [[ToolZombie alloc] initWithName:@"道具僵尸" blood:50 loseBlood:3]; // 赋值 while((z1.dieFlag == NO || (tz1.dieFlag == NO)){ // 在两种僵尸均未死亡的情况下执行while sleep(1); // 每隔1秒执行 [z1 beingAttacked]; // 普通僵尸被攻击 [tz1 beingAttacked]; // 道具僵尸被攻击 } } retur 0;}
Zmbie.h父类文件
#impor <Foundation/Foundation.h>@interface Zombie : NSObject{ NSString *_name; // 名字 NSInteger _blood; // 血量 NSInteger _loseBlood; // 失血量 BOOL _dieFlag; // 标记 }_ (instancetype)initWithName:(NSString *)name blood:(NSInteger)blood loseBlood:(NSInteger)loseBlood; // 初始化方法- (void)beingAttacked; // 被攻击- (BOOL)die; // 死亡- (BOOL)dieFlag; // getter方法@end
Zombie.m文件
#import "Zombie.h"@implementation Zombie-(instancetype)initWithName:(NSString *)name blood:(NSInteger)blood loseBlood:(NSInteger)loseBlood{ // 初始化方法 if (self = [super init]){ _name = name; _blood = blood; _loseBlood= loseBlood; _dieFlag = NO; } return self;}-(void)beingAttacked{ // 被攻击实现 if(_dieFlag == NO){ // 如果死亡就不再执行,未死亡就执行if语句 if ([self die] == YES){ // 如果死亡则执行if语句 NSLog(@"%@已经死亡",_name); // 死亡 }else{ _blood -= _loseBlood; // 血量 = 血量 - 失血 if (_blood < 0){ // 如果血量<0,执行if语句 _blood = 0; } NSLog(@"%@剩余血量:%ld",_name,_blood); } }}- (BOOL)die{ // 死亡 if (_blood > 0){ return _dieFlag; // 血量>0时,返回NO,未死亡 }else{ _dieFlag = YES; return _dieFlag; // 血量不大于0时,返回YES,死亡 }}- (BOOL)dieFlag{ // getter方法:得到_dieFlag值 return _dieFlag;}
ToolZombie.h子文件
#import "Zombie.h"@interface ToolZombie : Zombie{ BOOl _toolFlag;}- (void)loseTool; // 丢失道具@end
ToolZombie.m文件
#import "ToolZombie.h"@implementation ToolZombie- (instancetype)initWithName:(NSString *)name blood:(NSInteger)blood loseBlood:(NSInteger)loseBlood{ if (self = [super initWithName blood:blood loseBlood:loseBlood]){ // 重新初始化 _toolFlag = YES; } return self;}- (void)loseTool{ // 丢失道具的失血 NSLog(@"%@丢失道具",_name); _toolFlag = NO;}- (void)beingAttacked{ // 重新实现被攻击 if (_dieFlag == NO){ // 未死亡执行if if([self die] == YES){ // 死亡执行if NSLog(@"%@已经死亡",_name); }else{ if (_toolFlag == YES){ // 有道具执行if _blood -= (_loseBlood - 1); // 防御加1 }else{ _blood -= _loseBlood; // 无道具 } if ((_blood <= 30) && _toolFlag == YES){ // 血量小于等于30并且有道具情况下执行,使其丢失道具 [self loseTool] } if (_blood < 0){ // 如果血量<0,执行if语句 _blood = 0 } NSLog(@"%@剩余血量:%ld",_name,_blood); } }}@end
运行结果:
2016-01-30 10:38:33.551 Zombie[907:69547] 普通僵尸剩余血量:472016-01-30 10:38:33.552 Zombie[907:69547] 道具僵尸剩余血量:482016-01-30 10:38:34.556 Zombie[907:69547] 普通僵尸剩余血量:442016-01-30 10:38:34.556 Zombie[907:69547] 道具僵尸剩余血量:462016-01-30 10:38:35.559 Zombie[907:69547] 普通僵尸剩余血量:412016-01-30 10:38:35.559 Zombie[907:69547] 道具僵尸剩余血量:442016-01-30 10:38:36.564 Zombie[907:69547] 普通僵尸剩余血量:382016-01-30 10:38:36.564 Zombie[907:69547] 道具僵尸剩余血量:422016-01-30 10:38:37.566 Zombie[907:69547] 普通僵尸剩余血量:352016-01-30 10:38:37.566 Zombie[907:69547] 道具僵尸剩余血量:402016-01-30 10:38:38.568 Zombie[907:69547] 普通僵尸剩余血量:322016-01-30 10:38:38.568 Zombie[907:69547] 道具僵尸剩余血量:382016-01-30 10:38:39.569 Zombie[907:69547] 普通僵尸剩余血量:292016-01-30 10:38:39.569 Zombie[907:69547] 道具僵尸剩余血量:362016-01-30 10:38:40.573 Zombie[907:69547] 普通僵尸剩余血量:262016-01-30 10:38:40.573 Zombie[907:69547] 道具僵尸剩余血量:342016-01-30 10:38:41.575 Zombie[907:69547] 普通僵尸剩余血量:232016-01-30 10:38:41.576 Zombie[907:69547] 道具僵尸剩余血量:322016-01-30 10:38:42.577 Zombie[907:69547] 普通僵尸剩余血量:202016-01-30 10:38:42.577 Zombie[907:69547] 道具僵尸丢失道具2016-01-30 10:38:42.577 Zombie[907:69547] 道具僵尸剩余血量:302016-01-30 10:38:43.580 Zombie[907:69547] 普通僵尸剩余血量:172016-01-30 10:38:43.580 Zombie[907:69547] 道具僵尸剩余血量:272016-01-30 10:38:44.581 Zombie[907:69547] 普通僵尸剩余血量:142016-01-30 10:38:44.581 Zombie[907:69547] 道具僵尸剩余血量:242016-01-30 10:38:45.585 Zombie[907:69547] 普通僵尸剩余血量:112016-01-30 10:38:45.586 Zombie[907:69547] 道具僵尸剩余血量:212016-01-30 10:38:46.587 Zombie[907:69547] 普通僵尸剩余血量:82016-01-30 10:38:46.587 Zombie[907:69547] 道具僵尸剩余血量:182016-01-30 10:38:47.588 Zombie[907:69547] 普通僵尸剩余血量:52016-01-30 10:38:47.588 Zombie[907:69547] 道具僵尸剩余血量:152016-01-30 10:38:48.593 Zombie[907:69547] 普通僵尸剩余血量:22016-01-30 10:38:48.593 Zombie[907:69547] 道具僵尸剩余血量:122016-01-30 10:38:49.595 Zombie[907:69547] 普通僵尸剩余血量:02016-01-30 10:38:49.595 Zombie[907:69547] 道具僵尸剩余血量:92016-01-30 10:38:50.600 Zombie[907:69547] 普通僵尸已经死亡2016-01-30 10:38:50.600 Zombie[907:69547] 道具僵尸剩余血量:62016-01-30 10:38:51.602 Zombie[907:69547] 道具僵尸剩余血量:32016-01-30 10:38:52.608 Zombie[907:69547] 道具僵尸剩余血量:02016-01-30 10:38:53.608 Zombie[907:69547] 道具僵尸已经死亡Program ended with exit code: 0
0 0
- Objective-c打僵尸小游戏练习源码
- Objective-C语言编写(OC)打僵尸小游戏源码
- Objective-C打僵尸代码
- Objective-C中打僵尸问题解析
- Objective-C学习 继承之僵尸练习
- Objective-C 僵尸对象
- JAVA打蜜蜂小游戏源码
- OC继承课后练习_打僵尸
- 打僵尸。
- objective-c中所谓的僵尸对象
- Objective-c 内存管理-僵尸对象
- Objective-c - 野指针和僵尸对象
- OC前三讲小结及打僵尸的继承练习
- Objective-C学习练习
- Java打飞机小游戏(附完整源码)
- Java打飞机小游戏(附完整源码)
- objective c基础入门练习
- c语言射击类打飞机小游戏感悟
- 解密Google Deepmind AlphaGo围棋算法:真人工智能来自于哪里?
- Linux下管理用户
- iOS添加测试设备与调试(证书调试)
- 如何在Android智能手机上捕获数据包?
- HDOJ 1003-Max Sum【DP】
- Objective-c打僵尸小游戏练习源码
- 每个程序员都应该知道的福利
- android M权限问题
- jlink调试stm32,debug时读取内存值
- KMP算法理解,and优化(待发)
- MacBook pro 13寸2011年换SSD
- hdu 2192 MagicBuilding
- express 构建 myapp
- 使用keepalived来实现nginx的高可用