""" 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()
下载完整源代码与素材,请
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)