这是我第一次写博客,如果有语言不当的地方,还请大家对小徐多多谅解(-.-)
先向大家介绍一下自己,我是一名人工智能专业的大一新生,就是那种啥也不会的小白,然后这个游戏我大约写了一周左右吧,400多行代码,里面所有的东西都是自己一点一点想的。做的时候挺开心的,玩的时候更开心!
Show time:
欢迎来到小徐想玩王者荣耀!
**一.我的思路:
**对王者荣耀,我只想说:你认真了,你就输了;你开心了,这就够了!反正受益的都是电脑屏幕后坐着数钱的老马…
二.设定游戏人物,为其配置技能以及血量蓝量:
看不清没关系,一会儿我会在代码中详细介绍的!
三.代码展示:
1.
import random
number = 8 #在这里我设定了八个角色,大家也可以再创作出自己的角色呦
print('*'*40)
print('\t欢迎来到小徐想玩王者荣耀!')
print('*'*40)
#开局bp
ban_1 = int(input('请玩家1禁用一个对方的英雄:'))
ban_2 = int(input('请玩家2禁用一个对方的英雄:'))
#取随机数,决定谁先走
A = random.randint(1, 2)
if A == 1:
print('1号玩家先手,2号玩家后手')#取随机数,决定谁先走
elif A == 2:
print('2号玩家先手,1号玩家后手')
#玩家1选英雄
while True:
role1 = int(input('玩家1请选择您的游戏人物:(1.马保国 2.小阿giao 3.马化腾 4.张大仙 5.马爸爸 6.两个年轻人 7.卢本伟 8.李云龙)'))
if role1 == ban_2:
print('该英雄已经被禁用,请重新输入')
elif role1 <= 0 or role1 > number:
print('输入错误请重新输入')
else:
print('亲爱的1号召唤师恭喜你选择成功')
break
这是开局的选英雄和bp以及决定谁先走
2.
if role1 == 1:
print('马保国:\n---ph:101---\n---lan:101----\n英雄定位:战士\n1技能:耗子尾汁(普攻),对对方造成20点伤害,消耗自身10点蓝\n2技能:不讲武德,保住性命,恢复20生命值,消耗自身10点蓝\n技能三:五连鞭(大招),对对方造成40点伤害,消耗自身30点蓝')
if role1 == 2:
print('小阿giao:\n---ph:151---\n---lan:101----\n英雄定位:坦克\n1技能:giao(普攻),对对方造成15点伤害,消耗自身10点蓝\n2技能:要礼物,恢复15生命值,消耗自身10点蓝\n技能三:一giao我里giaogiao(大招),对对方造成25点伤害,消耗自身20点蓝')
if role1 == 3:
print('马化腾:\n---ph:61---\n---lan:51----\n英雄定位:法师\n1技能:充钱(普攻),让对手进入防沉迷状态,减去其当前生命值的一半,消耗自身10点蓝\n2技能:淦淦淦,私自修改游戏回血设置,大幅度恢复自身50生命值,消耗30蓝\n技能三:金钱的力量(大招),秒杀生命值低于其原始生命值一半的角色,不耗蓝')
if role1 == 4:
print('\n---ph:121---\n---lan:1000+----\n英雄定位:战士\n1技能:吹牛皮(普攻),对对方造成10点伤害,不耗蓝\n2技能:走位走位,吃口药,恢复自身10点生命值,不耗蓝\n技能三:冰心(大招),对自己和对方都造成伤害,对对方造成30点伤害,对自己造成20点伤害,不耗蓝')
if role1 == 5:
print('马爸爸:\n---ph:81---\n---lan:31----\n英雄定位:法师\n1技能:关闭淘宝(普攻),让对方蓝量下降一半,消耗自身30点蓝\n2技能:收购美团外卖,补充能量,恢复自身10点生命值\n技能三:氪金(大招),将对方10点生命值转化为自己的10点蓝量')
if role1 == 6:
print('两个年轻人:\n---ph:71---\n---lan:81----\n英雄定位:刺客\n1技能:不讲武德(普攻),对对方造成30点伤害,消耗自身30点蓝\n2技能:耗子尾汁,吸收马大师精华,恢复25生命值,消耗自身10点蓝\n技能三:偷袭(大招),以迅雷不及掩耳之势对对方造成50点伤害,消耗自身40点蓝')
if role1 == 7:
print('卢本伟:\n---ph:81---\n---lan:201---\n英雄定位:献祭流战士\n 1技能(普攻):召唤卢本伟广场,随意交换自己的蓝量和血量,不耗蓝\n技能2:给阿姨倒一杯卡布奇诺,被阿姨赏识,恢复20点生命值,消耗40点蓝\n技能三(大招):把电脑屏幕吃掉,进入狂暴状态,消耗自身100蓝量,对对手造成60点伤害,但会增加对方50点蓝量')
if role1 == 8:
print('李云龙:\n---ph:131---\n---lan:51---\n英雄定位:软辅型坦克\n 1技能(普攻):给老子上意大利炮,对对方造成10点伤害,不耗蓝\n技能2:召唤二营长,恢复40血量 消耗自身20蓝\n技能三(大招):你他娘的真是个人才,和对方交换血量, 消耗自身30点蓝')
while True:
role2 = int(input('玩家2请选择您的游戏人物:(1.马保国 2.小阿giao 3.马化腾 4.张大仙 5.马爸爸 6.两个年轻人 7.卢本伟 8.李云龙)'))
if role2 == ban_1:
print('该英雄已经被禁用,请重新输入')
elif role2 == role1:
print('该英雄已被选用,不能重复选择呀!')
elif role2 <= 0 or role2 > number:
print('输入错误请重新输入')
else:
print('亲爱的2号召唤师恭喜你选择成功')
break
if role2 == 1:
print('马保国:\n---ph:101---\n---lan:101----\n英雄定位:输出型战士\n1技能:耗子尾汁(普攻),对对方造成20点伤害,消耗自身10点蓝\n2技能:不讲武德,保住性命,恢复20生命值,消耗自身10点蓝\n技能三:五连鞭(大招),对对方造成40点伤害,消耗自身30点蓝')
if role2 == 2:
print('小阿giao:\n---ph:151---\n---lan:101----\n英雄定位:硬辅型坦克\n1技能:giao(普攻),对对方造成10点伤害,消耗自身10点蓝\n2技能:要礼物,恢复15生命值,消耗自身10点蓝\n技能三:一giao我里giaogiao(大招),对对方造成25点伤害,消耗自身20点蓝')
if role2 == 3:
print('马化腾:\n---ph:61---\n---lan:51----\n英雄定位:爆发型法师\n1技能:充钱(普攻),让对手进入防沉迷状态,减去其当前生命值的一半,消耗自身10点蓝\n2技能:淦淦淦,私自修改游戏回血设置,大幅度恢复自身50生命值,消耗30蓝\n技能三:金钱的力量(大招),秒杀生命值低于其原始生命值一半的角色,不耗蓝')
if role2 == 4:
print('张大仙:\n---ph:121---\n---lan:1000+----\n英雄定位:续航型战士\n1技能:吹牛皮(普攻),对对方造成10点伤害,不耗蓝\n2技能:走位走位,吃口药,恢复自身10点生命值,不耗蓝\n技能三:冰心(大招),对自己和对方都造成伤害,对对方造成30点伤害,对自己造成20点伤害,不耗蓝')
if role2 == 5:
print('马爸爸:\n---ph:81---\n---lan:31----\n英雄定位:持续型法师\n1技能:关闭淘宝(普攻),让对方蓝量下降一半,消耗自身30点蓝\n2技能:收购美团外卖,补充能量,恢复自身10点生命值\n技能三:氪金(大招),将对方10点生命值转化为自己的10点蓝量')
if role2 == 6:
print('两个年轻人:\n---ph:71---\n---lan:81----\n英雄定位:爆炸型刺客\n1技能:不讲武德(普攻),对对方造成30点伤害,消耗自身30点蓝\n2技能:耗子尾汁,吸收马大师精华,恢复25生命值,消耗自身10点蓝\n技能三:偷袭(大招),以迅雷不及掩耳之势对对方造成50点伤害,消耗自身40点蓝')
if role2 == 7:
print('卢本伟:\n---ph:81---\n---lan:201---\n英雄定位:献祭流战士\n 1技能(普攻):召唤卢本伟广场,随意交换自己的蓝量和血量,不耗蓝\n技能2:给阿姨倒一杯卡布奇诺,被阿姨赏识,恢复20点生命值,消耗40点蓝\n技能三(大招):把电脑屏幕吃掉,进入狂暴状态 ,消耗自身100蓝量,对对手造成60点伤害,但会增加对方50点蓝量')
if role2 == 8:
print('李云龙:\n---ph:131---\n---lan:51---\n英雄定位:软辅型坦克\n 1技能(普攻):给老子上意大利炮,对对方造成10点伤害,不耗蓝\n技能2:召唤二营长,恢复40血量 消耗自身20蓝\n技能三(大招):你他娘的真是个人才,和对方交换血量 ,消耗自身30点蓝')
这是英雄介绍,在玩家选择之后会给出提示的,防止一些没玩过的玩家处于mb状态。
3.
print('注明:\n’1’代表玩家1普攻\n‘2’代表玩家2普攻\n‘3’代表玩家1回血\n‘4’代表玩家2回血\n’5‘代表玩家1大招\n’6‘代表玩家2大招\n提示:每个英雄的1技能(普攻),有百分之十的几率造成追击效果,即连续使用两次\n每个英雄的大招有百分之二的几率造成暴击,即一招制敌!')
print('规则:选手通过控制英雄进行作战,每个英雄初始生命值和蓝量均为100左右\n每一方蓝量或ph先消耗完则被淘汰')
print('请各位召唤师发挥自己最大的智慧,取得战争的胜利吧!\n你们的战斗时刻会受到国际组织的时刻关注,他们会有20%的可能会为你们添油加醋的呦!')
这是游戏规则的介绍,介绍攻击回血键位,及一些游戏中的彩蛋:
暴击 追加 随机轰炸(血上加霜)或随机回血(血中送碳)
*** 这个游戏中人物的血量和蓝量都设计的非常巧妙,需要我们考虑好每一步的打法,每一步的小差错,都会使局面逆转,需要你平衡蓝量与血量,算是个烧脑and不确定性很强的游戏吧***
4.
class Person:
def __init__(self, name, hp, attack, lan, chushishengmingzhi, chushilanliang):
self.name = name
self.hp = hp
self.attack = attack
self.lan=lan
self.chushishengmingzhi=chushishengmingzhi
self.chushilanliang=chushilanliang
def __str__(self):
return '{}的血量还剩下{},{}的蓝还剩下{}'.format(self.name, self.hp, self.name,self.lan)
这里首先设定了一个类,然后调用了init函数,为其附上属性(name, hp, attack, lan, chushishengmingzhi, chushilanliang)
接着调用了str函数,使其在接下来的每个回合都可以随时注意血量蓝量的变化
5.
# 普通攻击函数
def small_kill(self, name):
if self.name == "马保国":
name.hp -= 20
self.lan -= 10
elif self.name == "小阿giao":
name.hp -= 15
self.lan -= 10
elif self.name == "马化腾":
name.hp = name.hp/2
self.lan -= 10
elif self.name == "张大仙":
name.hp -= 10
elif self.name == "马爸爸":
name.lam = name.lan/2
self.lan -= 30
elif self.name == "两个年轻人":
name.hp -= 30
self.lan -= 30
elif self.name == "卢本伟":
self.hp,self.lan=self.lan,self.hp
elif self.name == "李云龙":
name.hp -= 10
if role1 == 1 and x == 1:
self.attack = "耗子尾汁"
elif role1 == 2 and x == 1:
self.attack = "giao"
elif role1 == 3 and x == 1:
self.attack = "充钱,马化腾让对手陷入防沉迷状态"
elif role1 == 4 and x == 1:
self.attack = "吹牛皮,mvp理所应当"
elif role1 == 5 and x == 1:
self.attack = "关闭淘宝,对手蓝量下降一半"
elif role1 == 6 and x == 1:
self.attack = "不讲武德"
elif role1 == 7 and x == 1:
self.attack = "召唤卢本伟广场,随意交换自己的蓝量和血量"
elif role1 == 8 and x == 1:
self.attack = "给老子上意大利炮"
elif role2 == 1 and x == 2:
self.attack = "耗子尾汁"
elif role2 == 2 and x == 2:
self.attack = "giao"
elif role2 == 3 and x == 2:
self.attack = "充钱,马化腾让对手陷入防沉迷状态"
elif role2 == 4 and x == 2:
self.attack = "吹牛皮,mvp理所应当"
elif role2 == 5 and x == 2:
self.attack = "关闭淘宝,对手蓝量下降一半"
elif role2 == 6 and x == 2:
self.attack = "不讲武德"
elif role2 == 7 and x == 2:
self.attack = "召唤卢本伟广场,随意交换自己的蓝量和血量"
elif role2 == 8 and x == 2:
self.attack = "给老子上意大利炮"
print('{}使用{},普通攻击了{}'.format(self.name, self.attack, name.name))
print(self, ' ', name) #输出剩余血量
这里定义了普攻函数
6.
# 大招攻击函数
def big_kill(self, name):
if self.name == "马保国":
name.hp -= 40
self.lan -= 30
elif self.name == "小阿giao":
name.hp -= 25
self.lan -= 20
elif self.name == "马化腾":
if name.hp < name.chushishengmingzhi/2:
name.hp = 0
else:
name.hp = name.hp
elif self.name == "张大仙":
name.hp -= 30
self.hp -= 20
elif self.name == "马爸爸":
name.hp -= 10
self.lan += 10
elif self.name == "两个年轻人":
name.hp -= 50
self.lan -= 40
elif self.name == "卢本伟":
name.hp -= 60
self.lan -= 100
name.lan+=50
elif self.name == "李云龙":
name.hp,self.hp = self.hp,name.hp
self.lan-=30
if role1 == 1 and x == 5:
self.attack = "以极快的手速打出了五连鞭"
elif role1 == 2 and x == 5:
self.attack = "使用一giao我里giaogiao"
elif role1 == 3 and x == 5:
self.attack = "相信钱可以解决一切问题,对低于自身血量50%的人物秒杀"
elif role1 == 4 and x == 5:
self.attack = "出了一个冰心,对自己和对方都造成伤害"
elif role1 == 5 and x == 5:
self.attack = "进行不断地氪金"
elif role1 == 6 and x == 5:
self.attack = "不讲武德偷袭"
elif role1 == 7and x == 5:
self.attack = "进入狂暴状态 -消耗自身100蓝量,对对手造成60点伤害"
elif role1 == 8 and x == 5:
self.attack = "你他娘的真是个人才,和对方交换血量"
elif role2 == 1 and x == 6:
self.attack = "以极快的手速打出了五连鞭"
elif role2 == 2 and x == 6:
self.attack = "使用一giao我里giaogiao"
elif role2 == 3 and x == 6:
self.attack = "相信钱可以解决一切问题,对低于自身血量50%的人物秒杀"
elif role2 == 4 and x == 6:
self.attack = "出了一个冰心,对自己和对方都造成伤害"
elif role2 == 5 and x == 6:
self.attack = "进行不断地氪金"
elif role2 == 6 and x == 6:
self.attack = "不讲武德偷袭"
elif role2 == 7and x == 6:
self.attack = "进入狂暴状态 -消耗自身100蓝量,对对手造成60点伤害"
elif role2 == 8 and x == 6:
self.attack = "你他娘的真是个人才,和对方交换血量"
print('{}{},大招攻击了{}'.format(self.name, self.attack, name.name))
print(self, ' ', name)
这里定义了大招攻击函数
7.
# 回血函数
def reback(self):
if self.name == "马保国":
self.hp += 20
self.lan -= 10
elif self.name == "小阿giao":
self.hp += 15
self.lan -= 10
elif self.name == "马化腾":
self.hp += 50
self.lan -= 30
elif self.name == "张大仙":
self.hp += 10
elif self.name == "马爸爸":
self.hp += 10
elif self.name == "两个年轻人":
self.hp += 25
self.lan -= 10
elif self.name == "卢本伟":
self.hp += 20
self.lan -= 40
elif self.name == "李云龙":
self.hp += 40
self.lan -= 20
if role1 == 1 and x == 3:
self.attack = "不讲武德,保住性命"
elif role1 == 2 and x == 3:
self.attack = "太难了,要到礼物"
elif role1 == 3 and x == 3:
self.attack = "淦淦淦,私自修改游戏回血设置"
elif role1 == 4 and x == 3:
self.attack = "走位,走位,吃口药"
elif role1 == 5 and x == 3:
self.attack = "收购美团外卖,补充能量"
elif role1 == 6 and x == 3:
self.attack = "耗子尾汁,吸收马大师精华"
elif role1 == 7 and x == 3:
self.attack = "给阿姨倒了一杯卡布奇诺,被阿姨赏识"
elif role1 == 8 and x == 3:
self.attack = "召唤二营长"
elif role2 == 1 and x == 4:
self.attack = "不讲武德,保住性命"
elif role2 == 2 and x == 4:
self.attack = "太难了,要到礼物"
elif role2 == 3 and x == 4:
self.attack = "淦淦淦,私自修改游戏回血设置"
elif role2 == 4 and x == 4:
self.attack = "走位,走位,吃口药"
elif role2 == 5 and x == 4:
self.attack = "收购美团外卖,补充能量"
elif role2 == 6 and x == 4:
self.attack = "耗子尾汁,吸收马大师精华"
elif role2 == 7 and x == 4:
self.attack = "给阿姨倒了一杯卡布奇诺,被阿姨赏识"
elif role2 == 8 and x == 4:
self.attack = "召唤二营长"
if self.name == "马保国":
xyp = 20
elif self.name == "小阿giao":
xyp = 15
elif self.name == "马化腾":
xyp = 50
elif self.name == "张大仙":
xyp = 10
elif self.name == "马爸爸":
xyp = 10
elif self.name == "两个年轻人":
xyp = 25
elif self.name == "卢本伟":
xyp = 20
elif self.name == "李云龙":
xyp = 40
print('{}{},恢复了'.format(self.name, self.attack,), xyp, '滴血')
print(self)
这里定义了一个回血函数
8.
print('----------游戏开始啦-----------')
count = 1
x = 0
MBG = Person('马保国', 101, 0, 101, 101, 1010)#需要修改lan的值
XAG = Person('小阿giao', 151, 0, 101, 150, 101)
MHT = Person('马化腾', 61, 0, 51, 61, 51)
ZDX = Person('张大仙', 121, 0, 10000, 121, 10000)
MBB = Person('马爸爸', 81, 0, 31, 81, 31)
NQR = Person('两个年轻人', 71, 0, 81, 71, 81)
LBW = Person('卢本伟',81,0,201,81,201)
LYL = Person('李云龙',131,0,51,131,51)
现在开始进入游戏的实现阶段
为人物英雄附上其各种属性
9.
if role1 == 1:
a = MBG
if role1 == 2:
a = XAG
if role1 == 3:
a = MHT
if role1 == 4:
a = ZDX
if role1 == 5:
a = MBB
if role1 == 6:
a = NQR
if role1 == 7:
a = LBW
if role1 == 8:
a = LYL
if role2 == 1:
b = MBG
if role2 == 2:
b = XAG
if role2 == 3:
b = MHT
if role2 == 4:
b = ZDX
if role2 == 5:
b = MBB
if role2 == 6:
b = NQR
if role2 == 7:
b = LBW
if role2 == 8:
b = LYL
确定人物
10.
while True:
userIn = int(input('请输入数字 1 , 2, 3, 4, 5, 6:'))
x = userIn
if userIn == 1:
aa = random.randint(1, 100)
a.small_kill(b)
if 10 <= aa < 20:
a.small_kill(b)
print('恭喜你打出了追加效果,棒棒哒!')
print('------第{}回合结束------'.format(count))
elif userIn ==2:
bb = random.randint(1, 100)
b.small_kill(a)
if 10 <= bb < 20:
b.small_kill(a)
print('恭喜你打出了追加效果,棒棒哒!')
elif userIn == 3:
a.reback()
print('------第{}回合结束------'.format(count))
elif userIn == 4:
b.reback()
print('------第{}回合结束------'.format(count))
elif userIn == 5: ## 大招加上2%的暴击率,直接致死
a.big_kill(b)
cc = random.randint(1, 100)
if 1 <= cc <= 2:
b.hp = 0
print('恭喜你打出了暴击效果,一招制敌,干饭了干饭了!')
print('------第{}回合结束------'.format(count))
elif userIn == 6:
b.big_kill(a)
dd = random.randint(1, 100)
if 1 <= dd <= 2:
a.hp = 0
print('恭喜你打出了暴击效果,一招制敌,干饭了干饭了!')
print('------第{}回合结束------'.format(count))
else:
print('输入错误,请重新输入')
if a.hp <= 0 or a.lan <= 0:
print('------游戏结束------\n恭喜你玩家2获胜,干得漂亮!\n玩家1遗憾败北,这操作下饭下饭!')
break
elif b.hp <= 0 or b.lan <= 0:
print('------游戏结束------\n恭喜你玩家获胜1,干得漂亮!\n玩家2遗憾败北,这操作下饭下饭!')
break
count += 1
print('------第{}回合开始------'.format(count))
cc=random.randint(1,10)
if 1<cc<4:
print('----紧急通知,你们的战斗引来了世界和平邪会的不满,给你们血上加霜,每个人血量减10点----')
a.hp-=10
b.hp-=10
elif 5<cc<8:
print('----请注意,你们的战斗受到了国际红十字邪会的关注,为你们血中送碳,每个人血量加10点----')
a.hp += 10
b.hp += 10
这是各种攻击功能的实现,以及用随机数实现暴击,追加,随机等的各种效果。
四.总结:
以上便是我所有的代码,赶紧复制下来和小伙伴玩一下吧,如果它给你带来了快乐,我觉得我就成功了!(哈哈哈)
另外这是小徐冒着四级英语不过,期末挂科的风险连夜写的,如果你喜欢的话,就给我点个关注吧!
有可能你就是我第一个粉丝呢!(渺小卑微)
qq:2511864242(欢迎加我一起学习)
最后祝大家学习快乐,干饭愉快!谢谢你的观看,再见!(bye~)