失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python回合制游戏教程_Python基础之面向对象(回合制游戏)

python回合制游戏教程_Python基础之面向对象(回合制游戏)

时间:2020-11-28 23:56:44

相关推荐

python回合制游戏教程_Python基础之面向对象(回合制游戏)

需求:

回合制游戏:

大话西游、梦幻西游、魔塔...

角色:

Hero:

属性:

名字、生命值、伤害值(浮动随机值)

方法:

攻击方法

Boss:

属性:

名字、生命值、伤害值(浮动)

方法:

攻击方法

实现思路伪代码:

Hero

Boss

while True:

if Hero.活着:

Hero.攻击(Boss)

if Boss.生命值<= 0:

print(“You Win”)

break

if Boss.没挂:

Boss.反击(Hero)

if Hero.生命值<= 0:

print(“Boss Win”)

break

回合制游戏V1.0

import random

import time

class Hero():

def __init__(self,name,hp,damage):

self.name = name

self.hp = hp

self.damage = damage

#英雄攻击boss的方法,boss做参数,传进来

def attack_boss(self,boss):

# 伤害值增加随机浮动伤害值

rand_damge = random.randint(1,99)

boss.hp -= (self.damage+rand_damge)

print("英雄:%s 攻击Boss:%s 伤害值:%d Boss剩余生命值:%d"

%(self.name,boss.name,self.damage+rand_damge,boss.hp))

class Boss():

def __init__(self, name, hp, damage):

self.name = name

self.hp = hp

self.damage = damage

# 英雄攻击boss的方法,boss做参数,传进来

def attack_hero(self, hero):

rand_damge = random.randint(1, 35)

hero.hp -= (self.damage+rand_damge)

print("Boss:%s 攻击英雄:%s 伤害值:%d 英雄剩余生命值:%d"

% (self.name, hero.name, self.damage+rand_damge, hero.hp))

count = 1

#创建英雄

hero1 = Hero('至尊宝',1000,20)

#创建Boss

boss1 = Boss('白晶晶',3000,5)

while True:

print("------------------【round%d】-----------------"%count)

if hero1.hp > 0:

hero1.attack_boss(boss1)

if boss1.hp <= 0:

print("至尊宝获胜")

break

if boss1.hp > 0:

boss1.attack_hero(hero1)

if hero1.hp <= 0:

print("晶晶获胜")

break

count += 1

time.sleep(0.8)

print('\n'*5)

控制台截图

回合制游戏V1.1 (增加暴击)

v1.1

新增功能:

1.暴击伤害

概率性的暴击

伤害值*2

暴击伤害打印的突出(颜色,字体加粗)

这里定的暴击伤害的出现概率是20%import random

import time

class Hero():

def __init__(self,name,hp,damage):

self.name = name

self.hp = hp

self.damage = damage

#英雄攻击boss的方法,boss做参数,传进来

def attack_boss(self,boss):

rand_num = random.randint(1,10)

if rand_num == 1 or rand_num == 2:

#调用暴击伤害

self.attack2_boss(boss)

else:

#调用普通伤害

self.attack1_boss(boss)

#普通伤害

def attack1_boss(self,boss):

# 伤害值增加随机浮动伤害值

rand_damge = random.randint(1, 99)

boss.hp -= (self.damage + rand_damge)

print("英雄:%s 攻击Boss:%s 伤害值:%d Boss剩余生命值:%d"

% (self.name, boss.name, self.damage + rand_damge, boss.hp))

#暴击伤害

def attack2_boss(self,boss):

# 伤害值增加随机浮动伤害值

rand_damge = random.randint(1, 99)

boss.hp -= (self.damage + rand_damge)*2

print("英雄:%s 攻击Boss:%s \033[1;31m暴击伤害值:%d\033[0m Boss剩余生命值:%d"

% (self.name, boss.name, (self.damage + rand_damge)*2, boss.hp))

#技能伤害

# def attack3_boss(self,boss):

# pass

class Boss():

def __init__(self, name, hp, damage):

self.name = name

self.hp = hp

self.damage = damage

# 英雄攻击boss的方法,boss做参数,传进来

def attack_hero(self, hero):

