建立一个单文档,绘制两个小球,一个用上下左右键控制其运动,另一个小数用wasd键控制其上下左右运动
时间: 2024-10-18 17:07:06 浏览: 13
使用C和OPENGL绘制一个曲线上点可控制的bazier曲线.zip
要在单文档应用中使用Python和Pygame库创建这样的场景,首先你需要安装Pygame,可以使用pip命令安装:
```bash
pip install pygame
```
接下来是一个简单的示例代码,演示如何创建两个小球并分别用四个方向键和WASD键控制它们的移动:
```python
import pygame
import sys
# 初始化pygame
pygame.init()
# 设置窗口大小
window_width = 800
window_height = 600
screen = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption("Two Balls with Keyboard Controls")
class Ball:
def __init__(self, x, y, radius, speed):
self.x = x
self.y = y
self.radius = radius
self.speed = speed
self.dx, self.dy = 0, 0
def update(self, keys_pressed):
if keys_pressed[pygame.K_UP] or keys_pressed[pygame.K_w]:
self.dy -= self.speed
elif keys_pressed[pygame.K_DOWN] or keys_pressed[pygame.K_s]:
self.dy += self.speed
else:
self.dy = 0
if keys_pressed[pygame.K_LEFT] or keys_pressed[pygame.K_a]:
self.dx -= self.speed
elif keys_pressed[pygame.K_RIGHT] or keys_pressed[pygame.K_d]:
self.dx += self.speed
else:
self.dx = 0
# 更新位置,检查边界
self.x += self.dx
self.y += self.dy
if self.x + self.radius > window_width or self.x - self.radius < 0:
self.dx *= -1
if self.y + self.radius > window_height or self.y - self.radius < 0:
self.dy *= -1
ball1 = Ball(50, 50, 20, 4)
ball2 = Ball(window_width // 2, window_height // 2, 30, 5)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((255, 255, 255)) # 清屏背景色
ball1.update(pygame.key.get_pressed())
ball2.update({pygame.K_w: 'up', pygame.K_s: 'down', pygame.K_a: 'left', pygame.K_d: 'right'})
pygame.draw.circle(screen, (255, 0, 0), (int(ball1.x), int(ball1.y)), ball1.radius)
pygame.draw.circle(screen, (0, 255, 0), (int(ball2.x), int(ball2.y)), ball2.radius)
pygame.display.flip() # 更新显示
pygame.quit()
sys.exit()
```
在这个代码中,我们定义了一个Ball类,并创建了两个实例ball1和ball2。每个球有自己的位置、半径和速度。update方法根据按键事件调整球的移动方向。注意,对于第二个球,我们使用字典映射了键盘按键到运动方向。
运行此程序后,你可以在屏幕上看到两个小球,分别按上下左右键和WASD键控制它们的移动。
阅读全文