python面向对象练习题_Python面向对象练习-乌龟吃鱼
题目要求
首先放上题目要求:
游戏编程:按以下要求定义一个乌龟类和鱼类并尝试编写游戏
假设游戏场景为范围(x,y)为0<=x<=10,0<=y<=10
游戏生成1只乌龟和10条鱼
它们的移动方向均随机
乌龟的最大移动能力为2(它可以随机选择1还是2移动),鱼儿的最大移动能力是1
当移动到场景边缘,自动向反方向移动
乌龟初始化体力为100(上限)
乌龟每移动一次,体力消耗1
当乌龟和鱼坐标重叠,乌龟吃掉鱼,乌龟体力增加20
鱼暂不计算体力
当乌龟体力值为0(挂掉)或者鱼儿的数量为0游戏结束
场景图
代码实现
import random
#乌龟类
class Turtle:
def __init__(self):
self.power=100 #体力
#乌龟坐标
self.x=random.randint(0,10)
self.y=random.randint(0,10)
#乌龟移动的方法:移动方向均随机 第四条
def move(self):
#计算移动后的新位置(只有四种可能)
new_x=self.x+random.choice([1,2,-1,-2])
new_y=self.y+random.choice([1,2,-1,-2])
#判断移动后是否超出边界
if new_x<0:
self.x=0-new_x
elif new_x>10:
self.x=10-(new_x-10)
else:
#不越界则移动乌龟的位置
self.x=new_x
if new_y<0:
self.y=0-new_y
elif new_y>10:
self.y=10-(new_y-10)
else:
#不越界则移动乌龟的位置
self.y=new_y
self.power-=1 #乌龟每移动一次,体力消耗1
def eat(self):
self.power+=20 #乌龟吃掉鱼,乌龟体力增加20
if self.power>100:
self.power=100 #乌龟体力100(上限)
#鱼类
class Fish:
def __init__(self):
#鱼坐标
self.x=random.randint(0,10)
self.y=random.randint(0,10)
def move(self):
#计算移动后的新位置(只有四种可能)
new_x=self.x+random.choice([1,-1])
new_y=self.y+random.choice([1,-1])
#判断移动后是否超出边界
if new_x<0:
self.x=0-new_x
elif new_x>10:
self.x=10-(new_x-10)
else:
#不越界则移动鱼的位置
self.x=new_x
if new_y<0:
self.y=0-new_y
elif new_y>10:
self.y=10-(new_y-10)
else:
#不越界则移动鱼的位置
self.y=new_y
#开始测试数据
tur=Turtle() #生成1只乌龟
fish=[] #生成10条鱼
for item in range(10):
fish.append(Fish()) #把生成的鱼放到鱼缸里
#判断游戏是否结束:当乌龟体力值为0(挂掉)或者鱼儿的数量为0游戏结束
if tur.power<0 or len(fish)==0:
print("Game Over ~")
#游戏开始
#首先乌龟迈出第一步
# print(tur.x,tur.y) #乌龟移动前
tur.move()
# print(tur.x,tur.y) #乌龟移动后
for item in fish:
item.move()
if item.x==tur.x and item.y==tur.y:
tur.eat()
fish.remove(item)
print("死了一只鱼")
print("乌龟最新体力值为 %d"%tur.power)
python面向对象练习题_Python面向对象练习-乌龟吃鱼相关推荐
- python小鱼_Python面向对象练习-通过pygame改良乌龟吃鱼
先看看最后效果 图片的话是从网上小鱼儿那个案例里面拿的,实现的功能如下: 是通过方向键操作乌龟,进行吃鱼 吃鱼的时候根据乌龟的x,y坐标和鱼的x,y进行检测,在碰撞区域则干掉这条鱼 背景音乐和吃鱼音乐 ...
- Python-小游戏-乌龟吃鱼
#讲道理乌龟吃鱼的嘛? 先上代码,虽然感觉很多地方可以优化 import random import timeclass Tortoise:x = random.randint(0,10)y = ra ...
- python完全支持面向对象编程_Python 面向对象编程概要
面向对象三大特性 面向对象的三大特性是指:封装.继承和多态. 封装 封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容. 所以,在使用面向对象的封装特性时,需要: 将内容封装到某处 ...
- 面向对象编程项目案例(栈与队列封装和乌龟吃鱼游戏)
一.Pygame相关介绍 1.Pygame是跨平台Python模块,专为电子游戏设计,包含图像.声音.允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚.Pygame常用模块 2.一个游 ...
- python封装举例_Python面向对象封装操作案例详解
本文实例讲述了Python面向对象封装操作.分享给大家供大家参考,具体如下: 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 ...
- python完全支持面向对象编程_python面向对象编程----009
本篇内容: 1.反射 2.面向对象编程 3.面向对象三大特性 4.类成员 5.类成员修饰符 6.类的特殊成员 7.单例模式 反射 python中的反射功能是由以下四个内置函数提供:hasattr.ge ...
- python面向对象思路_Python面向对象三要素-继承(Inheritance)
Python面向对象三要素-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承概述 1>.基本概念 前面我们学习了Python的面向对象三 ...
- python面向对象图片_Python面向对象-概念、类、实例
OOP--Object Oriented Programming,面向对象编程,是一种程序设计思想.该思想将对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 区别于面向过程的程序设计即把计 ...
- python面向对象继承_Python 面向对象 --- 继承
目标 单继承 多继承 面向对象三大特性 1,封装 根据 职责 将 属性 和 方法 封装 到以抽象的 类 中 2,继承 实现代码的重用,相同的代码不需要重复的缩写 3,多态 不同的对象调用相同的方法,产 ...
- python完全支持面向对象编程_Python面向对象编程
对象魔法 1.多态 多态指的是能够同样地对待不同类型和类的对象,既无需知道对象属于哪个类就可调用其方法. 2.封装 对象可能隐藏(封装)其内部状态.在有些语言中,这意味着对象的状态(属性)只能通过其方 ...
最新文章
- php ajax实现的二级(多级)联动菜单(2008-10-21,11:36:08)
- window上远程访问linux上的neo4j的设置
- discuz中,修改admin密码
- 处理自己的数据集_手写代码实现KDD CUP99数据集的数据归一化处理
- httpclient 调取接口_HttpClient调用接口发送文件
- Python为何如此优秀?斯坦福教授告诉你!
- 【registry】javax ValidationException: HV000183: Unable to load ‘javax.el.ExpressionFactory‘
- 贵州省NPP净初级生产力数据/NDVI数据
- kibana集成内部账号_揭开 Elasticsearch 中身份验证和授权的神秘面纱
- Oracle队列锁enq:TS,Temporary Segment (also TableSpace)
- java俄罗斯方块说明书_俄罗斯方块java代码(java编写俄罗斯方块代码详解)
- C# 从入门到精通 学习笔记1 第2章 使用变量、操作符和表达式
- python下载网页方法_Python 下载网页的几种方法
- 浅谈URI和URL的区别
- Bugku:杂项 一枝独秀
- sql注入学习笔记1
- 分光器光衰多少?分光器如何选购?分光器如何使用?
- 高德地图点击marker图标改变效果实现过程
- Android OpenGLES滤镜开发之贴纸效果
- python爬虫入门——13行代码制作英语翻译器教程,小白入门一点通
热门文章
- 万用表(数字多电表)的认识与使用
- 考研英语 常见不规则动词过去式/过去分词
- Error:java.lang.RuntimeException: Some file crunching failed, see logs for detail
- python计算权重_python 计算权重的代码
- 曲线运动与万有引力公式_考试中有关曲线运动及万有引力部分ALevel物理考点及公式总结...
- 如何利用Python程序读取Excel创建折线图
- MATLAB的semilogy函数的理解
- USB转串口那些事儿—USB转串口工作原理及应用
- matlab命令窗口中常用快捷键命令(一)
- matlab常用命令整理