您的位置:首页 > 移动开发 > Objective-C

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息