rand_damge = random.randint(1, 35)

hero.hp -= (self.damage+rand_damge)

print("Boss:%s 攻击英雄:%s 伤害值:%d 英雄剩余生命值:%d"

% (self.name, hero.name, self.damage+rand_damge, hero.hp))

count = 1

#创建英雄

hero1 = Hero('至尊宝',1000,20)

#创建Boss

boss1 = Boss('白晶晶',3000,5)

while True:

print("------------------【round%d】-----------------"%count)

if hero1.hp > 0:

hero1.attack_boss(boss1)

if boss1.hp <= 0:

print("至尊宝获胜")

break

if boss1.hp > 0:

boss1.attack_hero(hero1)

if hero1.hp <= 0:

print("晶晶获胜")

break

count += 1

time.sleep(0.8)

print('\n'*5)

控制台截图

回合制游戏V1.2 (增加技能攻击)

v1.2

新增功能:

1.技能伤害

封装技能类

属性:

技能名

伤害值

2.英雄创建的时候,需要直接给与技能

这里定的技能攻击伤害值为300,出现概率为10%import random

import time

class Hero():

def __init__(self,name,hp,damage,skillQ):

self.name = name

self.hp = hp

self.damage = damage

self.skillQ = skillQ

#英雄攻击boss的方法,boss做参数,传进来

def attack_boss(self,boss):

rand_num = random.randint(1,10)

if rand_num == 1 or rand_num == 2:

#调用暴击伤害

self.attack2_boss(boss)

elif rand_num == 3:

#调用技能伤害

self.attack3_boss(boss)

else:

#调用普通伤害

self.attack1_boss(boss)

#普通伤害

def attack1_boss(self,boss):

# 伤害值增加随机浮动伤害值

rand_damge = random.randint(1, 99)

boss.hp -= (self.damage + rand_damge)

print("英雄:%s 攻击Boss:%s 伤害值:%d Boss剩余生命值:%d"

% (self.name, boss.name, self.damage + rand_damge, boss.hp))

#暴击伤害

def attack2_boss(self,boss):

# 伤害值增加随机浮动伤害值

rand_damge = random.randint(1, 99)

boss.hp -= (self.damage + rand_damge)*2

print("英雄:%s 攻击Boss:%s \033[1;31m暴击伤害值:%d\033[0m Boss剩余生命值:%d"

% (self.name, boss.name, (self.damage + rand_damge)*2, boss.hp))

#技能伤害

def attack3_boss(self,boss):

boss.hp -= self.skillQ.skillDamage

print("英雄:%s 攻击Boss:%s \033[1;34m技能伤害值:%d\033[0m Boss剩余生命值:%d"

% (self.name, boss.name, self.skillQ.skillDamage, boss.hp))

class Boss():

def __init__(self, name, hp, damage):

self.name = name

self.hp = hp

self.damage = damage

# 英雄攻击boss的方法,boss做参数,传进来

def attack_hero(self, hero):

rand_damge = random.randint(1, 50)

hero.hp -= (self.damage+rand_damge)

print("Boss:%s 攻击英雄:%s 伤害值:%d 英雄剩余生命值:%d"

% (self.name, hero.name, self.damage+rand_damge, hero.hp))

#创建技能类

class Skill():

def __init__(self,skillName,skillDamage):

self.skillName = skillName

self.skillDamage = skillDamage

count = 1

#创建技能对象

skillQ = Skill('当头一棒',300)

#创建英雄

hero1 = Hero('至尊宝',1000,20,skillQ)

#创建Boss

boss1 = Boss('白晶晶',3000,5)

while True:

print("------------------【round%d】-----------------"%count)

if hero1.hp > 0:

hero1.attack_boss(boss1)

if boss1.hp <= 0:

print("至尊宝获胜")

break

if boss1.hp > 0:

boss1.attack_hero(hero1)

if hero1.hp <= 0:

print("晶晶获胜")

break

count += 1

time.sleep(0.8)

print('\n'*5)

控制台截图

over......

如果觉得《python回合制游戏教程_Python基础之面向对象(回合制游戏)》对你有帮助,请点赞、收藏,并留下你的观点哦!

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