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

使用Python和p5.js创建的迷你游戏示例,该游戏包含多个屏幕和动画,满足在画布上显示图像、使用键盘命令移动图像

下面是一个使用Python和p5.js创建的迷你游戏示例,该游戏包含多个屏幕和动画,满足在画布上显示图像、使用键盘命令移动图像、添加文本并更改其样式、利用p5.millis()函数使文本闪烁,以及根据时间操控图像和文本运动的要求。代码中还添加了一个简单的额外动画元素(背景颜色渐变)。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Interactive Mini - Game</title>
    <script defer src="https://pyscript.net/alpha/pyscript.js"></script>
    <link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css">
</head>

<py-env>
    - p5
</py-env>

<body>
    <py-script>
        from p5 import *
        import random

        # 全局变量
        image_x = width / 2
        image_y = height / 2
        image_speed = 5
        text_x = width / 2
        text_y = height / 4
        text_size_val = 32
        text_color = Color(255, 255, 255)
        text_visible = True
        last_blink_time = 0
        blink_interval = 1000  # 文本闪烁间隔时间(毫秒)
        background_color = Color(0, 0, 0)
        color_direction = 1  # 背景颜色渐变方向

        def setup():
            size(800, 600)
            global my_image
            my_image = load_image('your_image.jpg')  # 替换为你的图像文件名

        def draw():
            global image_x, image_y, text_x, text_y, text_size_val, text_color, text_visible, last_blink_time, \
                background_color, color_direction

            # 背景颜色渐变动画
            if background_color.r < 255 and color_direction == 1:
                background_color.r += 1
            elif background_color.r >= 255:
                color_direction = -1
            elif background_color.r > 0 and color_direction == -1:
                background_color.r -= 1
            background(background_color)

            # 绘制图像
            image(my_image, image_x, image_y)

            # 处理文本闪烁
            current_time = millis()
            if current_time - last_blink_time > blink_interval:
                text_visible = not text_visible
                last_blink_time = current_time

            # 绘制文本
            if text_visible:
                fill(text_color)
                text_size(text_size_val)
                text('Move the Image!', text_x, text_y)

            # 根据时间操控文本运动
            text_y = (text_y + 1) % height

        def key_pressed():
            global image_x, image_y
            if key == 'w':
                image_y -= image_speed
            elif key =='s':
                image_y += image_speed
            elif key == 'a':
                image_x -= image_speed
            elif key == 'd':
                image_x += image_speed

            # 限制图像在画布内
            image_x = constrain(image_x, 0, width - my_image.width)
            image_y = constrain(image_y, 0, height - my_image.height)


        run()
    </py-script>
</body>

</html>

代码说明:

  1. HTML部分
    • 引入pyscript.jspyscript.css,设置页面的基本结构。
    • 使用<py-env>标签声明项目依赖的Python库,这里是p5库。
  2. Python部分
    • 全局变量:定义了图像的位置、速度,文本的位置、大小、颜色、可见性,以及时间相关的变量,还有背景颜色渐变相关的变量。
    • setup函数:初始化画布大小,并加载图像。注意要将'your_image.jpg'替换为你实际的图像文件名。
    • draw函数
      • 实现背景颜色渐变动画,通过改变background_color的红色分量来实现。
      • 绘制图像和文本,根据时间控制文本的闪烁和运动。
    • key_pressed函数:根据键盘输入移动图像,并确保图像不会超出画布范围。

通过上述代码,你可以创建一个具有多个动画效果和交互功能的迷你游戏或交互式程序。如果需要进一步扩展,可以添加更多的图像、复杂的动画逻辑或其他交互方式。


http://www.kler.cn/a/579839.html

相关文章:

  • AXI接口总结
  • DeepSeek-进阶版部署(Linux+GPU)
  • RAG助力机器人场景理解与具身操作!EmbodiedRAG:基于动态三维场景图检索的机器人任务规划
  • 腾讯云低代码开发应用
  • Unity大型游戏开发全流程指南
  • ChātGPT开发“SolidWorks工具箱”,可建海量3D模型库,能一键画图、批量赋属性、自动出图,效率提高10倍
  • JAVA学习-练习试用Java实现“使用FP-Growth算法对大数据集中的频繁模式进行挖掘和筛选”
  • 将Exce中工作簿的多个工作表拆分为单独的Excel文件
  • 鸿蒙“一码多端”:万物互联时代的中国式创新与温度
  • 城市消防无人机系统解决技术详解
  • 蓝桥杯备赛-差分-推箱子
  • 拒绝“浅尝辄止”让考研知识深入人心
  • 010---基于Verilog HDL的分频器设计
  • 《 C++ 点滴漫谈: 三十 》函数参数
  • PyTorch基础语法万字解析
  • 开源将图像和 PDF 文件高精度地转换为 Markdown 和 JSON 格式的文本软件
  • 【一文学会 HTML5】
  • 系统架构设计师—系统架构设计篇—软件架构风格
  • Docker—Docker环境安装部署
  • 第N5周:Pytorch文本分类入门