关于py3面向对象的小Demo,欢迎 交流。

class Person(object):#声明人类
def __init__(self,name):
self.name = name
self.gun = None#是否拿枪
self.hp = 100#人的血量
def __str__(self):
if self.gun:
return "%s拿的枪是%s,血量为:%s"%(self.name,self.gun,self.hp)
else:
return "%s没有拿枪,血量为%s"%(self.name,self.hp)
#定义方法实现人安装子弹到弹夹
def installBullet(self,cartridgeClip,bullet):
#安装子弹到当前弹夹
cartridgeClip.pushBullet(bullet)#找cartridgeClip类中的pushBullet方法保存子弹
#老李安装中弹夹到枪
def installToGun(self,name,cartridgeClip):
name.installtogun(cartridgeClip)
#拿枪
def getgun(self,name):
self.gun = name
#开枪打敌人(老宋)
def kill(self,name):
self.gun.fire(name)
#掉血
def diaoxue(self,lethality):
if self.hp >0:
self.hp -= lethality
else:
print("%s已经挂了"%self.name) class Gun(object):#声明枪类
def __init__(self,name):
self.name = name#记录弹夹的类型
self.cartridgeClip = None#记录弹夹对象的引用
def __str__(self):
if self.cartridgeClip:
return "枪名是:%s, 弹夹信息为:%s"%(self.name,self.cartridgeClip)
else:
return "枪名是:%s,没有弹夹"%(self.name)
def installtogun(self,cartridgeClip):
self.cartridgeClip = cartridgeClip
#开火射击
def fire(self,name):
#先取子弹
temp = self.cartridgeClip.outBullet()
#让子弹去伤害敌人
if temp:
temp.ko(name)
else:
print("没有子弹了。。。")
class CartridgeClip(object):#声明弹夹类
def __init__(self,maxNum):
self.maxnum = maxNum#记录最大容量
# 声明列表buttlelist用来存放子弹
self.buttlelist = []
def __str__(self):
return "弹夹的信息为:%s/%s"%(len(self.buttlelist),self.maxnum)
def pushBullet(self,bullet):
self.buttlelist.append(bullet)
def outBullet(self):#弹出子弹
if self.buttlelist:
return self.buttlelist.pop()
else:
return None
class Bullet(object):#声明子弹类
def __init__(self,Lethality):
self.lethality = Lethality#子弹的杀伤力
def ko(self,name):#打中敌人,敌人掉血
name.diaoxue(self.lethality)
def main():
#分别声明对象
laoli = Person("老李")#拿枪的人叫老李
k98 = Gun("98k")#该枪的名称为98k
cartridgeClip = CartridgeClip(30)#弹夹的最大容量是30
bullet = Bullet(10)#子弹的杀伤力是10
#创建一些子弹
for i in range(10):
bullet = Bullet(10)
laoli.installBullet(cartridgeClip, bullet)
#老李拿着弹夹吧子弹放入弹夹,在安装弹夹到枪中 老李.安装子弹到弹夹(person类中的方法)
laoli.installBullet(cartridgeClip,bullet)
#laoli把弹夹安装到枪里
laoli.installToGun(k98,cartridgeClip)
# print("66")
print(cartridgeClip)
#测试枪的信息
print(k98)
#老李拿枪\
laoli.getgun(k98)
print(laoli)
#创建敌人老宋
laosong = Person("对面老宋")
print(laosong)
#开枪打老宋
laoli.kill(laosong)
print(laosong)
laoli.kill(laosong)
print(laosong)
laoli.kill(laosong)
print(laosong)
laoli.kill(laosong)
print(laosong)
for i in range(20):
laoli.kill(laosong)
print(laosong) #print("66") if __name__ == '__main__':
main()

运行效果如下:

