7 -29 星期一
时间过的真快,C语言已经学习完了 .
今天正式投入OC的学习
今天主要讲得是面向对象编程的原理,至于思想老师说得用漫长时间才能去领悟.
说正题
首先写第一个OC程序
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSLog(@"hello world");
}
}
这是每个程序员接触一门新语言时都得学的,哈哈
其实也可用用C语言中得printf函数
因为可以在C语言编译运行的每一个程序都可以在OC中运行.
OC中 .h 文件用来存放声明文件 而 .m文件则用来存放.h中方法的实现
- (int)sum:(int)x andY(int)y;
是一个OC的中返回值为int的有参函数,OC中没有方法调用这么一说,只有消息传递的说法.
- (减号)为实例方法,也称为动态方法
+(加好)为类方法,也称为静态方法,学过java的可能好理解
OC中没有没有自动内存管理的机制 ,需要手动管理内存,当然可能新版本会有,但是对于IOS6.1的系统来说,占大部分用户,所以还得学内存管理的.
别的不说了,各处都有详细介绍.
分享今天做得一道题,用继承做得,虽然还没学到那
编写游戏相关类
1.怪物类:当前生命值,原始生命值,当前位置,原始位置,攻击力,防御力,移动行为,攻击英雄行为,逃跑行为
2.英雄类:角色名称,等级,经验,当前生命值,原始生命值,当前位置,原始位置,移动行为,攻击怪物行为
首先我创建了3个类
Monster 怪兽类
Hero 英雄类
Role 角色类
其中 英雄类和怪兽类都继承角色类,角色类声明他们共有的特征和行为.
然后在怪兽类和英雄类中只需要重写和继承角色类中的部分特征和属性就好了.
我现在总算知道写注释了 哈哈
main 方法中代码
//
// main.m
// GameClass
//
// Created by X's on 13-7-29.
// Copyright (c) 2013年 X‘s. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Monster.h"
#import "Hero.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Monster *mon = [[Monster alloc]init];
mon.MonsterName = @"jack";
Hero *hero = [[Hero alloc]init];
hero.heroName = @"super man";
mon.nowHP = 1248;
mon.oldHP = 9999;
mon.oldLocalX= 5;
mon.oldLocalY = 6;
mon.nowLocalX = 54;
mon.nowLocalX = 12;
hero.nowHP = 1865;
hero.oldHP = 2000;
hero.oldLocalX= 10;
hero.oldLocalY = 10;
hero.nowLocalX = 100;
hero.nowLocalX = 100;
[mon initial_Msg]; //怪物初始信息
[hero initial_Msg]; //英雄..
[mon initial_Local ]; //怪物初始位息
[hero initial_Local];// 英雄..
[mon attackHero]; //怪物攻击行为
[hero change_Msg]; //英雄变动信息
[hero change_Local];// 英雄位置变动
[hero attackMonster]; //英雄攻击怪兽行为
[mon change_Msg]; //怪兽血量变动
[mon change_Local];// 怪兽位置变动
[mon run_away]; //怪兽逃跑行为
[mon release];
[hero release];
}
return 0;
}
运行后结果
2013-07-29 19:59:33.387 GameClass[1056:303] 怪兽名字:jack
2013-07-29 19:59:33.430 GameClass[1056:303] 初始血量:9999
2013-07-29 19:59:33.430 GameClass[1056:303] 英雄名字:super man
2013-07-29 19:59:33.431 GameClass[1056:303] 初始血量:2000
2013-07-29 19:59:33.431 GameClass[1056:303] 初始位置:(5,6)
2013-07-29 19:59:33.432 GameClass[1056:303] 初始位置:(10,10)
2013-07-29 19:59:33.432 GameClass[1056:303] jack攻击了英雄一下
2013-07-29 19:59:33.433 GameClass[1056:303] 英雄名字:super man
2013-07-29 19:59:33.433 GameClass[1056:303] 现在血量:1865
2013-07-29 19:59:33.434 GameClass[1056:303] 现在位置:(100,0)
2013-07-29 19:59:33.434 GameClass[1056:303] super man攻击了怪兽一次
2013-07-29 19:59:33.434 GameClass[1056:303] 怪兽名字:jack
2013-07-29 19:59:33.435 GameClass[1056:303] 现在血量:1248
2013-07-29 19:59:33.435 GameClass[1056:303] 现在位置:(12,0)
2013-07-29 19:59:33.436 GameClass[1056:303] jack逃跑了
Role.h
//
// Role.h
// GameClass
//
// Created by X's on 13-7-29.
// Copyright (c) 2013年 X‘s. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Role : NSObject
{
NSString * _heroName;
NSString * _monsterName;
long int _nowHP; //现在血量
long int _oldHP; //原始血量
int _nowLocalX; //现在位置x
int _nowLocalY; //现在位置y
int _oldLocalX; //原始位置x
int _oldLocalY; //原始位置y
}
@property long int nowHP;
@property long int oldHP;
@property int nowLocalX;
@property int nowLocalY;
@property int oldLocalX;
@property int oldLocalY;
- (void)setHeroName:(NSString *)name;
- (NSString *)heroName;
- (void)setMonsterName:(NSString *)name;
- (NSString *)MonsterName;
- (void)moveAction:(NSString *)name;
@end
Role.m
//
// Role.m
// GameClass
//
// Created by X's on 13-7-29.
// Copyright (c) 2013年 X‘s. All rights reserved.
//
#import "Role.h"
@implementation Role
@synthesize nowHP = _nowHP;
@synthesize oldHP = _oldHP;
@synthesize nowLocalX = _nowLocalX;
@synthesize nowLocalY = _nowLocalY;
@synthesize oldLocalX = _oldLocalX;
@synthesize oldLocalY = _oldLocalY;
//- (void)setHeroName:(NSString *)name
//{
// _heroName = name;
//}
//- (NSString *)heroName
//{
// return _heroName;
//}
- (void)setMonsterName:(NSString *)name
{
_monsterName = name;
}
- (NSString *)MonsterName
{
return _monsterName;
}
- (void)moveAction:(NSString*)name
{
NSLog(@"%@向前移动",name);
}
@end
Hero.h
//
// Hero.h
// GameClass
//
// Created by X's on 13-7-29.
// Copyright (c) 2013年 X‘s. All rights reserved.
//
#import "Role.h"
@interface Hero : Role
{
NSString *_name;
int _LV;
long int _exp;
}
@property int lv; //英雄等级
@property long int exp; //英雄经验
- (void)attackMonster;
- (void)initial_Msg;//初始信息
- (void)change_Msg; //变动信息
- (void)initial_Local; //初始位置
- (void)change_Local; //变动位置
@end
Hero.m
//
// Hero.m
// GameClass
//
// Created by X's on 13-7-29.
// Copyright (c) 2013年 X‘s. All rights reserved.
//
#import "Hero.h"
@implementation Hero
@synthesize lv = _LV;
@synthesize exp = _exp;
- (void)setNowHP:(long)nowHP
{
_nowHP = nowHP;
}
- (void)setOldHP:(long)oldHP
{
_oldHP = oldHP;
}
- (void)setNowLocalX:(int)nowLocalX
{
_nowLocalX = nowLocalX;
}
- (void)setNowLocalY:(int)nowLocalY
{
_nowLocalY = nowLocalY;
}
- (void)setOldLocalX:(int)oldLocalX
{
_oldLocalX = oldLocalX;
}
- (void)setOldLocalY:(int)oldLocalY
{
_oldLocalY = oldLocalY;
}
- (void)setLv:(int)lv
{
if(lv > 0)
_LV = lv;
else
_LV = 0;
}
- (int)lv
{
return _LV;
}
- (void)setExp:(long)exp
{
if (exp > 0) {
_exp = exp;
}
else
{
_exp = 0;
}
}
- (long)exp
{
return _exp;
}
- (void)setHeroName:(NSString *)name
{
_name = name;
}
- (void)attackMonster
{
NSLog(@"%@攻击了怪兽一次\n",_name);
}
- (void)initial_Msg//初始信息
{
NSLog(@"英雄名字:%@\n",_name);
NSLog(@"初始血量:%ld\n",_oldHP);
}
- (void)change_Msg //变动信息
{
NSLog(@"英雄名字:%@\n",_name);
NSLog(@"现在血量:%ld\n",_nowHP);
}
- (void)initial_Local //初始位置
{
NSLog(@"初始位置:(%d,%d)\n",_oldLocalX,_oldLocalY);
}
- (void)change_Local //变动位置
{
NSLog(@"现在位置:(%d,%d)\n",_nowLocalX,_nowLocalY);
}
@end
Monster.h
//
// Monster.h
// GameClass
//
// Created by X's on 13-7-29.
// Copyright (c) 2013年 X‘s. All rights reserved.
//
#import "Role.h"
@interface Monster : Role
{
int ATK;//攻击力
int d_Power; //防御力
NSString *_name;
}
- (void)attackHero; //攻击英雄行为
- (void)run_away; //逃跑行为
- (void)initial_Msg;//初始信息
- (void)change_Msg; //变动信息
- (void)initial_Local; //初始位置
- (void)change_Local; //变动位置
@end
Monster.m
//
// Monster.m
// GameClass
//
// Created by X's on 13-7-29.
// Copyright (c) 2013年 X‘s. All rights reserved.
//
#import "Monster.h"
@implementation Monster
- (void)setNowHP:(long)nowHP
{
_nowHP = nowHP;
}
- (void)setOldHP:(long)oldHP
{
_oldHP = oldHP;
}
- (void)setNowLocalX:(int)nowLocalX
{
_nowLocalX = nowLocalX;
}
- (void)setNowLocalY:(int)nowLocalY
{
_nowLocalY = nowLocalY;
}
- (void)setOldLocalX:(int)oldLocalX
{
_oldLocalX = oldLocalX;
}
- (void)setOldLocalY:(int)oldLocalY
{
_oldLocalY = oldLocalY;
}
- (void)setMonsterName:(NSString *)name
{
_name = name;
}
- (NSString *)MonsterName
{
return _name;
}
- (void)attackHero//攻击英雄行为
{
NSLog(@"%@攻击了英雄一下\n",_name);
}
- (void)run_away //逃跑行为
{
NSLog(@"%@逃跑了",_name);
}
- (void)initial_Msg//初始信息
{
NSLog(@"怪兽名字:%@\n",_name);
NSLog(@"初始血量:%ld\n",_oldHP);
}
- (void)change_Msg //变动信息
{
NSLog(@"怪兽名字:%@\n",_name);
NSLog(@"现在血量:%ld\n",_nowHP);
}
- (void)initial_Local //初始位置
{
NSLog(@"初始位置:(%d,%d)\n",_oldLocalX,_oldLocalY);
}
- (void)change_Local //变动位置
{
NSLog(@"现在位置:(%d,%d)\n",_nowLocalX,_nowLocalY);
}
@end