我正试着在一个表面上画一条线,然后我在显示器上涂鸦. 当我这样做时,只有表面出现,而线没有绘制.

我写的代码是

import pygame as pg
import numpy as np

pg.init()

# Define constants for the screen width and height
SCREEN_WIDTH = 750
SCREEN_HEIGHT = 500

# Create the screen object
screen = pg.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
screen.fill((40,158,80))

running = True
while running:
    for event in pg.event.get():
        if event.type == pg.QUIT:
            running = False    

    # Road surface
    road_height = 100
    road = pg.Surface((SCREEN_WIDTH+10,road_height))
    road.fill((0,0,0))
    road_topleft = [0,(SCREEN_HEIGHT-road_height)/2]
    
    # Side lines
    st_ratio = 0.0375 # side to total road width ratio
    sl_width = int(np.rint(st_ratio*road_height))
    sideline_topleft = road_topleft+[0,st_ratio*SCREEN_HEIGHT]

    pg.draw.line(road, (255,255,255),[0, (SCREEN_HEIGHT-road_height)/2+st_ratio*road_height], \
                 [SCREEN_WIDTH, (SCREEN_HEIGHT-road_height)/2+st_ratio*road_height], sl_width)
    
    screen.blit(road, road_topleft)
    pg.display.flip()

pg.quit()

我的 idea 是设计一条道路,我目前正试图将线条添加到"道路"表面. 然而,我得到的输出是

Output screen

推荐答案

road米的高度是road_height米.所以(SCREEN_HEIGHT-road_height)/2+st_ratio*road_height)号是不允许的.road的中心是road_height//2:

pg.draw.line(road, (255,255,255), [0, road_height//2], [SCREEN_WIDTH, road_height//2], sl_width)

请注意,这条线是在road号公路上画的,而不是在screen号公路上.最后,在screen上的某个点上的道路是blit,但你不能在road上使用屏幕坐标来绘制.

Python相关问答推荐

在线条上绘制表面

在Wayland上使用setCellWidget时,try 编辑QTable Widget中的单元格时,PyQt 6崩溃

基于字符串匹配条件合并两个帧

Python虚拟环境的轻量级使用

如何使用它?

我对我应该做什么以及我如何做感到困惑'

在ubuntu上安装dlib时出错

当我try 在django中更新模型时,模型表单数据不可见

使用Python从URL下载Excel文件

在Google Drive中获取特定文件夹内的FolderID和文件夹名称

如何过滤组s最大和最小行使用`transform`'

为什么t sns.barplot图例不显示所有值?'

如何在GEKKO中使用复共轭物

使用SQLAlchemy从多线程Python应用程序在postgr中插入多行的最佳方法是什么?'

将字节序列解码为Unicode字符串

使用Scikit的ValueError-了解

是否将列表分割为2?

Python Curses Textbox.ather()删除空行,有没有办法保留它们?

元组列表:如果第一个元组元素匹配,则合并两个数据帧列

是什么导致了这个Gekko语法错误:函数字符串的语法错误:缺少左括号?