Python 小甲鱼教程 乌龟吃鱼游戏
整个程序按照答案来敲的,我觉得按照自己的水平完全没思路写得出来框架,就当熟悉代码风格来处理吧。
import random as r
legal_x = [0,10] #先定义范围,这里很巧妙,用一个列表2个数字来表示,而不是一个range
legal_y = [0,10]
class Turtle:
def __init__(self):
self.power = 100
self.x=r.randint(legal_x[0],legal_x[1]) #正是因为上面的设置,下面生成初始位置就可以用randint函数来处理,这里是生成self的初始位置x
self.y=r.randint(legal_y[0],legal_y[1]) #生成初始位置y
def move(self):
new_x=self.x+r.choice([1,2,-1,-2]) #移动一步后,新位置是原始位置加上移动距离,距离只有4种可能
new_y=self.y+r.choice([1,2,-1,-2])
if new_x <legal_x[0]: #如果X越出了负界限,则自动反向
self.x=legal_x[0]-(new_x - legal_x[0])
elif new_x>legal_x[1]: #如果X越出了正界限,则自动反向
self.x=legal_x[1]-(new_x - legal_x[1])
else:
self.x=new_x #不越界的情况下,刷新位置,就等于移动后位置
if new_y<legal_y[0]:
self.y=legal_y[0]-(new_y - legal_y[0])
elif new_y>legal_y[1]:
self.y=legal_y[1]-(new_y - legal_y[1])
else:
self.y=new_y
self.power -= 1
return (self.x,self.y)
def eat(self): #定义动作吃,吃了以后体力加20
self.power+=20
if self.power>100: #超过体力上限100了就不变
self.power = 100
class Fish:
def __init__(self):
self.x = r.randint(legal_x[0],legal_y[1]) #这里定义鱼类,初始化位置
self.y = r.randint(legal_y[0],legal_y[1])
def move(self): #和乌龟的属性一样,移动功能
new_x = self.x + r.choice([1,2,-1,-2])
new_y = self.y + r.choice([1,2,-1,-2])
if new_x < legal_x[0]:
self.x = legal_x[0] - (new_x-legal_x[0])
elif new_x > legal_x[1]:
self.x = legal_x[1]-(new_x-legal_x[1])
else:
self.x = new_x
if new_y < legal_y[0]:
self.y = legal_y[0]-(new_y - legal_y[0])
elif new_y > legal_y[1]:
self.y = legal_y[1]-(new_y - legal_y[1])
else:
self.y = new_y
return (self.x,self.y)
turtle = Turtle() #实例化乌龟
fish=[] #将所有的鱼放进一个list
for i in range(10):
new_fish = Fish() #在新建实例的同时,在下一行代码,将实例鱼放进列表
fish.append(new_fish)
while True:
if not len(fish): #len(fish)在有鱼的情况下是true,所以当没鱼的时候,执行下面的while循环,当有鱼或者乌龟有体力的时候,游戏始终循环
print ('no more fishes, game over')
break
if not turtle.power: #如果乌龟体力没了,游戏结束
print ('turtle is dead')
break
pos = turtle.move() #将乌龟实例move函数返回的位置,赋值给pos
for each_fish in fish[:]: #历遍每条鱼,鱼移动后的位置和乌龟的位置有重叠,就执行吃的动作,并移除一条鱼
if each_fish.move() == pos:
turtle.eat()
fish.remove(each_fish)
print ('one fish was ated')
Python 小甲鱼教程 乌龟吃鱼游戏相关推荐
- 面向对象编程项目案例(栈与队列封装和乌龟吃鱼游戏)
一.Pygame相关介绍 1.Pygame是跨平台Python模块,专为电子游戏设计,包含图像.声音.允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚.Pygame常用模块 2.一个游 ...
- python 小甲鱼小游戏_Python 小甲鱼教程 Easygui 篇
Python 小甲鱼教程 Easygui 篇 终于有点实质性可以看到摸到的界面了,搜了一下虽然easygui用的不多,但是作为一个起步,z,----,先了解一下吧,e,毕竟道理想通. 下面按照小甲鱼的 ...
- python小鱼_Python面向对象练习-通过pygame改良乌龟吃鱼
先看看最后效果 图片的话是从网上小鱼儿那个案例里面拿的,实现的功能如下: 是通过方向键操作乌龟,进行吃鱼 吃鱼的时候根据乌龟的x,y坐标和鱼的x,y进行检测,在碰撞区域则干掉这条鱼 背景音乐和吃鱼音乐 ...
- 基于Python的水母吃鱼游戏的设计与实现
源码获取:https://www.bilibili.com/video/BV1Ne4y1g7dC/ 基于Python的水母吃鱼游戏的设计与实现
- Python-小游戏-乌龟吃鱼
#讲道理乌龟吃鱼的嘛? 先上代码,虽然感觉很多地方可以优化 import random import timeclass Tortoise:x = random.randint(0,10)y = ra ...
- python小甲鱼笔记
提示:python小甲鱼笔记 文章目录 前言 〇.函数 1.常用基本函数 2.常用表函数 3.常用子函数 4.输入.输出 5.字符串函数 5.快捷键 一.常用函数案例 1.文本输出 2.猜数 if 实 ...
- Python小甲鱼学习笔记31-35
31永久存储pickle模块 一.pickle模块 0.pickle的实质是什么? a.将对象数据以二进制形式保存在文件中 b.将对象数据以二进制形式从文件中读取 输入输出二进制流 1.使 ...
- python小课文件_[Python]小甲鱼Python视频第030课(文件系统:介绍一个高大上的东西)课后题及参考解答...
# -*- coding: utf-8 -*- """ Created on Fri Mar 8 15:49:32 2019 @author: Administrator ...
- (第二版)零基础入门Python小甲鱼-笔记-第三章-p5
(第二版)零基础入门Python小甲鱼-笔记-第三章-p5 变量和字符串(下) 上节课讲了有些字符比如换行符.TAB制表符还有单引号.双引号等等...可以通过转义字符来实现,今天来谈谈原始字符串 1. ...
最新文章
- C 关于使用异或运算操作概述
- 高职扩招计算机应用课程,高职扩招带来的“新生”
- 清理Oracle安装目录里的一些日志信息
- java的dispatcher_Java RequestDispatcher 详解
- 手把手教你在 Ubuntu16.04 安装 GPU 驱动 + CUDA9.0 + cuDNN7
- 浅谈移动Web开发:深入概念
- 华为harmonyos公测,华为鸿蒙 Harmony OS 2.0 第二轮公测已开启,赶紧申请报名
- Linux基础之-网络配置,主机名设置,ssh登陆,scp传输
- 【Android 修炼手册】Gradle 篇 -- Android Gradle Plugin 主要流程分析
- 2019-03-22-算法-进化(环形链表)
- 单独像对相对定向元素解析
- 双重检查锁定及单例模式
- Atitit ati teck trend技术趋势资料包 C:\onedriver\OneDrive\Documents\0 it impttech topic\ati teck trend技术趋
- jQuery学习笔记之选取选定复选框的同行某列元素
- 做一个古诗词的html页面,制作一个古诗词的网页
- Leetcode 1484题: Group Sold Products By The Date
- 冰冻三尺非一日之寒——大型网站架构演进
- Spring中Environment的使用
- 何恺明团队新作ViTDet:用于目标检测的视觉Transformer主干网络
- 【STM32】基础知识 第十课 CubeMx
热门文章
- 25、进程的挂起状态
- ps入门第1天_认识PS基础文件设置_打印分辨率300像素_ps颜色模式
- android手机WiFi热点名修改
- 小程序三剑客-wxml、wxss、js初步认识
- linux 挂载 更改 权限,linux中重新挂载改写权限方法
- time模块和datetime模块详解
- ASM:《X86汇编语言-从实模式到保护模式》第13章:保护模式下内核的加载,程序的动态加载和执行...
- 红牛的广告:你的能量超乎你的想象
- cva《财务建模》第六讲笔记
- 14.信号完整性 关键字:信号反射 振铃 串扰 开关噪声 地弹 特性阻抗