用Pygame寫一個簡答的互動介面
阿新 • • 發佈:2018-12-21
程式設計師之所以犯錯誤,不是因為他們不懂,而是因為他們自以為什麼都懂。
# The Pie Game # Python 3.2 import math import sys import pygame from pygame.locals import * pygame.init() screen = pygame.display.set_mode((600,500)) pygame.display.set_caption("The Pie Game - Press 1,2,3,4") myfont = pygame.font.Font(None, 60) color = 200, 80, 60 width = 4 x = 300 y = 250 radius = 200 position = x-radius, y-radius, radius*2, radius*2 piece1 = False piece2 = False piece3 = False piece4 = False while True: for event in pygame.event.get(): if event.type == QUIT: sys.exit() elif event.type == KEYUP: if event.key == pygame.K_ESCAPE: sys.exit() elif event.key == pygame.K_1: piece1 = True elif event.key == pygame.K_2: piece2 = True elif event.key == pygame.K_3: piece3 = True elif event.key == pygame.K_4: piece4 = True #clear the screen screen.fill((0,0,200)) #draw the four numbers textImg1 = myfont.render("1", True, color) screen.blit(textImg1, (x+radius/2-20, y-radius/2)) textImg2 = myfont.render("2", True, color) screen.blit(textImg2, (x-radius/2, y-radius/2)) textImg3 = myfont.render("3", True, color) screen.blit(textImg3, (x-radius/2, y+radius/2-20)) textImg4 = myfont.render("4", True, color) screen.blit(textImg4, (x+radius/2-20, y+radius/2-20)) #should the pieces be drawn? if piece1: start_angle = math.radians(0) end_angle = math.radians(90) pygame.draw.arc(screen, color, position, start_angle, end_angle, width) pygame.draw.line(screen, color, (x,y), (x,y-radius), width) pygame.draw.line(screen, color, (x,y), (x+radius,y), width) if piece2: start_angle = math.radians(90) end_angle = math.radians(180) pygame.draw.arc(screen, color, position, start_angle, end_angle, width) pygame.draw.line(screen, color, (x,y), (x,y-radius), width) pygame.draw.line(screen, color, (x,y), (x-radius,y), width) if piece3: start_angle = math.radians(180) end_angle = math.radians(270) pygame.draw.arc(screen, color, position, start_angle, end_angle, width) pygame.draw.line(screen, color, (x,y), (x-radius,y), width) pygame.draw.line(screen, color, (x,y), (x,y+radius), width) if piece4: start_angle = math.radians(270) end_angle = math.radians(360) pygame.draw.arc(screen, color, position, start_angle, end_angle, width) pygame.draw.line(screen, color, (x,y), (x,y+radius), width) pygame.draw.line(screen, color, (x,y), (x+radius,y), width) #is the pie finished? if piece1 and piece2 and piece3 and piece4: color = 0,255,0 pygame.display.update()
截圖:
使用pygame實現的一個簡單的介面,按鍵盤1,2,3,4會有對應的地方亮起,當四個都亮起來之後會改變顏色
使用myfont.render畫字,再用screen.blit放到螢幕上
使用pygame.draw.arc畫弧形,使用pygame.draw.line畫線
包在while迴圈中,使用pygame.event.get()捕捉事件
最後加一個判斷,當四個都是true時改變顏色