OC应用:射击游戏
2015-05-29 00:37
176 查看
在学OC基础视频过程中,将老师讲的例题改进了一下,写成了一个有意思的小游戏。想想还有点小激动呢……
/*
实现:射击游戏
1.弹夹类:
属性:型号,伤害,子弹数
行为:造成伤害
2.枪类:
属性:型号,弹夹
行为:发射子弹,装弹
3.士兵类:
属性:姓名,生命,等级
行为:跑,蹲,跳,开枪,被射,装弹,加血
*/
#import <Foundation/Foundation.h>
#pragma mark 弹夹
// 弹夹的声明
@interface Bullet : NSObject
{
@public
//
弹夹的成员变量
NSString *_size; // 型号
int _hurt; //
伤害
int _bulletCount;
// 子弹数
}
// 子弹的行为
-(void)doHurt; //造成伤害
@end
// 子弹行为的实现
@implementation Bullet
//造成伤害
-(void)doHurt{
NSLog(@"%@造成了%d点伤害",
_size, _hurt);
_bulletCount --;
NSLog(@"%@还剩%d颗",
_size, _bulletCount);
}
@end
#pragma mark 枪类
// 枪类的声明
@interface Gun : NSObject
{
@public
//
枪类的成员变量
NSString *_name; // 型号
Bullet *_bullet; // 子弹
}
// 枪的行为
-(void)shootByBullet:(Bullet *)bullet;
// 射击
-(void)reload; //
装弹
@end
// 枪类行为的实现
@implementation Gun
// 射击
-(void)shootByBullet:(Bullet *)bullet{
[bullet doHurt];
}
// 装弹
-(void)reload{
_bullet -> _bulletCount = 6;
NSLog(@"装弹完毕,%@内的%@数量为%d",_name,
_bullet ->_size, _bullet ->_bulletCount);
}
@end
#pragma mark 士兵类
// 士兵类的声明
@interface Soldier : NSObject
{
@public
//
士兵类的成员变量
NSString *_name; // 姓名
int _life; //
生命
int _level; //
等级
}
// 士兵的行为
-(void)run; //
跑
-(void)squat; //
蹲
-(void)jump; //
跳
-(void)fire:(Soldier *)army ByGun:(Gun *)gun;
// 开枪
-(void)shootedByBullet:(Bullet *)bullet;
// 被射
-(void)reload:(Gun *)gun;
// 装弹
-(void)cure; //
加血
@end
// 士兵行为的实现
@implementation Soldier
// 跑
-(void)run{
NSLog(@"%@跑", _name);
}
// 蹲
-(void)squat{
NSLog(@"%@蹲", _name);
}
// 跳
-(void)jump{
NSLog(@"%@跳", _name);
}
// 开枪
-(void)fire:(Soldier *)army ByGun:(Gun *)gun{
if (army ->_life >
0) {
if (gun ->_bullet ->_bulletCount >
0) {
NSLog(@"%@用%@射了%@",_name,
gun ->_name, army ->_name);
[gun shootByBullet:gun ->_bullet];
[army shootedByBullet:gun ->_bullet];
} else{
NSLog(@"没子弹了还射个毛!赶紧按 R
键装填子弹");
}
} else{
NSLog(@"死了还要射?!!你个禽兽!!赶紧按 W
键给%@补血,补完还能继续射",army ->_name);
}
}
// 被射
-(void)shootedByBullet:(Bullet *)bullet{
NSLog(@"%@的生命值减少了%d点",_name,
bullet ->_hurt);
_life -= bullet ->_hurt;
NSLog(@"%@的生命值还剩%d", _name, _life);
}
// 装弹
-(void)reload:(Gun *)gun{
NSLog(@"%@正在往%@里装填%@……",
_name, gun ->_name, gun ->_bullet ->_size);
[gun reload];
}
// 加血
-(void)cure{
NSLog(@"%@吃药了,血量增加",_name);
_life += 30;
NSLog(@"%@当前血量为:%d",_name,
_life);
}
@end
int main(int argc,
const char * argv[]) {
@autoreleasepool {
//
创建子弹对象
Bullet *bullet1 = [Bullet
new];
bullet1 -> _size =
@"萝莉弹";
bullet1 -> _hurt =
10;
bullet1 -> _bulletCount =
6;
// 创建枪对象
Gun *gun1 = [Gun
new];
gun1 -> _name =
@"萝莉枪";
gun1 -> _bullet = bullet1;
//
创建士兵对象
Soldier *soldier1 = [Soldier
new];
soldier1 -> _name =
@"怪叔叔";
soldier1 -> _life =
100;
soldier1 -> _level =
2;
//
创建敌人对象
Soldier *loli =[Soldier
new];
loli -> _name =
@"小萝莉";
loli -> _life =
80;
//
提示用户输入指令
NSLog(@"请输入指令 d.跑 e.跳
s.蹲 f.开枪 r.装弹 w.加血");
// 循环控制
while (1) {
// 接收用户输入的指令
int command =
getchar();
getchar();
//
根据指令执行相应动作
switch (command) {
case
'd':
[soldier1 run];
break;
case
'e':
[soldier1 jump];
break;
case
's':
[soldier1 squat];
break;
case
'f':
[soldier1 fire:loli ByGun:gun1];
break;
case
'r':
[soldier1 reload:gun1];
break;
case
'w':
[loli cure];
break;
case
'q':
NSLog(@"射累了,不射了。");
return
0;
break;
default:
break;
}
}
return 0;
}
}
/*
实现:射击游戏
1.弹夹类:
属性:型号,伤害,子弹数
行为:造成伤害
2.枪类:
属性:型号,弹夹
行为:发射子弹,装弹
3.士兵类:
属性:姓名,生命,等级
行为:跑,蹲,跳,开枪,被射,装弹,加血
*/
#import <Foundation/Foundation.h>
#pragma mark 弹夹
// 弹夹的声明
@interface Bullet : NSObject
{
@public
//
弹夹的成员变量
NSString *_size; // 型号
int _hurt; //
伤害
int _bulletCount;
// 子弹数
}
// 子弹的行为
-(void)doHurt; //造成伤害
@end
// 子弹行为的实现
@implementation Bullet
//造成伤害
-(void)doHurt{
NSLog(@"%@造成了%d点伤害",
_size, _hurt);
_bulletCount --;
NSLog(@"%@还剩%d颗",
_size, _bulletCount);
}
@end
#pragma mark 枪类
// 枪类的声明
@interface Gun : NSObject
{
@public
//
枪类的成员变量
NSString *_name; // 型号
Bullet *_bullet; // 子弹
}
// 枪的行为
-(void)shootByBullet:(Bullet *)bullet;
// 射击
-(void)reload; //
装弹
@end
// 枪类行为的实现
@implementation Gun
// 射击
-(void)shootByBullet:(Bullet *)bullet{
[bullet doHurt];
}
// 装弹
-(void)reload{
_bullet -> _bulletCount = 6;
NSLog(@"装弹完毕,%@内的%@数量为%d",_name,
_bullet ->_size, _bullet ->_bulletCount);
}
@end
#pragma mark 士兵类
// 士兵类的声明
@interface Soldier : NSObject
{
@public
//
士兵类的成员变量
NSString *_name; // 姓名
int _life; //
生命
int _level; //
等级
}
// 士兵的行为
-(void)run; //
跑
-(void)squat; //
蹲
-(void)jump; //
跳
-(void)fire:(Soldier *)army ByGun:(Gun *)gun;
// 开枪
-(void)shootedByBullet:(Bullet *)bullet;
// 被射
-(void)reload:(Gun *)gun;
// 装弹
-(void)cure; //
加血
@end
// 士兵行为的实现
@implementation Soldier
// 跑
-(void)run{
NSLog(@"%@跑", _name);
}
// 蹲
-(void)squat{
NSLog(@"%@蹲", _name);
}
// 跳
-(void)jump{
NSLog(@"%@跳", _name);
}
// 开枪
-(void)fire:(Soldier *)army ByGun:(Gun *)gun{
if (army ->_life >
0) {
if (gun ->_bullet ->_bulletCount >
0) {
NSLog(@"%@用%@射了%@",_name,
gun ->_name, army ->_name);
[gun shootByBullet:gun ->_bullet];
[army shootedByBullet:gun ->_bullet];
} else{
NSLog(@"没子弹了还射个毛!赶紧按 R
键装填子弹");
}
} else{
NSLog(@"死了还要射?!!你个禽兽!!赶紧按 W
键给%@补血,补完还能继续射",army ->_name);
}
}
// 被射
-(void)shootedByBullet:(Bullet *)bullet{
NSLog(@"%@的生命值减少了%d点",_name,
bullet ->_hurt);
_life -= bullet ->_hurt;
NSLog(@"%@的生命值还剩%d", _name, _life);
}
// 装弹
-(void)reload:(Gun *)gun{
NSLog(@"%@正在往%@里装填%@……",
_name, gun ->_name, gun ->_bullet ->_size);
[gun reload];
}
// 加血
-(void)cure{
NSLog(@"%@吃药了,血量增加",_name);
_life += 30;
NSLog(@"%@当前血量为:%d",_name,
_life);
}
@end
int main(int argc,
const char * argv[]) {
@autoreleasepool {
//
创建子弹对象
Bullet *bullet1 = [Bullet
new];
bullet1 -> _size =
@"萝莉弹";
bullet1 -> _hurt =
10;
bullet1 -> _bulletCount =
6;
// 创建枪对象
Gun *gun1 = [Gun
new];
gun1 -> _name =
@"萝莉枪";
gun1 -> _bullet = bullet1;
//
创建士兵对象
Soldier *soldier1 = [Soldier
new];
soldier1 -> _name =
@"怪叔叔";
soldier1 -> _life =
100;
soldier1 -> _level =
2;
//
创建敌人对象
Soldier *loli =[Soldier
new];
loli -> _name =
@"小萝莉";
loli -> _life =
80;
//
提示用户输入指令
NSLog(@"请输入指令 d.跑 e.跳
s.蹲 f.开枪 r.装弹 w.加血");
// 循环控制
while (1) {
// 接收用户输入的指令
int command =
getchar();
getchar();
//
根据指令执行相应动作
switch (command) {
case
'd':
[soldier1 run];
break;
case
'e':
[soldier1 jump];
break;
case
's':
[soldier1 squat];
break;
case
'f':
[soldier1 fire:loli ByGun:gun1];
break;
case
'r':
[soldier1 reload:gun1];
break;
case
'w':
[loli cure];
break;
case
'q':
NSLog(@"射累了,不射了。");
return
0;
break;
default:
break;
}
}
return 0;
}
}
相关文章推荐
- 01背包入门
- unit Base64Unit;
- 在不知道json格式的情况下如何使用cjson进行解析
- SharePoint 2013 配置开发环境,需安装VS2012插件
- JavaSE学习总结第20天_IO流2
- 黑马程序员——单例设计模式
- 设置VisualSVN在提交修改时必须输入一定数量的备注信息
- Java注解总结
- 华为
- sqoop简介及安装
- 学习STL过程中的一些零散记录2
- Valid Parentheses
- Codeforces #303 (div2)
- java多线程(二):线程的实现
- 自定义PopupWindow+xml布局+Anim
- 浅谈Docker隔离性和安全性
- leetcode:Validate Binary Search Tree
- 使用git submodule管理一个需要多个分立开发或者第三方repo的项目
- Kphone 4.2 在ok6410上的移植手册
- 接口、抽象类、框架