python - 如何在我正在制作的游戏中显示颜色?
问题描述
这是我第一次使用 Pygame。我刚刚开始学习编程。目前我学习了大约 4 到 7 个月。
我按照我正在制作的游戏的教程进行操作。(如何编程游戏!(用 Python 编写)Keith Galli)
不幸的是,颜色不会在游戏中显示。所以目前我只是盯着一个黑色的“盒子”。
该游戏是一种“太空入侵者”游戏。所以有蓝砖从“盒子”的顶部掉下来,但此刻你看不到它们。
因为我将 Linux Mint 用作我的操作系统,所以我想:也许我需要其他颜色代码。
我试过ANSI代码:
# ANSI escae code for colours:
#RED = "\e[0;31m"
#BLUE = "\e[34mBlue"
#YELLOW= "\e[33mYellow"
#BACKGROUND_COLOUR = "\e[30m"
instead of RGB:
# RGB colours:
RED = (255, 0, 0))
BLUE = (0, 0, 255))
YELLOW= (204, 204, 0)
BACKGROUND_COLOUR = (0, 0, 0))
但是当我运行游戏时我仍然看不到任何东西:(
这是一些代码:
import pygame
import random
import sys
import colorama
pygame.init()
WIDTH = 800
HEIGHT = 600
# ANSI escae code for colours:
#RED = "\e[0;31m"
#BLUE = "\e[34mBlue"
#YELLOW= "\e[33mYellow"
#BACKGROUND_COLOUR = "\e[30m"
# RGB colours:
RED = (255, 0, 0))
BLUE = (0, 0, 255))
YELLOW= (204, 204, 0)
BACKGROUND_COLOUR = (0, 0, 0))
player_size = 50
player_pos = [WIDTH/2, HEIGHT - 2 * player_size]
enemy_size = 50
enemy_pos = [random.randint(0, WIDTH - enemy_size), 0]
enemy_list = [enemy_pos]
SPEED = 10
screen = pygame.display.set_mode((WIDTH,HEIGHT))
# gameloop
game_over = False
score = 0
clock = pygame.time.Clock()
myFont = pygame.font.sysFont("monospace", 35)
def set_level(score,SPEED):
if score < 20:
SPEED = 5
elif score < 40:
SPEED = 8
elif score < 60:
SPEED = 12
else:
SPEED = 18
return SPEED
# SPEED = score / 5 +1
# return SPEED
def drop_enemies(enemy_list):
delay = random.random()
if len(enemy_list) < 10 and delay < 0.1:
x_pos = random.randint(0, WIDTH - enemy_size)
y_pos = 0
enemy_list.append([x_pos, y_pos])
def draw_enemies(enemy_list):
for enemy_pos in enemy_list:
pygame.draw.rect(screen, BLUE, (enemy_pos[0], enemy_pos[1],
enemy_size, enemy_size))
我希望看到游戏中的积木。使用哪些颜色编码......以及如何实现这些?
蓝色代表从天上掉下来的,红色代表玩家本身。
解决方案
您需要一个主循环,它执行以下操作:
- 使用背景颜色清除屏幕 (
pygame.Surface.fill()
) - 绘制所有对象
- 更新显示(
pygame.display.update()
或pygame.display.flip()
)
例如:
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
screen.fill(BACKGROUND_COLOUR)
draw_enemies(enemy_list)
pygame.display.update()
推荐阅读
- javascript - 有没有办法使用 jQuery validate 为输入显示两个不同的错误消息?
- javascript - 如何将别名添加到此不和谐机器人命令以及如何嵌入机器人的响应?
- java - 我无法通过 google calendar API 创建环聊链接或 google meet 链接
- python - 遍历小列表 n 次
- javascript - 在各种单独的多边形之外掩盖传单地图时的奇怪行为
- javascript - 在 ComponentDidUpdate 中打印一个组件 react
- bash - 根据内存问题将文本附加到第二行的末尾
- amazon-web-services - 带有时区偏移的红移 to_timestamp
- python - 如何在python中重新排列字符串行
- java - 如何将 Mockito.doAnswer() 与没有参数的 void 方法一起使用?