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基础之面向对象(回合制游戏)相关推荐
- python中四种进制的输出_Python基础语法和进制
基础语法 开发种常用的快捷键 键位 功能 ctrl + / 添加注释和取消注释 ctrl + s 保存 ctrl + c 复制 ctrl + v 粘贴 ctrl + x 剪切 ctrl + z 撤销 ...
- python拍7游戏代码_Python基础语法-7(小游戏)
代码太长?内容太复杂? 不用担心!往下看↓ 知道为什么python简洁,省力么? 就是因为python有很多写好的工具箱可以直接调用,我们只要开头给一个命令,在我们的代码 就可以直接使用它的功能了,这 ...
- 视频教程-快速入门Python基础教程_Python基础知识大全-Python
快速入门Python基础教程_Python基础知识大全 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥99.00 立即 ...
- 视频教程-快速入门Python基础教程_Python基础进阶视频-Python
快速入门Python基础教程_Python基础进阶视频 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥199.00 立 ...
- C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例
C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例 Unity中循环遍历每个数据,并做出判断 很多时候,游戏在玩家做出判断以后,游戏程序会遍历玩家身上大量的所需数据,然后做出判断,即首先判 ...
- python打地鼠游戏教程_Python入门小游戏,炫酷打地鼠教程第二部分,都是干货
还记得那位玩打地鼠小游戏,然后学会python的女白领吗? 那份教程还没有写完,只写到了对游戏中精灵的定义,然后我们继续写. 实现了游戏精灵的定义后,我们就要开始展现真正的技术啦,也就是写主程序. 首 ...
- python开发游戏教程_Python开发星际游戏实例教程
这篇文章主要为大家详细介绍了Python外星人入侵游戏编程完整的实现思路,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 PYTHON游戏编程外星人入侵的完整实现思路,具体内容如下 准备工作:下载p ...
- python web游戏实例_python实现的简单文本类游戏实例
Python应用与实践 Python应用与实践 目录 1. Python是什么? 1.1. Python语言 1.2. Python哲学 2. Python在工 ...
- python井字棋小游戏代码_python实现井字棋小游戏
本文为大家分享了python实现井字棋小游戏,供大家参考,具体内容如下 周五晚上上了python的选修课,本来以为老师是从python的基础语法开始的,没想到是从turtle画图开始,正好补上了我以前 ...
最新文章
- 业内大牛送给计算机方向学生的7个实用建议!
- CentOS 6.0安装VNC Server
- 小x的质数(线性O(n)筛素数)
- [SOJ] connect components in undirected graph
- 皮卡丘为什么不进化_精灵宝可梦:进化后反而变弱的精灵!皮卡丘:知道我为什么不进化了?反而会变弱!...
- 32 bit 与 64 bit 程序(2)比较
- 数据结构实验之排序三:bucket sort
- oracle 客户端连接数_转载:查看Oracle连接数
- 前端怎么画三角形_WEB前端-CSS三角形绘制方法
- mysql s.`name`_MySQL的基础操作命令
- 中英文对照 —— 手机 App/PC 端软件(系统)、互联网
- LeetCode解题思路—快慢指针
- 网站服务器停止运行,服务器已停止响应是怎么回事
- 基于中科院-CASIA-GaitDatasetB步态图像轮廓数据库的步态周期检测与步态角度特征MATLAB源码介绍
- 乐有家携手法大大,实现租房签约数字化
- 同花顺-图像算法工程师-笔试题
- 元学习入门:MAML
- LeetCode/LintCode 题解丨一周爆刷字符串:URL 编码
- 为什么我从PR里面导出来的视频,在电脑上播放是正常的,微信发给朋友后,形状就变了,扭曲了一样的
- 多种ubuntu引导修复方法
热门文章
- 苏州大学9月计算机考试试题,苏州大学计算机组成题库 (9)
- HTML文字加粗、下划线、倾斜、删除线:文本格式化标签
- 资源| 电子书库-永久有效,持续更新!
- 22春天津大学《工程地质学》在线作业一
- 深入浅出matplotlib(98):一条曲线多种颜色显示
- 全球及中国无线储罐计量器行业产销前景及运营动态研究报告2021-2027年版
- 每日新闻:中国母婴幼市场将达3万亿;基于内存计算技术的智能芯片问世;谷歌推图片压缩工具Squoosh;腾讯选定全球地图数据提供商...
- MMOCR windows安装问题:Could not build wheels for lanms-neo,which is required to install pyproject...
- python基础四_01_面向对象
- Dell Inspiron 15 5000 series 设置u盘启动