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

使用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函数:根据键盘输入移动图像,并确保图像不会超出画布范围。

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

相关文章:

  • [GHCTF 2025]SQL??? 【sqlite注入】
  • java中过滤器
  • 反码与补码
  • 【阿里云】控制台使用指南:从创建ECS到系统诊断测评
  • (base)user1@ubuntu:~$pip install xxxx(xxxx表示第三方库) 分析
  • Centos7系统遇到的第一个问题 yum
  • 【面试】框架
  • ngx_regex_create_conf
  • Git(一)
  • leetcode hot100--动态规划【五步总纲】
  • 文本对抗样本系列的论文阅读笔记(整理合订)
  • 学习笔记11——并发编程之并发关键字
  • ArcGIS Pro中字段的新建方法与应用
  • 从新手到专家:嵌入式代码空间优化技巧
  • C++ Primer Plus第十二章课后习题总结
  • 【二分算法】-- 三种二分模板总结
  • 【实战ES】实战 Elasticsearch:快速上手与深度实践-5.1.2基于Painless脚本的日志告警
  • 空指针异常的触发
  • 论文阅读分享——UMDF(AAAI-24)
  • 用Haskell语言和wreq库配合HTTP写个爬虫程序
  • 著名文博专家吴远明因交通事故离世,享年75岁
  • 精品消费“精”在哪?多在体验上下功夫
  • 美国将与阿联酋合作建立海外最大的人工智能数据中心
  • 一图看懂|印巴交火后,双方基地受损多少?
  • 工商银行杭州金融研修院原院长蒋伟被“双开”
  • 澎湃·镜相第二届非虚构写作大赛初选入围名单公示