測試題
1. RGB 值 [255, 255, 255] 得到白色。
2. RGB 值 [0, 255, 0] 得到綠色;
3. 要畫矩形,可以使用 Pygame 方法 pygame.draw.rect
;
4. 要畫線把多個點連在一起(如連連看),可以使用 pygame.draw.lines
方法。
5. 「像素」是「圖像元素」的簡寫,表示屏幕上(或紙上)的一個點。
6. 在一個 Pygame 窗口中,位置 [0, 0] 位於左上角。
7. 在這個圖中,位置 [50, 200] 位於字母 B。
8. 在這個圖中,位置 [300, 50] 位於字母 D。
9. 可以使用 blit
方法在 Pygame 中複製圖像。
10. 要移動一個圖像或者完成動畫,可以使用以下兩個步驟:
從原來的位置擦除圖像;
在新位置上繪製圖像。
動手試一試
1. 下面的程序會在屏幕上畫出一些不同的形狀。也可以在 \answers 文件夾和網站上找到 TIO_CH16_1.py。
import pygame, syspygame.initscreen=pygame.display.set_mode((640, 480))screen.fill((250, 120, 0))pygame.draw.arc(screen,(255,255,0),pygame.rect.Rect(43,368,277,235),-6.25, 0, 15)pygame.draw.rect(screen,(255, 0, 0),pygame.rect.Rect(334,191,190,290))pygame.draw.rect(screen,(128, 64, 0),pygame.rect.Rect(391,349,76,132))pygame.draw.line(screen,(0, 255, 0),(268, 259),(438,84),25)pygame.draw.line(screen,(0, 255, 0),(578, 259),(438,84),25)pygame.draw.circle(screen, (0, 0, 0), (452, 409), 11, 2)pygame.draw.polygon(screen, (0, 0, 255),[(39, 39), (44, 136), (59, 136), (60,102),(92,102),(94,131),(107, 141), (111, 50), (97, 50), (93, 86), (60, 82), (58, 38)], 5)pygame.draw.rect(screen,(0,0,255), pygame.rect.Rect(143,90,23,63),5)pygame.draw.circle(screen, (0, 0, 255), (153, 60), 15, 5)clock = pygame.time.Clockpygame.display.fliprunning = Truewhile running: clock.tick(60) for event in pygame.event.get:if event.type == pygame.QUIT: running = Falseelif event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: running = Falsepygame.quit
2. 要把沙灘球圖像換成一個不同的圖像,只需把這行代碼中的文件名:
my_ball = pygame.image.load('beach_ball.png')
替換成另一個圖片的文件名。
3. 在代碼清單 16-16 中,只需把
x_speed = 10y_speed = 10
改為其他的值,如
x_speed = 20y_speed = 8
4. 要讓球在一面「隱形」的牆上反彈,可以把代碼清單 16-16 中的這行代碼
if x > screen.get_width - 90 or x < 0:
改為:
if x > screen.get_width - 250 or x < 0:
這會讓球在到達窗口邊界之前就反向。可以對 y 坐標做同樣的處理,讓它在到達「地板」時也會反彈。
5. 將代碼清單 16-6 中的 display.flip 移到 while
循環內部,並增加一個延遲之後,代碼如下所示:
import pygame, sys, randompygame.initscreen = pygame.display.set_mode([640,480])screen.fill([255, 255, 255])for i in range (100): width = random.randint(0, 250) height = random.randint(0, 100) top = random.randint(0, 400) left = random.randint(0, 500) pygame.draw.rect(screen, [0,0,0], [left, top, width, height], 1) pygame.display.flip pygame.time.delay(30)
應該能看到各個矩形會單獨出現,因為我們放慢了程序的速度,現在畫出各個矩形之後會刷新顯示。如果對正弦曲線程序做這個處理,可以看到正弦曲線中的各個點分別畫出。