arcade结合物理引擎pymunk金币弹弹弹_作者:李兴球

如本文章标有价格,需议价或其它事情商议请加微信pythonxia


以下是部分代码预览:

"""
arcade结合物理引擎pymunk金币弹弹弹_作者:李兴球
本程序用arcade模块结合pymunk模块制作很多金币下落效果,它们之间互相有碰撞。
pymunk手册:http://www.pymunk.org/en/latest/pymunk.html

"""
import random
import arcade
import pymunk
import timeit
import math
import os

SCREEN_WIDTH = 1200
SCREEN_HEIGHT = 800


class MyGame(arcade.Window):
    """继承自窗口的游戏类 """

    def __init__(self, width, height):
        super().__init__(width, height,'arcade结合物理引擎pymunk金币弹弹弹_作者:李兴球') 

        arcade.set_background_color(arcade.color.DARK_SLATE_GRAY)

        self.frames_counter = 0             # 帧计数器

        #  Pymunk 重力空间
        self.space = pymunk.Space()         # 游戏的重力空间
        self.space.gravity = (0.0, -180.0)  # 设置游戏重力空间的重力参数
   

    def spawn(self):
        
        """产生一枚金币金币"""
        size = 45
        mass = 1
        radius = 10
        inertia = pymunk.moment_for_circle(mass, 0, radius, (0, 0))       # 惯性
        body = pymunk.Body(mass, inertia)
        body.position = pymunk.Vec2d(SCREEN_WIDTH//2,SCREEN_HEIGHT//2)
 
        self.sprite_list.append(sprite)


    def on_draw(self):
        """        渲染屏幕.        """        
        arcade.start_render()

        # 记录此帧开始渲染时间
        draw_start_time = timeit.default_timer()

        # 画所有的角色
        self.sprite_list.draw()

        # 画地板
        for line in self.static_lines:
            body = line.body
            pv1 = body.position + line.a.rotated(body.angle)
            pv2 = body.position + line.b.rotated(body.angle)
            arcade.draw_line(pv1.x, pv1.y, pv2.x, pv2.y, arcade.color.WHITE, 2)

        # 显示时间
        output = f"处理时间: {self.processing_time:.3f}"
        arcade.draw_text(output, 20, SCREEN_HEIGHT - 20, arcade.color.WHITE, 12,font_name='simkai')

        output = f"渲染时间: {self.draw_time:.3f}"
        arcade.draw_text(output, 20, SCREEN_HEIGHT - 40, arcade.color.WHITE, 12,font_name='simkai')

        self.draw_time = timeit.default_timer() - draw_start_time # 渲染此帧所用时间
 

    def update(self, delta_time):
        start_time = timeit.default_timer()
        self.frames_counter +=1
        if self.frames_counter % 20 == 0 :        self.spawn()



def main():
    MyGame(SCREEN_WIDTH, SCREEN_HEIGHT)

    arcade.run()


if __name__ == "__main__":
    main()

下载完整源代码与素材,请扫码付款。

VIP免费查看

已有0人支付

本站所有作品,教程等皆为原创,版权所有。只供个人及单位内部研究使用,对外展示或传播必需经本站同意,且注明来自本站。培训机构等用本站资源培训学生,需经本站授权。一旦付款,表示同意本站知识付费原则:数字商品,不支持退款。亦可直接向微信号scratch8付款购买。入住QQ群:225792826 和爱好者共同交流,并且能下载免费提供的Python资源(需提供真实姓名才可入群)
李兴球的博客_Python创意编程技术前沿_pygame » arcade结合物理引擎pymunk金币弹弹弹_作者:李兴球
scratch

学本领,探索更大的世界!

李兴球博客 风火轮编程主页