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

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.lryc.cn/news/2379333.html

相关文章:

  • 【Android构建系统】如何在Camera Hal的Android.bp中选择性引用某个模块
  • 【Canvas与诗词】醉里挑灯看剑 梦回吹角连营
  • Hue面试内容整理-Hue 架构与前后端通信
  • Linux搜索
  • Git基础原理和使用
  • 实现视频分片上传 OSS
  • 网络I/O学习(一)
  • 4:OpenCV—保存图像
  • Selenium-Java版(css表达式)
  • 产品更新丨谷云科技 iPaaS 集成平台 V7.5 版本发布
  • 深度学习让鱼与熊掌兼得
  • TDuckX 2.6 正式发布|API 能力开放,核心表单逻辑重构,多项实用功能上线。
  • LeetCode Hot100刷题——除自身以外数组的乘积
  • JAVA EE(进阶)_进阶的开端
  • PDF批量合并拆分+加水印转换 编辑 加密 OCR 识别
  • Go语言交替打印问题及多种实现方法
  • ArcGIS Pro调用多期历史影像
  • 10.11 LangGraph多角色Agent开发实战:生产级AI系统架构与性能优化全解析
  • 组态王|组态王中如何添加西门子1200设备
  • 发布时将多个bpl 打包成一个bpl的方法,或者说:不需要vcl60.bpl情况下 18.5K的exe 照常可以运行。
  • 6.2.2邻接表法-图的存储
  • C++23 放宽范围适配器以允许仅移动类型(P2494R2)
  • 【技海登峰】Kafka漫谈系列(十一)SpringBoot整合Kafka之消费者Consumer
  • Spring Boot三层架构设计模式
  • 在Java中调用Ant命令
  • WebRTC技术下的EasyRTC音视频实时通话SDK,助力车载通信打造安全高效的智能出行体验
  • 数据科学和机器学习的“看家兵器”——pandas模块 之二
  • 本地部署Firecrawl+Dify调用踩坑记录
  • MySQL--day2--基本的select语句
  • 什么是dom?作用是什么