300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 奥特曼打小怪兽python代码简单版_OC(奥特曼打小怪兽游戏)

奥特曼打小怪兽python代码简单版_OC(奥特曼打小怪兽游戏)

时间:2022-09-15 11:33:56

相关推荐

奥特曼打小怪兽python代码简单版_OC(奥特曼打小怪兽游戏)

FJMonster.h//怪兽类

#import

FJUltraman;

/**定义一个怪兽类有名字和生命值*/

NSObject{

NSString *_name;

NSUInteger_hp;

}

+ (instancetype) monsterWithName:(NSString *)name hp:(NSUInteger)hp;

- (instancetype) initWithName:(NSString *) name hp:(NSUInteger)hp;

//怪兽攻击奥特曼

- (void) attack:(FJUltraman *) ultraman;

- (NSUInteger) hp;

- (void) setHp:(NSUInteger) hp;

- (NSString *) name;

FJMonster.m

#import"FJMonster.h"

#import"FJUltraman.h"

@implementationFJMonster

+ (instancetype) monsterWithName:(NSString *)name hp:(NSUInteger)hp{

return [[self alloc] initWithName:(NSString *)name hp:(NSUInteger)hp];

}

- (instancetype) initWithName:(NSString *)name hp:(NSUInteger)hp{

if (self = [super init]) {

_name = name;

_hp = hp;

}

returnself;

}

- (void)attack:(FJUltraman *)ultraman{

//游戏设定:小怪兽对奥特曼造成5-15的伤害

NSUInteger injury = arc4random() % 11 + 5;

NSInteger newHp = ultraman.hp - injury;

[ultraman setHp:newHp < 0? 0 : newHp];

}

- (NSString *)name{

return _name;

}

- (NSUInteger)hp{

return _hp;

}

- (void)setHp:(NSUInteger)hp{

_hp = hp;

}

- (NSString *)description{

return[NSStringstringWithFormat:@"%@小怪兽的生命值:%ld",_name,_hp];

}

@end

FJUltraman.h

#import

@classFJMonster;

@interface FJUltraman : NSObject{

NSUInteger_hp;

NSUInteger_mp;

NSString *_name;

}

+ (instancetype) ultramanWithName :(NSString *)name

hp:(NSUInteger)hp

mp:(NSUInteger)mp;

- (instancetype) initWithName:(NSString *)name

hp:(NSUInteger)hp

mp:(NSUInteger)mp;

- (void) attack:(FJMonster *) monster;

- (void) hugeAttack:(FJMonster *) monster;

- (void) magicAttack:(NSArray *) monsters;

- (NSString *) name;

- (NSUInteger) mp;

- (NSUInteger) hp;

- (void) setHp:(NSUInteger) hp;

@end

FJUltraman.m

#import"FJUltraman.h"

#import"FJMonster.h"

@implementationFJUltraman

+ (instancetype)ultramanWithName:(NSString *)name hp:(NSUInteger)hp mp:(NSUInteger)mp{

return [[self alloc]initWithName:(NSString *) name hp:(NSUInteger) hp mp:(NSUInteger) mp];

}

- (instancetype) initWithName:(NSString *) name hp:(NSUInteger) hp mp:(NSUInteger) mp {

if (self = [super init]) {

_name = name;

_hp = hp;

_mp = mp;

}

returnself;

}

//这个方法是奥特曼用指定的伤害值攻击怪兽

//通常重复的代码都可以封装成一个方法

- (void) beatMonster:(FJMonster *) monster withInjury:(NSUInteger) injury{

NSUInteger newHp = monster.hp - injury;

monster.hp = newHp < 0 ? 0 : newHp;

//点语法用在赋值运算的右边相当于调用了getter方法,左边相当于调用了setter方法

}

//奥特曼的普通攻击对小怪兽造成20-30的伤害

- (void) attack:(FJMonster *)monster{

NSUInteger injury = arc4random() % 11 +20;

[self beatMonster:monster withInjury:injury];

_mp+=5;//每次奥特曼普通攻击魔法值加5

}

//奥特曼的大招对小怪兽产生一个50或者3/4的伤害

- (void)hugeAttack:(FJMonster *)monster{

NSUInteger injury = monster.hp * 0.75 <= 50 ? 50 : (monster.hp * 0.75);

[self beatMonster:monster withInjury:injury];

_mp-=60;//每次奥特曼放大招魔法值减去60;

}

//奥特曼魔法攻击一群小怪兽,小怪兽的生命值减去10

- (void)magicAttack:(NSArray *)monsters{

for (FJMonster *monster in monsters) {

if (monster.hp > 0) {

[self beatMonster:monster withInjury:10];

}

}

_mp-=40;//每次奥特曼魔法攻击mp减少40

}

- (NSString *)name{

return _name;

}

- (NSUInteger)mp{

return _mp;

}

- (NSUInteger)hp{

return _hp;

}

- (void)setHp:(NSUInteger)hp{

_hp = hp;

}

- (NSString *)debugDescription{

return[NSStringstringWithFormat:@"%@奥特曼的生命值是:%ld\n",_name,_hp];

}

@end

main.m

#import

#import"FJUltraman.h"

#import"FJMonster.h"

BOOL all_dead(NSArray *monsters){

for (FJMonster * monster in monsters) {

if (monster.hp > 0) {

return NO;

}

}

returnYES;

}

FJMonster *selectOne(NSArray *monsters){

return monsters[arc4random() % monsters.count];

}

int main(int argc, const char * argv[]) {

@autoreleasepool{

FJUltraman *u = [FJUltraman ultramanWithName:@"鹿晗" hp:423 mp:377];

NSMutableArray*monsters = [NSMutableArrayarrayWithObjects:

[FJMonster monsterWithName:@"cat1号" hp:100],

[FJMonster monsterWithName:@"cat2号" hp:180],

[FJMonster monsterWithName:@"cat3号" hp:89],nil];

int round=1;

do{

NSLog(@"*************第%02d回合*************",round);

//产生一个随机数0-6普通攻击 7-8魔法攻击 9放大招

int rate = arc4random() % 10;

if (rate < 7) {

FJMonster *m = selectOne(monsters);//从一组小怪兽中选一个活的

[u attack:m];//奥特曼普通攻击怪兽

if (m.hp > 0) {//如果怪兽还活着就得还击

[m attack:u];

}else{//如果怪兽死了,从怪兽数组中移除该怪兽

[monsters removeObject:m];

}

}

else if (rate < 9){

if (u.mp >= 40) {

NSLog(@"奥特曼使用了魔法攻击!");

[u magicAttack:monsters];//奥特曼使用魔法攻击一群怪兽

for (int i=0; i

FJMonster *m = monsters[i];//在这个怪兽数组中若还有怪兽活着就得还击

if (m.hp > 0) {

[m attack:u];

}else{

[monsters removeObject:m];

}

}

}

}else

{

if (u.mp >= 60) {

NSLog(@"奥特曼使用了大招!!");

FJMonster *m = selectOne(monsters);

[u hugeAttack:m];

if (m.hp>0) {

[m attack:u];

}else{

[monsters removeObject:m];

}

}

}

NSLog(@"%@",u);//打印出奥特曼的生命值

for (FJMonster *m in monsters) {

NSLog(@"%@",m);

}

NSLog(@"\n");

round +=1;

}while(u.hp > 0 && !all_dead(monsters) );

if (u.hp > 0) {

NSLog(@"%@胜利",u.name);

}else{

NSLog(@"怪兽胜利");

}

}

return 0;

}

运行结果截图:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。