py3射击小游戏的更多相关文章

  1. 通通的最后一篇博客(附自制html5平面射击小游戏一枚)

    这是我最后一篇博客了,由于本人的人生规划吧,以后应该也写不出什么好的技术文章了,到现在在博客园写了2年, 今天一看,我也有了120个粉丝,好几万的浏览量,感谢大家的支持啊~~ 半年没有写博客了,由于半 ...

  2. UE4射击小游戏原型

    尝试使用了下blueprint,不知道是bug还是不熟悉,blueprint有些地方运行的跟逻辑不太一样.不管ue4目前,快速做原型倒是蛮方便的.就等着官方发更多教程讲述关于新的matinee,Nav ...

  3. [安卓] 12、开源一个基于SurfaceView的飞行射击类小游戏

    前言  这款安卓小游戏是基于SurfaceView的飞行射击类游戏,采用Java来写,没有采用游戏引擎,注释详细,条理比较清晰,适合初学者了解游戏状态转化自动机和一些继承与封装的技巧. 效果展示    ...

  4. Delphi的几个跨平台小游戏例子。

    Embarcadero开源了几个FireMonkey的小游戏,支持Windows, Android,Ios, MacOS等. 源码地址: https://github.com/EmbarcaderoP ...

  5. 12岁的少年教你用Python做小游戏

    首页 资讯 文章 频道 资源 小组 相亲 登录 注册       首页 最新文章 经典回顾 开发 设计 IT技术 职场 业界 极客 创业 访谈 在国外 - 导航条 - 首页 最新文章 经典回顾 开发 ...

  6. 原生javascript开发仿微信打飞机小游戏

    今天闲来无事,于是就打算教一个初学javascript的女童鞋写点东西,因此为了兼顾趣味性与简易程度,果断想到了微信的打飞机小游戏.. 本来想用html5做的,但是毕竟人家才初学,连jquery都还不 ...

  7. HTML5小游戏源码收藏

    html5魅族创意的贪食蛇游戏源码下载 html5网页版打砖块小游戏源码下载 html5 3D立体魔方小游戏源码下载 html5网页版飞机躲避游戏源码下载 html5三国人物连连看游戏源码下载 js ...

  8. Java 坦克小游戏心得

    原本是闲得慌无聊才去尝试做这个项目的,因为小时候玩小霸王的游戏机,那个时候经常玩这个游戏吧,特别是喜欢那种自定义地图的模式,觉得自由度非常不错.总之关于这个游戏,想说的一大堆.鉴于能有个空闲的时间,打 ...

  9. 【转】利用 three.js 开发微信小游戏的尝试

    前言 这是一次利用 three.js 开发微信小游戏的尝试,并不能算作是教程,只能算是一篇笔记吧. 微信 WeChat 6.6.1 开始引入了微信小游戏,初期上线了一批质量相当不错的小游戏.我在查阅各 ...

随机推荐

  1. Nginx为什么快到根本停不下来?

    Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器. 图片来自 Pexels Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资 ...

  2. 11张流程图帮你搞定 Spring Bean 生命周期

    在网上已经有跟多Bean的生命周期的博客,但是很多都是基于比较老的版本了,最近吧整个流程化成了一个流程图.待会儿使用流程图,说明以及代码的形式来说明整个声明周期的流程.注意因为代码比较多,这里的流程图 ...

  3. 【题解】hdu2044一只小蜜蜂

    斐波拉契数列的应用 题目 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数.其中,蜂房的结构如下所示. Input输入数据的第一行是一个整数N,表 ...

  4. [翻译]Go与C#对比 第三篇:编译、运行时、类型系统、模块和其它的一切

    Go vs C#, Part 3: Compiler, Runtime, Type System, Modules, and Everything Else | by Alex Yakunin | S ...

  5. Redmine部署中遇到的问题

    Redmine部署文章: 第一篇:Redmine部署 第二篇:Redmine部署中遇到的问题 上一篇文章我写了Redmine怎样部署(点这里直达上一篇文章),这一篇就写一下在Redmine部署中遇到过 ...

  6. salesforce零基础学习(一百零四)Salesforce Optimizer

    本篇参考: https://admin.salesforce.com/blog/2017/analyzing-org-salesforce-optimizer-webinar-recap 假设你在做一 ...

  7. linux 中获取进程和kill进程的几种方法

    ps: ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态.进程是否结束.进程有没有僵尸.哪些进程占用了过多的资源等等. 注意:ps是显示瞬间进程的状态, ...

  8. kali安装angr

    最近打算重新学习一波angr,先把环境搭好 1. 先安装virtualenv,这玩意是可以创建一个纯净的python环境,我陷入了沉思,pyenv好像也可以 这里利用豆瓣的源下载,非常快而且很舒服 p ...

  9. Java学习笔记之—Java基础

    将学习到的JAVA基础用xmind记录了下来,需要原件的可以私信

  10. 虚拟机centos7环境搭建,系统分区,静态IP配置

    文章目录 1.虚拟机安装centos7 2.系统分区 3.配置静态IP centos7下载地址 http://mirrors.aliyun.com/centos/7/isos/x86_64/ Cent ...