pygame利用三角函数画圆

十分简单,只要知道math.radians()是将角度转为弧度,以及这些三角函数的参数都是弧度就好了。
import math,sys,random,pygame
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((600,500))
pygame.display.set_caption("Circle Demo")
screen.fill((0,0,100))

pos_x=300
pos_y=250
radius=200
angle=359

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.edit()
        keys = pygame.key.get_pressed()
        if keys[K_ESCAPE]:
            sys.edit()

        angle+=1
        angle%=360
        if angle==0:
            r=random.randint(0,255)
            g=random.randint(0,255)
            b=random.randint(0,255)
            color=r,g,b
        x=math.cos(math.radians(angle))*radius
        y=math.sin(math.radians(angle))*radius

        pos=(int(pos_x+x),int(pos_y+y))
        pygame.draw.circle(screen,color,pos,10,0)
        pygame.display.update()
### Pygame精灵组函数及其使用方法 #### 创建和初始化精灵组 为了有效地管理和渲染大量游戏对象,Pygame 提供了 `pygame.sprite.Group` 类。此容器可以容纳多个继承自 `pygame.sprite.Sprite` 的实例,并允许批量执行某些操作。 ```python import pygame as pg all_sprites = pg.sprite.Group() # 创建一个新的精灵组 player_sprite = PlayerSprite() # 假设PlayerSprite是从Sprite派生出来的类 all_sprites.add(player_sprite) # 将玩家角色加入到精灵组中 ``` #### 添加与移除精灵 通过调用 `Group.add()` 方法可向现有精灵集合内增加新的成员;而要删除某个特定的精灵,则可以通过 `remove()` 或者让其自行销毁(即不再存在于任何地方)。此外还有其他一些辅助性的增删手段可供选择。 ```python enemy_sprite = EnemySprite() all_sprites.add(enemy_sprite) # 移除单个敌人 all_sprites.remove(enemy_sprite) # 让敌方单位自己消失 enemy_sprite.kill() ``` #### 更新所有精灵状态 每当需要刷新屏幕上的显示内容时,只需简单地调用一次 `update()` 即可完成整个场景里全部活动物体的状态同步工作。这一步骤通常放在主循环里面定期触发。 ```python def game_loop(): while True: all_sprites.update() # 调整每个精灵的位置或其他属性 screen.fill((0, 0, 0)) # 清屏准备重绘新帧画面 all_sprites.draw(screen)# 绘制当前状态下所有的可见元素 pg.display.flip() # 刷新窗口展现最新图像 ``` #### 碰撞检测机制 利用内置的方法能够轻松实现两两之间是否存在接触关系判断的功能。比如下面这段代码展示了如何查找发生碰撞的第一个目标以及获取一组符合条件的对象列表: ```python hit_list = pg.sprite.spritecollide(player_sprite, enemy_group, False) if hit_list: print("发生了碰撞") first_hit = pg.sprite.groupcollide(bullet_group, block_group, True, False).popitem()[1][0] print(f"子弹击中的第一个障碍物是 {first_hit}") ``` 以上就是有关于 Pygame 中精灵组的主要函数说明及其实现方式[^2]。这些特性使得开发者们可以在构建复杂的游戏世界时更加得心应手,同时也提高了程序结构化程度便于维护和发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值