python大鱼吃小鱼程序代码_写一个小游戏程序(大鱼吃小鱼)
假设游戏场景为范围(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大鱼吃小鱼程序代码_写一个小游戏程序(大鱼吃小鱼)相关推荐
- 使用python制作聊天框解谜游戏_使用Python写一个小游戏alien invasion!
最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下其中的 ...
- 手机版python3h如何自制游戏_教你如何用 Python 写一个小游戏
教你如何用 Python 写一个小游戏 引言 最近 python 语言大火, 除了在科学计算领域 python 有用武之地之外, 在游戏后台等方面, python 也大放异彩, 本篇博文将按照正规的项 ...
- 关于python小游戏的毕业论文_使用Python写一个小游戏
引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...
- python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...
原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...
- python写游戏脚本-使用Python写一个小游戏
引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...
- python编程小游戏-使用Python写一个小游戏
引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...
- 黑马程序员_石头迷阵小游戏
黑马程序员_石头迷阵小游戏 源代码 一些说明: 1)这些是我看b站黑马程序员的视频,自己手打的,想分享一下,如果有侵权啥的请联系我,马上删除 2)一些比较重要的我都有给注释 3)工具idea idk版 ...
- python能制作游戏吗_如何用python写一个小游戏
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 引言最近python语言大火,除了在科学计算领域python有用武之地之外,在游 ...
- 用python做一个简单的游戏,用python写一个小游戏
大家好,本文将围绕如何用python做一个简单的小游戏展开说明,python编写的入门简单小游戏是一个很多人都想弄明白的事情,想搞清楚用python做一个简单的游戏需要先了解以下几个事情. 1.Pyt ...
- jQuery 一次定时器_用 jQuery 手写一个小游戏
作者:王圣松 转发链接:https://juejin.im/post/6844903687307919373 前言 今天给大家带来一个小游戏. 要求:熟悉 JavaScript 继承的概念. 游戏预览 ...
最新文章
- oracle plsql开启并行,Oracle开启并行的几种方法
- mysql 转成树_mysql整形转换的坑
- python numpy 子数组_Python快速转换numpy数组中Nan和Inf的方法实例说明
- 用NPOI从DataBase到Excel '2
- gevent 学习笔记一
- c++exe程序在别人电脑上双击无法打开_Windows10电脑磁盘占用率过高,用这二招轻松解决...
- iphone屏蔽系统更新_iOS13屏蔽系统更新升级教程
- python递归求13的n次方_Python题目:递归的简单题目,求阶乘,求n-m的累积和,求斐波那契...
- java rfb,github上开源的超轻量级人脸检测模型及github地址。
- Chromium内核原理之网络栈HTTP Cache
- 网易163邮箱和网易126邮箱有什么区别?
- html自动写对联,html左右对联代码
- 求职软件测试工程师英文简历,软件测试员英文简历模板.doc
- 按颜色分类:蓝色系(Blue)
- 经历“海潮效应”,云图如何成为智能家居界的苹果?
- 【Alpha阶段】第五次scrum meeting
- 网络工程师发展及待遇--学习
- 基于端口号的虚拟主机配置
- AE PR模板基本图形预设素材包动态字幕文字标题排版动画预设效果
- 养生指南 3 : 人的健康离不开两大要素 : 足够的气血 / 畅通的经络
热门文章
- Flutter 桌面应用调研
- python--爬虫51job(3.1)
- Elasticsearch生产集群健康状况为yellow原因分析和解决方案
- Unity 多人联机游戏(一)
- UE4UE5 VR开发多人联机RPC的坑
- 真机调试错误 Reason: image not found想到的
- ASP.NET——使用FileUpLoad服务器控件实现文件上传
- 造一个智能语音音箱!!!太简单了【语音智能管家】
- 李宏毅机器学习【深度学习】(0)【机器学习】
- 解决报错ImportError: IProgress not found. Please update jupyter and ipywidgets.