假设游戏场景为范围(x,y)为0<=x<=10,0<=y<=10:

1.游戏生成1只乌龟和10条鱼,它们的移动方向均随机

2.乌龟的最大移动能力是2(可以随机选择1还是2移动),鱼儿的最大移动能力是1

3.当移动到场景边缘,自动向反方向移动

4.乌龟初始化体力为100(上限)

5.乌龟每移动一次,体力消耗1

6.当乌龟和鱼坐标重叠,乌龟吃掉鱼,乌龟体力增加20

7.鱼暂时不计算体力

8.当乌龟体力值为0或者鱼儿的数量为0游戏结束

一、定义大鱼(乌龟)类

class Turtle:

#初始化乌龟的属性:体力、位置

def __init__(self):

self.power=100

self.x=random.randint(0,10)

self.y=random.randint(0,10)

def move(self):

#乌龟随机移动一次,位置的变动

self.x+=random.choice([1,2,-1,-2])

self.y+=random.choice([1,2,-1,-2])

#判断是否越界

if self.x<0:

self.x=0-self.x

if self.x>10:

self.x=10-(self.x-10)

if self.y<0:

self.y=0-self.y

if self.y>10:

self.y=10-(self.y-10)

#移动一次消耗体力1

self.power-=1

#返回乌龟的位置

return (self.x,self.y)

二、定义小鱼类

class Fish:

#初始化

def __init__(self):

self.x=random.randint(0,10)

self.y=random.randint(0,10)

def move(self):

#小鱼每移动一次,返回的位置坐标

self.x+=random.choice([1,-1])

self.y+=random.choice([1,-1])

#判断是否越界

if self.x<0:

self.x=0-self.x

if self.x>10:

self.x=10-(self.x-10)

if self.y<0:

self.y=0-self.y

if self.y>10:

self.y=10-(self.y-10)

return (self.x,self.y)

三、主逻辑turtle=Turtle()

turtle=Turtle()  #实例化对象,生成一只乌龟

fish=[]       #创建一个列表,用于存放生成的十条小鱼

for i in range(10):

new_fish=Fish()

fish.append(new_fish)

while True:

turtle_moves=turtle.move()

#把列表拷贝给迭代器,然后在判断乌龟、小鱼位置是否重叠的时候用于删除原列表。因为不拷贝的情况下,迭代器删除元素

会出现意想不到的问题,因为迭代器是直接引用列表的数据进行引用

for each_fish in fish[:]:

fish_moves=each_fish.move()

if turtle_moves==fish_moves:

turtle.power+=20

fish.remove(each_fish)

print (str((turtle.x,turtle.y))+"------------------"+"The turtle eat the fish!!!")

if turtle.power>100:

turtle.power=100

if turtle.power==0:

print ("The turtlr has no power~!!!")

print ("And the game is over!!!")

break

if len(fish)==0:

print ("There are no fish!!")

print ("And the game is over!!!")

break

优化:如果乌龟、小鱼每次移动只能移动一个方向:(在类里边确认移动位置前追加判断是往哪个方向移动)#encoding:utf-8

import random

'''

假设游戏场景为范围(x,y)为 0<=x<=10,0<=y<=10

游戏生成1只乌龟和10条鱼

它们的移动方向均随机

乌龟的最大移动能力是2(可以随机选择1还是2移动),鱼儿的最大移动能力是1

当移动到场景边缘,自动向反方向移动

乌龟初始化体力为100(上限)

乌龟每移动一次,体力消耗1

当乌龟和鱼坐标重叠,乌龟吃掉鱼,乌龟体力增加20

鱼暂时不计算体力

当乌龟体力值为0或者鱼儿的数量为0游戏结束

'''

class Turtle:

def __init__(self):

self.power=100

self.x=random.randint(0,10)

self.y=random.randint(0,10)

def move(self):

#默认前进方向为左右,当随机移动位置为0,即前进方向为上下

r=random.choice([1,2,0,-1,-2])

if r==0:

self.y+=random.choice([1,2,-1,-2])

else:

self.x+=r

if self.x<0:

self.x=0-self.x

if self.x>10:

self.x=10-(self.x-10)

if self.y<0:

self.y=0-self.y

if self.y>10:

self.y=10-(self.y-10)

self.power-=1

return (self.x,self.y)

class Fish:

def __init__(self):

self.x=random.randint(0,10)

self.y=random.randint(0,10)

def move(self):

r=random.choice([1,0,-1])

if r==0:

self.y+=random.choice([1,-1])

else:

self.x+=r

if self.x<0:

self.x=0-self.x

if self.x>10:

self.x=10-(self.x-10)

if self.y<0:

self.y=0-self.y

