小白的我试着用学到的知识,试着改善了一下课堂练习,一个小游戏
因为包含5个文件
文件一: main.m
#import <Foundation/Foundation.h>
#import "Gun.h"
#import "Soldier.h"
int main() {
// 创建人,枪对象
Gun *gun = [[Gun alloc] init];
Soldier *sol = [[Soldier alloc] initGun:gun];
// 游戏控制
[sol control];
return 0;
}
文件二:Gun.h
#import <Foundation/Foundation.h>
/**
* 枪类的声明
* 属性:
* 枪的型号, 子弹数量
* 方法:
* 枪发射子弹,重写init
*/
@interface Gun : NSObject
{
@public
NSString *_size;
int _bulletNumber;
}
- (void)shoot; // 射击
- (id)init; // 初始化
@end
文件三:Gun.m
#import "Gun.h"
/**
* 枪类的方法实现
*/
@implementation Gun
// 枪发射子弹方法实现
- (void)shoot{
if (_bulletNumber > 0) {
_bulletNumber--;
NSLog(@"啪!干死一个鬼子!!!");
NSLog(@"萝莉管家:亲,您还有%d颗子弹哦,么么哒(^_^)", _bulletNumber);
} else
NSLog(@"亲,咱们没子弹了,呜呜");
}
// init方法的重写
- (id)init{
if (self = [super init]) {
_bulletNumber = 6;
}
return self;
}
@end
文件四:Soldier.h
#import <Foundation/Foundation.h>
#import "Gun.h"
/**
* 创建一个士兵类
* 属性:
* 名字,等级,生命,枪,人物经验
* 方法:
* 跑,蹲,射击,跳,装子弹,初始化,提示,重写init
*/
@interface Soldier : NSObject
{
@public
NSString *_name;
int _level;
Gun *_gun;
int _life;
int _experience;
}
- (void)run; // 跑
- (void)jemp; // 跳
- (void)squat; // 蹲
+ (void)tiShi; // 游戏提示
- (void)fireGun; // 射击
- (void)control; // 游戏控制
- (void)loadBullet; // 装弹
- (id)initGun:(Gun *)gun; // 初始化
@end
文件五:Soldier.m
#import "Soldier.h"
/**
* 士兵类方法的实现
*/
@implementation Soldier
// 跑方法实现
- (void)run{
NSLog(@"风紧,扯呼!!!");
}
// 蹲方法实现
- (void)squat{
NSLog(@"蹲下可不代表哥投降了,只是想拉屎...");
}
// 跳方法实现
- (void)jemp{
_life++;
NSLog(@"按剧情跳悬崖一定摔不死,弟兄们跳吧.");
NSLog(@"哇塞,跳崖果然没死,捡到大力丸:生命+1");
}
// 射击方法实现
- (void)fireGun{
[_gun shoot];
switch(++_experience){
case 5 :
NSLog(@"终于升到一等兵了");
break;
case 20 :
NSLog(@"终于升到二等兵了");
break;
case 80 :
NSLog(@"终于升到三等兵了");
break;
}
}
// 装子弹方法的实现
- (void)loadBullet{
_gun->_bulletNumber = 6;
NSLog(@"好了子弹满了,不用手撕僵尸了");
}
// 提示方法的实现
+ (void)tiShi{
NSLog(@"新兵蛋子,哥来教你打鬼子");
NSLog(@"a是开枪了,z是装子弹,w是跳了,d是跑了,s是蹲下,q退出.嘿嘿,小子,有惊喜哦");
}
// 游戏控制的实现
- (void)control{
// 游戏控制
int n = 1;
char action, ch;
[Soldier tiShi];
while(n){
scanf("%c", &action);
scanf("%c", &ch);
switch(action){
case 'a' :
case 'A' :
[self fireGun]; // 射击
break;
case 'W' :
case 'w' :
[self jemp]; // 跳
break;
case 'd' :
case 'D' :
[self run]; // 跑
break;
case 's' :
case 'S' :
[self squat]; // 蹲
break;
case 'z' :
case 'Z' :
[self loadBullet]; // 装弹
break;
case 'x' :
case 'X' :
[Soldier tiShi]; // 游戏提示
break;
case 'q' :
case 'Q' :
n = 0; // 退出
NSLog(@"你妈妈喊你回家吃饭了");
break;
default :
NSLog(@"输入不正确哦");
}
NSLog(@"需要提示按x哦");
}
}
// init方法的重写
- (id)initGun:(Gun *)gun{
if (self = [super init]) {
self->_gun = gun;
self->_life = 3;
self->_level = 0;
}
return self;
}
@end
|
|