Python类王者荣耀小游戏
一个有趣的(无聊的)关于类的Python王者荣耀小游戏(咳咳)
最近老师给我们布置了一个类的作业,我在网上看(瞥)了好多教程,一时间 心领神会,心血来潮,,心有灵犀,,,不对。。不管了,写了一个无聊的游戏练练手
o(# ̄▽ ̄)==O)) ̄0 ̄")o 金钢飞拳~!!
import random as rd
import time
import threading
import os# 生命体
class Life:def __init__(self, name='LIFE', life=100, attack=100, defend=100, money=300):self.name = nameself.life = lifeself.attack = attackself.defend = defendself.money = moneyself.vis_lt = []def fight(self):pass# 武器装备,技能
class Weapon:def __init__(self):pass# 英雄
class Hero(Life):def __init__(self, name='镜', life=3000, attack=200, defend=100, money=300, ocu_name='打野'):super().__init__(name, life, attack, defend, money)self.ocu_name = ocu_nameself.move()self.kill_monster = 0self.kill_hero = 0self.hurt_level = self.attack # 伤害水平def __str__(self):return '%s:%s life:%s attack:%s defend:%s money:%s position:%s' % (self.ocu_name, self.name, self.life, self.attack, self.defend, self.money, self.position)# 1英雄随机运动寻找目标def move(self):enemy = monsterif isinstance(enemy, Monsters) and len(enemy.mst_lt) != 0:count = 0while len(self.vis_lt) < 1: # 视野空 可在此设置最小同时打野数count += 1self.p_x = rd.randrange(0, 400, 10)self.p_y = rd.randrange(0, 400, 10)self.position = (self.p_x, self.p_y)for mon in enemy.mst_lt:if abs(mon.p_x - self.p_x) <= 20 and abs(mon.p_y - self.p_y) <= 20: # 视野范围20x20self.vis_lt.append(mon) # 发现野怪mon.vis_lt.append(self) # 同时被发现,可能被多个野怪发现if len(self.vis_lt) != 0 and self.life > 0:print('搜寻%s次 终于找到%s只野怪:' % (count, len(self.vis_lt)), *self.vis_lt, sep='\n')else:print('生命值%s,you have been killed by %s!!!\n累计打野数:%s 累计击败英雄数%s' % (self.life, self.vis_lt[0].name, self.kill_monster, self.kill_hero))else:print('所有野怪均被消灭!!!')os._exit(0)# 2攻击目标,次线程def fight(self):enemy = self.vis_lt[0]if isinstance(enemy, Hero):enemy.life -= self.attackelif isinstance(enemy, Monster):Times = 0while enemy.life > 0 and self.life > 0:Times += 1enemy.life -= self.hurt_levelprint('\n[打野第%s下]---> %s 生命值:%s' % (Times, enemy.name, enemy.life))time.sleep(0.3) # 打野速度体现while enemy.life <= 0 and self.life > 0:self.kill_monster += 1self.money += enemy.money # 增加金币,回血self.life += enemy.moneyprint('[%s Killed %s野怪, 回血%s 生命值:%s]\n\n继续寻找下一只野怪。。。' % (self.name, enemy.name, enemy.money, self.life))self.vis_lt.remove(enemy)monster.mst_lt.remove(enemy)break# 重复搜索,打野过程def mainloop(self):while len(self.vis_lt) != 0:if self.life > 0:self.fight()self.move()else:break# 野怪
class Monster(Life):def __init__(self, name='LIFE', life=500, attack=180, defend=100, money=800, mon_name='野怪'):super().__init__(name, life, attack, defend, money)self.mon_name = mon_nameself.p_x = rd.randrange(0, 400, 10)self.p_y = rd.randrange(0, 400, 10)self.position = (self.p_x, self.p_y)def __str__(self):return '%s:%s life:%s attack:%s defend:%s money:%s positon:%s' % (self.mon_name, self.name, self.life, self.attack, self.defend, self.money, self.position)# 报复目标,次线程def fight(self):while len(self.vis_lt) != 0:enemy = self.vis_lt[0]Times = 0while enemy.life > 0 and self.life > 0:Times += 1enemy.life -= self.attackprint('\n(你被%s报复第%s下)---> %s 生命值:%s' % (self.name, Times, enemy.name, enemy.life))time.sleep(0.3) # 野怪攻击速度体现else:break# 批量生成野怪
class Monsters:def __init__(self):self.mst_lt = []for i in range(1, 20):setattr(self, 'monster_%s' % i, Monster('腥红石像%s号' % i, 1000, attack=180, money=800, mon_name='BUFF'))self.mst_lt.append(eval('self.monster_%s' % i))# 批量生成英雄
class Heroes:def __init__(self):self.mst_lt = []for i in range(1, 10):setattr(self, 'hero_%s' % i, Hero('亚瑟%s号' % i, 1000, 100, 200, ocu_name='对抗路'))self.mst_lt.append(eval('self.hero_%s' % i))# 法师
class Rabbi(Hero):def __init__(self, name):super().__init__(name)pass# 射手
class Shooter(Hero):def __init__(self, name):super().__init__(name)pass# 战士
class Soldier(Hero):def __init__(self, name,):super().__init__(name)pass# 刺客
class Assassin(Hero):def __init__(self, name,):super().__init__(name)pass# 野怪反击
def back_atk():jug = 0 # 跳出循环的判定t = Nonewhile jug == 0:if len(monster.mst_lt) != 0:for mon in monster.mst_lt:if len(mon.vis_lt) != 0:if mon.vis_lt[0].life > 0: # 只攻击最近的敌人t = threading.Thread(target=mon.fight)t.start()else:jug = 1t.join()if __name__ == '__main__':print('#' * 25 + ' welcome to 王者RY ' + '#' * 25 + '\n登录/回车进入:')monster = Monsters()hero1 = Rabbi('妲己')t1 = threading.Thread(target=hero1.mainloop)t2 = threading.Thread(target=back_atk)t1.start()t2.start()
我这个代码写的有多余的部分,其实是我还没有把它调用,比如武器,敌方英雄等等,但是老师给的作业我算是完成了。
还有一个问题就是,这是个自动的,唯一的交互就是改代码数值,当然你可以写个input()实现简单交互,哈哈。
不知道我这第一篇博客有没有人看,嘿嘿,有的话,欢迎提意见和问题。
Python类王者荣耀小游戏相关推荐
- Python写王者荣耀小游戏
Python写王者荣耀小游戏 文章目录 Python写王者荣耀小游戏 说明: 一.socket创建 二.实现多进程 三.面向对象版本 四.主体部分搭建 1. 服务器主要步骤的实现 1-1主体部分 1- ...
- python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]
python基础系列: python自学篇一[ Anaconda3安装 ] python自学篇二[ pycharm安装及使用 ] python自学篇三[ 判断语句if的使用 ] python自学篇四[ ...
- Java实现王者荣耀小游戏(简单版,带有图片资源)
这周是实践周,要写期末大作业.参考http://[[尚学堂]在家打王者,不如自己开发王者_开发Java游戏项目[王者荣耀]24小时搞定!!!腾讯游戏_java项目_java游戏开发_java实战项目_ ...
- Python实现王者荣耀小助手(二)
接下来我们获取英雄和武器信息,详细代码KingGlory.py如下(代码中有详细注解): # -*- coding: utf-8 -*- #!/usr/bin/env python # @Time : ...
- 王者荣耀小游戏3.0更新完成!
本人还是一个学生,刚放假10多天,所以今天才更新,请大家见谅 本次更新改动并不大,距离下次更新4.0应该还有很久 下面是我的关机 代码: #include<bits/stdc++.h> / ...
- 王者荣耀小游戏1.0震撼上线!C++版
王者荣耀小游戏1.0版本!可以关机哦! #include<bits/stdc++.h> //编个游戏,不顾一切的用万能 #include<windows.h> using na ...
- 王者荣耀小游戏4.0
大家好,我的王者荣耀小游戏有更新到4.0了 这次改动也不大 加了个键盘监听而已 下面是代码: #include<bits/stdc++.h> //编个游戏,不顾一切的用万能 #includ ...
- 王者荣耀小游戏(发给你的好兄弟(大怨种)^-^)
代码如下 #include<bits/stdc++.h> #include<windows.h> using namespace std; char a; int main() ...
- Python实现王者荣耀小助手(一)
简单来说网络爬虫,是指抓取万维网信息的程序或者脚本,Python在网络爬虫有很大优势,今天我们用Python实现获取王者荣耀相关数据,做一个小助手: 前期准备,环境搭建: Python2.7 sys模 ...
最新文章
- window for jdk install
- Php无刷新修改url,history 实现无刷新更改url和页面内容
- python 模拟鼠标键盘_python之模拟鼠标键盘动作
- 你最想要的圣诞礼物是什么?
- 关于DNS区域查询,DNS字典爆破,以及查询文件问题
- 前端知识点整理(三)不定时更新~
- fopen php 乱码,如何解决php fgets读取文件乱码的问题
- 爬了知乎200万数据,图说程序员都喜欢去哪儿工作~
- WEB测试总结 (架构,设计)精华部分(转)
- Shell脚本学习-阶段一
- 矩阵连乘问题C++实现
- 科技风杂志科技风杂志社科技风编辑部2022年第16期目录
- python 今日头条视频自动上传_抖音视频怎么上传到今日头条?这个软件可一键操作很方便...
- php避免超卖,thinkphp防止超卖
- Spark优化——推测执行机制
- 余压监控系统在某高层住宅的应用方案
- 手把手带你学python自动化测试(五)——鼠标键盘操作
- 交流电机是如何工作的
- Java面向对象编程——接口
- vue中的vxe-table中文文档