if self.y>10:

self.y=10-(self.y-10)

return (self.x,self.y)

turtle=Turtle()

fish=[]

for i in range(10):

new_fish=Fish()

fish.append(new_fish)

while True:

turtle_moves=turtle.move()

for each_fish in fish[:]:

fish_moves=each_fish.move()

if turtle_moves==fish_moves:

turtle.power+=20

fish.remove(each_fish)

print (str((turtle.x,turtle.y))+"------------------"+"The turtle eat the fish!!!")

if turtle.power>100:

turtle.power=100

if turtle.power==0:

print ("The turtlr has no power~!!!")

print ("And the game is over!!!")

break

if len(fish)==0:

print ("There are no fish!!")

print ("And the game is over!!!")

break

python大鱼吃小鱼程序代码_写一个小游戏程序(大鱼吃小鱼)相关推荐

  1. 使用python制作聊天框解谜游戏_使用Python写一个小游戏alien invasion!

    最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下其中的 ...

  2. 手机版python3h如何自制游戏_教你如何用 Python 写一个小游戏

    教你如何用 Python 写一个小游戏 引言 最近 python 语言大火, 除了在科学计算领域 python 有用武之地之外, 在游戏后台等方面, python 也大放异彩, 本篇博文将按照正规的项 ...

  3. 关于python小游戏的毕业论文_使用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...

  4. python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...

    原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...

  5. python写游戏脚本-使用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...

  6. python编程小游戏-使用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...

  7. 黑马程序员_石头迷阵小游戏

    黑马程序员_石头迷阵小游戏 源代码 一些说明: 1)这些是我看b站黑马程序员的视频,自己手打的,想分享一下,如果有侵权啥的请联系我,马上删除 2)一些比较重要的我都有给注释 3)工具idea idk版 ...

  8. python能制作游戏吗_如何用python写一个小游戏

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 引言最近python语言大火,除了在科学计算领域python有用武之地之外,在游 ...

  9. 用python做一个简单的游戏,用python写一个小游戏

    大家好,本文将围绕如何用python做一个简单的小游戏展开说明,python编写的入门简单小游戏是一个很多人都想弄明白的事情,想搞清楚用python做一个简单的游戏需要先了解以下几个事情. 1.Pyt ...

  10. jQuery 一次定时器_用 jQuery 手写一个小游戏

    作者:王圣松 转发链接:https://juejin.im/post/6844903687307919373 前言 今天给大家带来一个小游戏. 要求:熟悉 JavaScript 继承的概念. 游戏预览 ...

最新文章

  1. oracle plsql开启并行,Oracle开启并行的几种方法
  2. mysql 转成树_mysql整形转换的坑
  3. python numpy 子数组_Python快速转换numpy数组中Nan和Inf的方法实例说明
  4. 用NPOI从DataBase到Excel '2
  5. gevent 学习笔记一
  6. c++exe程序在别人电脑上双击无法打开_Windows10电脑磁盘占用率过高,用这二招轻松解决...
  7. iphone屏蔽系统更新_iOS13屏蔽系统更新升级教程
  8. python递归求13的n次方_Python题目:递归的简单题目,求阶乘,求n-m的累积和,求斐波那契...
  9. java rfb,github上开源的超轻量级人脸检测模型及github地址。
  10. Chromium内核原理之网络栈HTTP Cache
  11. 网易163邮箱和网易126邮箱有什么区别?
  12. html自动写对联,html左右对联代码
  13. 求职软件测试工程师英文简历,软件测试员英文简历模板.doc
  14. 按颜色分类:蓝色系(Blue)
  15. 经历“海潮效应”,云图如何成为智能家居界的苹果?
  16. 【Alpha阶段】第五次scrum meeting
  17. 网络工程师发展及待遇--学习
  18. 基于端口号的虚拟主机配置
  19. AE PR模板基本图形预设素材包动态字幕文字标题排版动画预设效果
  20. 养生指南 3 : 人的健康离不开两大要素 : 足够的气血 / 畅通的经络

热门文章

  1. Flutter 桌面应用调研
  2. python--爬虫51job(3.1)
  3. Elasticsearch生产集群健康状况为yellow原因分析和解决方案
  4. Unity 多人联机游戏(一)
  5. UE4UE5 VR开发多人联机RPC的坑
  6. 真机调试错误 Reason: image not found想到的
  7. ASP.NET——使用FileUpLoad服务器控件实现文件上传
  8. 造一个智能语音音箱!!!太简单了【语音智能管家】
  9. 李宏毅机器学习【深度学习】(0)【机器学习】
  10. 解决报错ImportError: IProgress not found. Please update jupyter and ipywidgets.