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

python贪吃蛇小游戏

在这里插入图片描述

1.简介

使用了turtle库来创建图形界面,你可以使用键盘的W、A、S、D键来控制蛇的移动方向。蛇吃到食物后,身体会增长,如果蛇撞到自己或者游戏边界,游戏就会结束。

2. 代码

import turtle
import time
import randomdelay = 0.1# 生成食物的位置
food = turtle.Turtle()
food.shape("circle")
food.color("red")
food.penup()
food.goto(random.randint(-15, 15), random.randint(-15, 15))
food.speed(0)# 蛇头
head = turtle.Turtle()
head.shape("square")
head.color("blue")
head.penup()
head.goto(0, 0)
head.direction = "stop"# 蛇的食物
segments = []# 用于控制蛇的移动
def move():if head.direction == "up":y = head.ycor()head.sety(y + 20)if head.direction == "down":y = head.ycor()head.sety(y - 20)if head.direction == "left":x = head.xcor()head.setx(x - 20)if head.direction == "right":x = head.xcor()head.setx(x + 20)#游戏结束
def game_over():# 提示游戏结束print("Game Over")turtle.write("Game Over", align="center", font=("Courier", 24, "normal"))head.goto(0, 0)head.direction = "stop"for segment in segments:segment.goto(1000, 1000)segments.clear()turtle.done()# 键盘绑定
def go_up():if head.direction != "down":head.direction = "up"
def go_down():if head.direction != "up":head.direction = "down"
def go_left():if head.direction != "right":head.direction = "left"
def go_right():if head.direction != "left":head.direction = "right"# 键盘监听
turtle.listen()
turtle.onkey(go_up, "w")
turtle.onkey(go_down, "s")
turtle.onkey(go_left, "a")
turtle.onkey(go_right, "d")# 主游戏循环
while True:turtle.update()# 检查碰撞边界if head.xcor()> 290 or head.xcor() < -290 or head.ycor() > 290 or head.ycor() < -290:game_over()# 检查蛇头是否接触到食物if head.distance(food) < 20:# 移动食物到随机位置x = random.randint(-15, 15)y = random.randint(-15, 15)food.goto(x, y)# 添加蛇的身体段new_segment = turtle.Turtle()new_segment.shape("square")new_segment.color("grey")new_segment.penup()segments.append(new_segment)# 移动蛇身体的最后部分到前一部分的位置for index in range(len(segments)-1, 0, -1):x = segments[index-1].xcor()y = segments[index-1].ycor()segments[index].goto(x, y)if len(segments) > 0:x = head.xcor()y = head.ycor()segments[0].goto(x, y)move()# 检查蛇头碰到身体for segment in segments:if 0 < segment.distance(head) < 20:game_over()time.sleep(delay)turtle.done()

http://www.mrgr.cn/news/37736.html

相关文章:

  • 短视频矩阵系统源码开发/矩阵系统OEM搭建--源代码开发经验分享
  • 用Promise实现前端并发请求
  • 【JAVA报错已解决】Java.lang.NullPointerException
  • 拿到一个新项目,如何开展测试
  • 银河麒麟V10系统下qt程序单独运行
  • g++的一些常用标识
  • 【C++打怪之路Lv4】-- 类和对象(中)
  • Python基础知识 (九)os模块、异常、异常的传递性
  • 矩阵转置的运算公式来了,附矩阵转置计算器
  • 使用代理IP数据采集都需要注意那些?
  • 【Linux】线程同步与互斥
  • 数据先行 -- Scale AI如何通过AI数据服务成为独角兽
  • npm install 卡住不动的六种解决方法
  • Harbor使用
  • 动态规划算法:12.简单多状态 dp 问题_打家劫舍_C++
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-26
  • MATLAB中的GPU计算:实现与应用
  • 案例精选 | 海门北部新城医学综合体智能化日志管理系统部署
  • RDL 按钮事件自定义弹框
  • 黄金短线交易策略:波动中的高效盈利之法