Python---面向对象---龟鱼游戏
一、定义一个门票系统
门票的原价是100元
当周末的时候门票涨价20%
小孩子半票
计算2个成人和1个小孩的平日票价
----------------------------------------------------------
class Ticket(): def __init__(self, weekend=False, child=False): self.exp = 100 if weekend: self.inc = 1.2 else: self.inc = 1 if child: self.discount = 0.5 else: self.discount = 1 def cal_price(self, num): return self.exp * self.inc * self.discount * num adult = Ticket()child = Ticket(child=True) print("两个成年人和一个小孩子平日的价格是{}".format(adult.cal_price(2)+ child.cal_price(1)))-------------------------------------------游戏编程:按一下要求定义一个乌龟类和鱼类并尝试编程一、假设游戏场景为范围(x,y)为0<=x<=10,0<=y<=10二、游戏生成1只乌龟和10条鱼三、他们的移动方向均随机四、乌龟的最大移动能力是2(乌龟可以随机选择移动是1还是2),鱼的最大移动能力是1五、当移动到场景边缘,自动向反方向移动六、乌龟没移动一次,体力消耗1七、当乌龟和鱼重叠,乌龟吃掉鱼,乌龟体力增加20八、鱼不计算体力九、当乌龟体力值为0或者鱼的数量为0时,游戏结束-------------------------------------------
import random as r class Turtle(object): def __init__(self): self.power = 100 #初始化乌龟的位置 self.x = r.randint(0, 10) self.y = r.randint(0, 10) def move(self): new_x = r.choice([1, 2, -1, -2]) + self.x new_y = r.choice([1, 2, -1, -2]) + self.y # 判断 乌龟的移动是否超出了边界 if new_x < 0: self.x = 0 - (new_x - 0) elif new_x > 10: self.x = 10 - (new_x - 10) else: self.x = new_x if new_y < 0: self.y = 0 - (new_y - 0) elif new_y > 10: self.y = 10 - (new_y - 10) else: self.y = new_y self.power -= 1 return (self.x, self.y) def eat(self): self.power += 20 if self.power >= 100: self.power = 100 class Fish(object): def __init__(self): self.x = r.randint(0, 10) self.y = r.randint(0, 10) def move(self): new_x = self.x + r.choice([1, -1]) new_y = self.y + r.choice([1, -1]) if new_x < 0: self.x = 0 - (new_x - 0) elif new_x > 10: self.x = 10 - (new_x - 10) else: self.x = new_x if new_y < 0: self.y = 0 - (new_y - 0) elif new_y > 10: self.y = 10 - (new_y - 10) else: self.y = new_y return (self.x, self.y) turtle = Turtle()fish = []for i in range(10): new_fish = Fish() fish.append(new_fish) while True: if not len(fish): print("鱼被吃完了,游戏结束") break if not turtle.power: print("乌龟体力被耗尽了,游戏结束了") break pos = turtle.move() # 在迭代中做列表的删除元素是非常危险的,经常会出现一些意想不到的问题,因为迭代器是直接引用列表元素的数据做的操作 # 所以 我们这里把列表拷贝一份传给迭代器,然后再对原列表做操作 for each_fish in fish[:]: if each_fish.move() == pos: turtle.eat() fish.remove(each_fish) print("有一条鱼被吃掉了")-----------------------------------------定义一个点(point)和直线(Line)类,使用getLen方法获取两点构成直线的长度-----------------------------------------
import math class Point(object): def __init__(self, x=0, y=0): self.x = x self.y = y def get_x(self): return self.x def get_y(self): return self.y class Line(object): def __init__(self, p1, p2): self.x = p1.get_x() - p2.get_x() self.y = p1.get_y() - p2.get_y() self.len = math.sqrt(self.x*self.x + self.y*self.y) def get_len(self): return self.len p1 = Point(2,3)p2 = Point(5,7)line = Line(p1, p2)line.get_len()
转载于:https://www.cnblogs.com/niaocaizhou/p/10996368.html
Python---面向对象---龟鱼游戏相关推荐
- Python 简单的龟鱼游戏
游戏编程:按一下要求定义一个乌龟类和鱼类并尝试编程 假设游戏场景为范围(x,y)为 0<=x<=10,0<=y<=10 游戏生成1只乌龟和10条鱼 他们的移动方向均随机 乌龟的 ...
- Python面向对象-回合制游戏攻击模式--基础
面向对象这里我学了几天了,一道坎,感觉有些难,分享一下我的一个作业.需求目前是达到了,但是太啰嗦. 1.使用面向对象思想,写出下列场景:玩家攻击(攻击力)敌人,敌人(血量)受伤后掉血,还可能死亡(播放 ...
- 用打怪游戏实例升级版,理解python面向对象
为了能够让大家充分理解什么是面向对象,在上一章节中,我们特地讲解了python的面向过程,并用python并不擅长的面向过程的编程思想简单设计了一个打怪游戏实例.这一节,我们将正式地来介绍Python ...
- 【Python之旅】第四篇(四):基于面向对象的模拟人生游戏类
需要用面向对象的思想编写一个模拟人生的小游戏,其实就目前学的知识来说,最多只能写个故事叙述类的小游戏,因此这里只是给出该游戏中有关class的代码,代码是Alex老师写的,对进一步加深Python面向 ...
- 每日一题.PYTHON面向对象编写模拟人生屌丝逆袭游戏(登录类/角色类/场景类)?
文件结构: [root@xmdevops xmdevops_limanman]# tree |grep -v ".pyc" |-- main.py ...
- 笔记37 笨办法学python练习43面向对象OOP的游戏代码(二)代码的反复理解
笔记37 笨办法学python练习43面向对象OOP的游戏代码(二)代码的反复理解 连续贴着这个练习43的代码折腾了整整两天,把那些英文文本翻译为中文文本,重新装进这个代码之中.本想一段一段的运行,发 ...
- 基于Python的水母吃鱼游戏的设计与实现
源码获取:https://www.bilibili.com/video/BV1Ne4y1g7dC/ 基于Python的水母吃鱼游戏的设计与实现
- PYTHON面向对象(类)
一.PYTHON面向对象基础 面向对象侧重于对的人,做对的事 1.类和对象的基本概念 类的介绍 对象的介绍 类和对象的关系 2.类的设计基础 类设计的三要素 3.类使用的基本语法 3.1类的定义和使用 ...
- Python面向对象编程:类继承和其衍生术语
Python面向对象编程03:类继承和其衍生术语 前面我们讲到过正则表达式字符等,上一篇分享了面向对象编程和类的结构,最后稍微提到了继承. Python面向对象编程:深度认识类class_ Pytho ...
最新文章
- 为实现流行病预测:联邦政府在疫情暴发建模方面的努力和机遇
- [名词解释] RIAD磁盘阵列
- 没有找到合适的方法来重写_玻璃片价格太高?你可能没有找到合适的供应商
- 汇编-简单的条件转移指令应用-附例子:判断坐标所在象限
- MediaPlayer使用方法简单介绍
- securecrt使用_SecureCRT会话丢失原因及解决方法
- Mac adb 安装
- eclipse内存设置,tomcat内存设置,查看内存大小
- [Linux] ubuntu server sudo出现sudo:must be setuid root 完美解决办法
- django 1.11.16之环境搭建
- win7系统修复工具_系统哥教你如何修复win7启动引导的方法
- 清华刘知远:教你用HowNet在深度学习时代搞事情(附论文下载)
- 分布式密钥管理Nucypher
- %3c php 能用什么代替,Phpwind9
- 如何利用Python教你如何爬取高德地图!非常全面啊!
- 【接口篇 / Lan】(5.6) ❀ 05. 与思科交换机三层链路聚合连接 ❀ FortiGate 防火墙
- 因为未将计算机与远程服务,win7提示错误797未建立到远程访问服务的连接怎么办...
- 考研最卷的专业,我提名新传
- Adam学习25之读取sam生成的alignmentRecord含recordGroupDictionary
- 图像处理常用公式-不错
热门文章
- Ruby gem的proxy代理设置方法
- Origin绘制双Y轴图的方法
- 高斯-赛德尔(Gauss-Seidel)解线性方程组的Matlab实现
- 美团Java面试题,苹果手机java编程软件
- eSpeak TTS 中英文真人发音引擎
- 什么是期权股权?什么是期权股权原始股?
- python+大数据-MySQL-day02(黑马)
- 【白皮书】用于过程工业的PROFINET
- matlab论文答辩题目,毕业设计答辩评及参考题目.doc
- 吕文翰 php,自己动手打造基于 WKWebView 的混合开发框架(二)——js 向 Native 一句话传值并反射出 Swift 对象执行指定函数...