当前位置: 首页 > java >正文

Level2.8蛇与海龟(游戏)

#小龟快跑游戏  输入难度(1-5),蛇追到龟,游戏结束
#分析问题:从局部==>整体
#游戏画面:创建画笔(海龟+蛇)==>1.海龟移动(键盘控制)==>2.蛇(自动追踪,海龟位置)==>3.海龟(限定范围,防止跑出画布之外)==>4.游戏(得分、难度)

1.海龟移动(键盘控制)
2.蛇(自动追踪,海龟位置)

(1)坐标方位角

坐标方位角:坐标系中的某一直线与x轴正方向之间的夹角。

(2)setheading()方法

改变画笔朝向,的坐标方位角。setheading(90)

(3)towards() 方法

当画布上有两只画笔时,它可以获取两个画笔之间相邻的直线,与x轴形成的角度

就是能获取这条直线的“坐标方位角"。

snake.towards(t)        #蛇朝向海龟

towards方法可以获取2只画笔连成直线,与x轴围成的坐标方位角,范围0~360度。


3.海龟(限定范围,防止跑出画布之外)

海龟的x<200,如何获取x的移动坐标呢?

xcor()方法---------获取x坐标
ycor()方法---------获取y坐标

海龟在画布上:(t.xcor(),t.ycor())

若海龟在图上位置,再前进“按下Up键”,就会超出200范围,是不允许的。在函数up里,添加限定条件:

右边界线:

if t.xcor()>200:

     t.goto(200,t.ycor())

(1)边界线:(上、下、左、右)

def up():checkbound()    #调用分装好的函数(边界:上下左右)
def down():t.backward(10)checkbound()
def left():t.left(45)
def right():t.right(45)def checkbound():   #函数封装(边界:上下左右)t.forward(10)if t.xcor()>200:t.goto(200,t.ycor())if t.ycor()>200:t.goto(t.xcor(),200)if t.xcor()<-200:t.goto(-200,t.ycor())if t.ycor()<-200:t.goto(t.xcor(),-200)
(2)画出边界线:(上、下、左、右) 

#画出边界线
turtle.penup()
turtle.goto(200,200)
turtle.pendown()
turtle.color("red")
turtle.pensize(3)
for i in range (4):turtle.right(90)turtle.forward(400)
(3)变量修改 边界线大小:(上、下、左、右) 等比例变大变小
boxsize=300def checkbound():   #函数封装(边界:上下左右)t.forward(10)if t.xcor()>boxsize:t.goto(boxsize,t.ycor())if t.ycor()>boxsize:t.goto(t.xcor(),boxsize)if t.xcor()<-boxsize:t.goto(-boxsize,t.ycor())if t.ycor()<-boxsize:t.goto(t.xcor(),-boxsize)#画出边界线
turtle.penup()
turtle.goto(boxsize,boxsize)
turtle.pendown()
turtle.color("red")
turtle.pensize(3)
for i in range (4):turtle.right(90)turtle.forward(boxsize*2)


4.游戏(得分、难度)

http://www.xdnf.cn/news/6975.html

相关文章:

  • 在WSL中的Ubuntu发行版上安装Anaconda、CUDA、CUDNN和TensorRT
  • 校平机:金属板料处理的核心工艺装备​
  • 【软件测试】性能测试 —— 工具篇 LoadRunner 介绍与使用
  • 【HCIA】MUX VLAN
  • 【原创】基于视觉大模型gemma-3-4b实现短视频自动识别内容并生成解说文案
  • 从零开发 1688 数据接口:商品详情页实时采集 API 接入详解
  • facebook的Open Molecules 2025 (OMol25) 数据集、评估与模型开源速读
  • Mysql数据库之集群进阶
  • 从ThreadLocal到Scoped Values:Java高效数据共享机制的革命性演进
  • 代码随想录算法训练营第四十二四十三天
  • (保姆级)Win10 安装Oracle Developer Suite教程
  • OpenCV 特征检测全面解析与实战应用
  • C++学习:六个月从基础到就业——C++11/14:auto类型推导
  • 解读 TypeScript 枚举Enum
  • 深入理解 Java 字节码操作码
  • 数据存储与容灾:构建企业级数据安全的全栈解决方案
  • Springboot构建项目时lombok不生效
  • 【鸿蒙开发避坑】使用全局状态变量控制动画时,动画异常甚至动画方向与预期相反的原因分析以及解决方案
  • 新的节能技术和一体化解决方案,推动工厂智能升级和产业转型
  • BG开发者日志517:demo数据分析与修改方向
  • 【SpringBoot】关于MP使用中配置了数据库表前缀的问题
  • C++类与对象--2 对象的初始化和清理
  • 英汉 “语言” 初印象:符号背后的文化底色​
  • Java中调用外部命令:Runtime.exec() vs ProcessBuilder
  • 【基于栈的 Vue3 路由历史管理:优雅处理多系统间的导航】
  • 磁盘I/O子系统
  • 【VSCode】快捷键合集(持续更新~)
  • GJOI 5.15 题解
  • FTP与NFS服务实战:从配置到应用
  • 考公知识总结