Objective-C语言编写(OC)打僵尸小游戏源码
2016-01-28 21:48
441 查看
学习OC课程的小练习
使用到的知识点:类的创建
对象的初始化
方法的声明和实现
类的继承
方法的调用
编译器:Xcode 7.0
作业要求:1.定义普通僵尸类:
实例变量:僵尸类型、僵⼫总血量、僵尸每次失血量。
实例方法:失血方法,死亡方法
2.定义道具僵尸
实例变量:僵尸总血量、僵尸每次失血量,道具。
实例方法:失血方法,死亡方法,失去道具方法
文件列表及代码:
文件夹:killZombie:main.m://主函数
// // main.m // killZombie // // Created by Ghostlord on 16/1/28. // Copyright © 2016年 Ghostlord. All rights reserved. // #import <Foundation/Foundation.h> #import "Zombie.h"/*引入普通僵尸类*/ #import "ToolZombie.h"/*引入道具僵尸类*/ int main(int argc, const char * argv[]) { @autoreleasepool { Zombie *zombie = [[Zombie alloc] initWithName:@"General僵尸" hp:50 losehp:3];/*创建普通僵尸对象并初始化*/ ToolZombie *toolZombie = [[ToolZombie alloc] initWithName:@"Prop僵尸" hp:50 losehp:3 tool:YES];/*创建道具僵尸对象并初始化*/ while ([zombie dead] || [toolZombie dead]) { sleep(1);/*修眠1秒,模拟攻击速度*/ if ([zombie dead]&&[toolZombie dead]) { [zombie loseBlood]; [toolZombie loseBlood]; }else{ if([zombie dead] == NO){ [toolZombie loseBlood]; }else{ if ([toolZombie dead] == NO) { [zombie loseBlood]; } } } } } return 0; }
Zombie.h://普通僵尸类接口文件
// // Zombie.h // killZombie // // Created by Ghostlord on 16/1/28. // Copyright © 2016年 Ghostlord. All rights reserved. // #import <Foundation/Foundation.h> @interface Zombie : NSObject { NSString *_name;/*僵尸名字*/ NSInteger _hp;/*僵尸血量*/ NSInteger _losehp;/*每次受攻击损失血量*/ } - (instancetype)initWithName:(NSString *)name hp:(NSInteger)hp losehp:(NSInteger)losehp;/*初始化方法*/ - (void)loseBlood;/*被攻击失血方法*/ - (BOOL)dead;/*死亡方法*/ @end
Zombie.m://普通僵尸类实现文件
// // Zombie.m // killZombie // // Created by Ghostlord on 16/1/28. // Copyright © 2016年 Ghostlord. All rights reserved. // #import "Zombie.h" @implementation Zombie - (instancetype)initWithName:(NSString *)name hp:(NSInteger)hp losehp:(NSInteger)losehp{ if (self = [super init]) { _name = name; _hp = hp; _losehp = losehp; } return self; } - (void)loseBlood{ if (self->_hp <= 0) { NSLog(@"%@已死亡。",self->_name);/*普通僵尸失血方法实现,判断血量,如果血量小于0,就不执行失血方法*/ }else{ _hp -= _losehp; if (_hp <= 0) { NSLog(@"现在%@的hp为:0,此僵尸已死亡!",self->_name);/*血量优化,防止出现负的血量*/ }else{ NSLog(@"现在%@的hp为:%ld",self->_name,self->_hp); } } } /*判断僵尸是否死亡*/ - (BOOL)dead{ if (self->_hp <= 0) { return NO; } return YES; } @end
ToolZombie.h://道具僵尸的接口文件
// // ToolZombie.h // killZombie // // Created by Ghostlord on 16/1/28. // Copyright © 2016年 Ghostlord. All rights reserved. // #import "Zombie.h" @interface ToolZombie : Zombie /*继承于普通僵尸*/ { BOOL _tool;/*多了一个是否有道具的实例变量*/ } - (instancetype)initWithName:(NSString *)name hp:(NSInteger)hp losehp:(NSInteger)losehp tool:(BOOL)tool; - (BOOL)loseTool;/*新增了失去道具的方法*/ - (void)loseBlood;/*重写了父类的失血方法*/ @end
ToolZombie.m://道具僵尸的实现文件
// // ToolZombie.m // killZombie // // Created by Ghostlord on 16/1/28. // Copyright © 2016年 Ghostlord. All rights reserved. // #import "ToolZombie.h" @implementation ToolZombie - (instancetype)initWithName:(NSString *)name hp:(NSInteger)hp losehp:(NSInteger)losehp tool:(BOOL)tool{ if (self = [super init]) { _name = name; _hp = hp; _losehp = losehp; _tool = YES; } return self; } - (BOOL)loseTool{ if (self->_hp <= 30) { return NO; } return YES;/*判断是否失去道具*/ } /*重写父类的失血方法*/ - (void)loseBlood{ if (self->_hp > 0) { if ([self loseTool]) { self->_hp -= (_losehp - 2);/*有道具增加2的护甲*/ NSLog(@"现在%@的hp为:%ld 有道具",self->_name,self->_hp); }else{ self->_hp -= _losehp; NSLog(@"现在%@的hp为:%ld 无道具",self->_name,self->_hp);/*无道具伤害为默认值*/ if (_hp <= 0) { NSLog(@"%@已死亡。游戏结束。",self->_name); } } }else{ NSLog(@"%@已死亡。",self->_name); } } @end
运行结果:
2016-01-29 08:55:22.435 killZombie[672:18751] 现在General僵尸的hp为:47 2016-01-29 08:55:22.436 killZombie[672:18751] 现在Prop僵尸的hp为:49 有道具 2016-01-29 08:55:22.436 killZombie[672:18751] 现在General僵尸的hp为:44 2016-01-29 08:55:22.436 killZombie[672:18751] 现在Prop僵尸的hp为:48 有道具 2016-01-29 08:55:22.436 killZombie[672:18751] 现在General僵尸的hp为:41 2016-01-29 08:55:22.436 killZombie[672:18751] 现在Prop僵尸的hp为:47 有道具 2016-01-29 08:55:22.436 killZombie[672:18751] 现在General僵尸的hp为:38 2016-01-29 08:55:22.436 killZombie[672:18751] 现在Prop僵尸的hp为:46 有道具 2016-01-29 08:55:22.436 killZombie[672:18751] 现在General僵尸的hp为:35 2016-01-29 08:55:22.436 killZombie[672:18751] 现在Prop僵尸的hp为:45 有道具 2016-01-29 08:55:22.436 killZombie[672:18751] 现在General僵尸的hp为:32 2016-01-29 08:55:22.436 killZombie[672:18751] 现在Prop僵尸的hp为:44 有道具 2016-01-29 08:55:22.436 killZombie[672:18751] 现在General僵尸的hp为:29 2016-01-29 08:55:22.436 killZombie[672:18751] 现在Prop僵尸的hp为:43 有道具 2016-01-29 08:55:22.438 killZombie[672:18751] 现在General僵尸的hp为:26 2016-01-29 08:55:22.438 killZombie[672:18751] 现在Prop僵尸的hp为:42 有道具 2016-01-29 08:55:22.438 killZombie[672:18751] 现在General僵尸的hp为:23 2016-01-29 08:55:22.438 killZombie[672:18751] 现在Prop僵尸的hp为:41 有道具 2016-01-29 08:55:22.438 killZombie[672:18751] 现在General僵尸的hp为:20 2016-01-29 08:55:22.438 killZombie[672:18751] 现在Prop僵尸的hp为:40 有道具 2016-01-29 08:55:22.438 killZombie[672:18751] 现在General僵尸的hp为:17 2016-01-29 08:55:22.438 killZombie[672:18751] 现在Prop僵尸的hp为:39 有道具 2016-01-29 08:55:22.439 killZombie[672:18751] 现在General僵尸的hp为:14 2016-01-29 08:55:22.439 killZombie[672:18751] 现在Prop僵尸的hp为:38 有道具 2016-01-29 08:55:22.439 killZombie[672:18751] 现在General僵尸的hp为:11 2016-01-29 08:55:22.439 killZombie[672:18751] 现在Prop僵尸的hp为:37 有道具 2016-01-29 08:55:22.439 killZombie[672:18751] 现在General僵尸的hp为:8 2016-01-29 08:55:22.439 killZombie[672:18751] 现在Prop僵尸的hp为:36 有道具 2016-01-29 08:55:22.439 killZombie[672:18751] 现在General僵尸的hp为:5 2016-01-29 08:55:22.439 killZombie[672:18751] 现在Prop僵尸的hp为:35 有道具 2016-01-29 08:55:22.439 killZombie[672:18751] 现在General僵尸的hp为:2 2016-01-29 08:55:22.439 killZombie[672:18751] 现在Prop僵尸的hp为:34 有道具 2016-01-29 08:55:22.439 killZombie[672:18751] 现在General僵尸的hp为:0,此僵尸已死亡! 2016-01-29 08:55:22.440 killZombie[672:18751] 现在Prop僵尸的hp为:33 有道具 2016-01-29 08:55:22.440 killZombie[672:18751] 现在Prop僵尸的hp为:32 有道具 2016-01-29 08:55:22.440 killZombie[672:18751] 现在Prop僵尸的hp为:31 有道具 2016-01-29 08:55:22.440 killZombie[672:18751] 现在Prop僵尸的hp为:30 有道具 2016-01-29 08:55:22.440 killZombie[672:18751] 现在Prop僵尸的hp为:27 无道具 2016-01-29 08:55:22.440 killZombie[672:18751] 现在Prop僵尸的hp为:24 无道具 2016-01-29 08:55:22.440 killZombie[672:18751] 现在Prop僵尸的hp为:21 无道具 2016-01-29 08:55:22.440 killZombie[672:18751] 现在Prop僵尸的hp为:18 无道具 2016-01-29 08:55:22.440 killZombie[672:18751] 现在Prop僵尸的hp为:15 无道具 2016-01-29 08:55:22.440 killZombie[672:18751] 现在Prop僵尸的hp为:12 无道具 2016-01-29 08:55:22.440 killZombie[672:18751] 现在Prop僵尸的hp为:9 无道具 2016-01-29 08:55:22.440 killZombie[672:18751] 现在Prop僵尸的hp为:6 无道具 2016-01-29 08:55:22.441 killZombie[672:18751] 现在Prop僵尸的hp为:3 无道具 2016-01-29 08:55:22.441 killZombie[672:18751] 现在Prop僵尸的hp为:0 无道具 2016-01-29 08:55:22.441 killZombie[672:18751] Prop僵尸已死亡。游戏结束。 Program ended with exit code: 0
相关文章推荐
- 我是运营,我没有假期
- 你应该学习哪种编程语言?
- 每个 Linux 游戏玩家都绝不想要的恼人体验
- 在 Fedora 上使用 Steam play 和 Proton 来玩 Windows 游戏
- [转]我们需要一种其他人能使用的编程语言
- Steam 让我们在 Linux 上玩 Windows 的游戏更加容易
- 如何使用 Steam Play 在 Linux 上玩仅限 Windows 的游戏
- 新一代iPad适配应用之游戏篇
- VB实现的《QQ美女找茬游戏》作弊器实例
- C#语言主要特性总结
- C#实现洗牌游戏实例
- C#实现的算24点游戏算法实例分析
- C#实现简单的井字游戏实例
- C++编写简单的打靶游戏
- C++实现基于控制台界面的吃豆子游戏
- C语言中static的作用及C语言中使用静态函数有何好处
- PHP检测用户语言的方法
- 纯javascript实现的小游戏《Flappy Pig》实例
- JavaScript实现俄罗斯方块游戏过程分析及源码分享
- JS小游戏之仙剑翻牌源码详解