题目要求

首先放上题目要求:

游戏编程:按以下要求定义一个乌龟类和鱼类并尝试编写游戏

假设游戏场景为范围(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面向对象练习-乌龟吃鱼相关推荐

  1. python小鱼_Python面向对象练习-通过pygame改良乌龟吃鱼

    先看看最后效果 图片的话是从网上小鱼儿那个案例里面拿的,实现的功能如下: 是通过方向键操作乌龟,进行吃鱼 吃鱼的时候根据乌龟的x,y坐标和鱼的x,y进行检测,在碰撞区域则干掉这条鱼 背景音乐和吃鱼音乐 ...

  2. Python-小游戏-乌龟吃鱼

    #讲道理乌龟吃鱼的嘛? 先上代码,虽然感觉很多地方可以优化 import random import timeclass Tortoise:x = random.randint(0,10)y = ra ...

  3. python完全支持面向对象编程_Python 面向对象编程概要

    面向对象三大特性 面向对象的三大特性是指:封装.继承和多态. 封装 封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容. 所以,在使用面向对象的封装特性时,需要: 将内容封装到某处 ...

  4. 面向对象编程项目案例(栈与队列封装和乌龟吃鱼游戏)

    一.Pygame相关介绍 1.Pygame是跨平台Python模块,专为电子游戏设计,包含图像.声音.允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚.Pygame常用模块 2.一个游 ...

  5. python封装举例_Python面向对象封装操作案例详解

    本文实例讲述了Python面向对象封装操作.分享给大家供大家参考,具体如下: 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 ...

  6. python完全支持面向对象编程_python面向对象编程----009

    本篇内容: 1.反射 2.面向对象编程 3.面向对象三大特性 4.类成员 5.类成员修饰符 6.类的特殊成员 7.单例模式 反射 python中的反射功能是由以下四个内置函数提供:hasattr.ge ...

  7. python面向对象思路_Python面向对象三要素-继承(Inheritance)

    Python面向对象三要素-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承概述 1>.基本概念 前面我们学习了Python的面向对象三 ...

  8. python面向对象图片_Python面向对象-概念、类、实例

    OOP--Object Oriented Programming,面向对象编程,是一种程序设计思想.该思想将对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 区别于面向过程的程序设计即把计 ...

  9. python面向对象继承_Python 面向对象 --- 继承

    目标 单继承 多继承 面向对象三大特性 1,封装 根据 职责 将 属性 和 方法 封装 到以抽象的 类 中 2,继承 实现代码的重用,相同的代码不需要重复的缩写 3,多态 不同的对象调用相同的方法,产 ...

  10. python完全支持面向对象编程_Python面向对象编程

    对象魔法 1.多态 多态指的是能够同样地对待不同类型和类的对象,既无需知道对象属于哪个类就可调用其方法. 2.封装 对象可能隐藏(封装)其内部状态.在有些语言中,这意味着对象的状态(属性)只能通过其方 ...

最新文章

  1. php ajax实现的二级(多级)联动菜单(2008-10-21,11:36:08)
  2. window上远程访问linux上的neo4j的设置
  3. discuz中,修改admin密码
  4. 处理自己的数据集_手写代码实现KDD CUP99数据集的数据归一化处理
  5. httpclient 调取接口_HttpClient调用接口发送文件
  6. Python为何如此优秀?斯坦福教授告诉你!
  7. 【registry】javax ValidationException: HV000183: Unable to load ‘javax.el.ExpressionFactory‘
  8. 贵州省NPP净初级生产力数据/NDVI数据
  9. kibana集成内部账号_揭开 Elasticsearch 中身份验证和授权的神秘面纱
  10. Oracle队列锁enq:TS,Temporary Segment (also TableSpace)
  11. java俄罗斯方块说明书_俄罗斯方块java代码(java编写俄罗斯方块代码详解)
  12. C# 从入门到精通 学习笔记1 第2章 使用变量、操作符和表达式
  13. python下载网页方法_Python 下载网页的几种方法
  14. 浅谈URI和URL的区别
  15. Bugku:杂项 一枝独秀
  16. sql注入学习笔记1
  17. 分光器光衰多少?分光器如何选购?分光器如何使用?
  18. 高德地图点击marker图标改变效果实现过程
  19. Android OpenGLES滤镜开发之贴纸效果
  20. python爬虫入门——13行代码制作英语翻译器教程,小白入门一点通

热门文章

  1. 万用表(数字多电表)的认识与使用
  2. 考研英语 常见不规则动词过去式/过去分词
  3. Error:java.lang.RuntimeException: Some file crunching failed, see logs for detail
  4. python计算权重_python 计算权重的代码
  5. 曲线运动与万有引力公式_考试中有关曲线运动及万有引力部分ALevel物理考点及公式总结...
  6. 如何利用Python程序读取Excel创建折线图
  7. MATLAB的semilogy函数的理解
  8. USB转串口那些事儿—USB转串口工作原理及应用
  9. matlab命令窗口中常用快捷键命令(一)
  10. matlab常用命令整理