flappybird_godot.md 1.8 KB
Newer Older
F
feilong 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
# 一个简单的 Python 小游戏

我们可以使用 python 的 pygame 快速建立一个弹球游戏,环境依赖
* 安装 python
* 使用 python 的包管理程序,安装依赖的 pygame 包:`pip install pygame`

编写你的第一游戏代码`game.py`,代码如下:

```python
import sys
import pygame

# 初始化
pygame.init()

# 游戏对话框大小
size = width, height = 320, 240

# 小球移动速度
speed = [2, 2]

# 黑色背景
black = 0, 0, 0

# 创建游戏屏幕
screen = pygame.display.set_mode(size)

# 加载小球 gif
ball = pygame.image.load("ball.gif")

# 获取游戏图片的矩形框
ballrect = ball.get_rect()

# 游戏循环
while 1:
    # 判断是否退出
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

    # 按 speed 速度,计算移动小球后的矩形框
    ballrect = ballrect.move(speed)

    # 更新速度(大小和方向)
    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = -speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = -speed[1]

    # 绘制黑色背景
    screen.fill(black)

    # 绘制小球
    screen.blit(ball, ballrect)

    # 使用双缓存机制刷新屏幕
    pygame.display.flip()
```

其中小球 gif 资源如下:

![](./test/ball.gif)

使用命令`python game.py`启动游戏,游戏启动后的画面如下

![](./test/ball_game.gif)

以下关于上述游戏代码说法错误的是?

## 答案

编写游戏只能使用 pygame

## 选项

### A

F
feilong 已提交
78
一个游戏程序,一般有一个死循环,反复绘制游戏画面
F
feilong 已提交
79 80 81 82 83 84 85 86

### B

许多游戏的渲染,都会采用双缓存机制,在背后的帧里面做渲染,再一次性刷新到前台帧

### C

在游戏循环里,可以检测各种交互事件,并响应事件,从而完成游戏玩家和游戏的互动,例如:退出游戏