Tải bản đầy đủ (.pdf) (8 trang)

Vẽ chữ đơn giản trong python

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (241.27 KB, 8 trang )

VẼ CHỮ
import pygame
pygame.init()
# Tạo một surface với kích thước 500x500 pixel
screen = pygame.display.set_mode((500, 500))

# Đặt tiêu đề cho cửa sổ
pygame.display.set_caption('flappy')

# Khởi tạo các màu sắc được sử dụng trong trò chơi
GREEN = (0,255,0)
RED = (255,0,0)

running = True

clock = pygame.time.Clock()

# Khởi tạo đối tượng font với font chữ "san" và kích thước 30 pixel
font = pygame.font.SysFont('san', 30)

# Sử dụng phương thức render() để tạo một surface chứa văn bản "Random"
text = font.render("Random", True, (0,0,0))

while running:
clock.tick(60)


# Vẽ màn hình với màu xanh lá cây
screen.fill(GREEN)

# Vẽ surface chứa văn bản lên màn hình


screen.blit(text, (50,50))

# Lặp qua danh sách các sự kiện được chuyển đến Pygame
for event in pygame.event.get():
# Kiểm tra sự kiện QUIT để thoát khỏi chương trình
if event.type == pygame.QUIT:
running = False
# Gọi phương thức flip() để cập nhật màn hình
pygame.display.flip()

# Khi thốt vịng lặp chính, gọi hàm pygame.quit() để thốt khỏi Pygame
pygame.quit()


Mã này có chức năng hiển thị văn bản "Random" lên trên
cửa sổ Pygame và cho phép thay đổi màu chữ từ đen sang
xanh khi di chuột qua văn bản đó.

import pygame

pygame.init()
screen = pygame.display.set_mode((500, 500))
pygame.display.set_caption('flappy')
GREEN = (0,255,0)
RED = (255,0,0)
running = True
clock = pygame.time.Clock()
font = pygame.font.SysFont('san', 30)
text = font.render("Random", True, (0,0,0))
text_box = text.get_rect()

while running:
clock.tick(60)
screen.fill(GREEN)
screen.blit(text, (50,50))

mouse_x, mouse_y = pygame.mouse.get_pos()


if 50 <= mouse_x <= (50 + text_box[2]) and 50 <= mouse_y <= (50 +
text_box[3]):
text = font.render("Random", True, (0,0,255))
else:
text = font.render("Random", True, (0,0,0))

for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False

pygame.display.flip()

pygame.quit()

Mã này có chức năng hiển thị văn bản "Random" lên trên cửa sổ Pygame và cho phép
thay đổi màu chữ từ đen sang xanh khi di chuột qua văn bản đó.
Đầu tiên, chúng ta khởi tạo màn hình Pygame với kích thước 500 x 500 pixel và gán cho
biến `screen`. Sau đó, chúng ta đặt tên cho cửa sổ Pygame bằng
hàm `pygame.display.set_caption('flappy')`.
Tiếp theo, chúng ta khởi tạo màu sắc mà chúng ta muốn sử dụng bằng cách khai báo các
biến `GREEN` và `RED`. Biến `running` được sử dụng để liên tục chạy vòng lặp while
cho đến khi chúng ta đóng cửa sổ Pygame.

Đối tượng `clock` được sử dụng để đồng bộ hóa các hành động trong trị chơi với tốc
độ khung hình, đảm bảo rằng trị chơi chạy đúng tốc độ mà chúng ta mong
muốn. Trong trường hợp này, chúng ta đặt tốc độ khung hình là 60fps.
Sau đó, chúng ta sử dụng `pygame.font.SysFont()` để khởi tạo đối tượng font. Hàm này
trả về một đối tượng Font, nơi bạn có thể đặt tên font và kích thước của nó.


Chúng ta sử dụng hàm `font.render()` để tạo nội dung văn bản và đặt nó vào một
surface. Hàm này lấy ba tham số: nội dung văn bản, có hiển thị anti-aliasing hay
không và màu sắc của văn bản. Hàm này trả về một đối tượng Surface. Trong trường
hợp này, nội dung văn bản là "Random", chúng ta sẽ sử dụng màu đen để tạo màu sắc
cho văn bản. Sau đó, chúng ta lấy kích thước của văn bản trên surface sử dụng
hàm `text.get_rect()` và gán cho `text_box`.
Chúng ta sử dụng vịng lặp while để liên tục cập nhật màn hình Pygame và chạy vịng
lặp, trong đó vẽ văn bản với màu sử dụng `screen.blit()`. Chúng ta lấy tọa độ x, y của
chuột và so sánh với vị trí văn bản. Nếu vị trí chuột nằm trong vùng vị trí văn bản,
chúng ta thay đổi màu sắc của văn bản bằng cách sử dụng `font.render()` và sử
dụng màu xanh, ngược lại chúng ta sử dụng màu đen.
Cuối cùng, chúng ta sử dụng `pygame.display.flip()` để cập nhật màn hình Pygame và
đợi tín hiệu từ người chơi (khi họ bấm vào nút đóng cửa sổ). Khi người chơi đóng cửa sổ
Pygame, chúng ta sử dụng `pygame.quit()`để kết thúc trò chơi.


import pygame

pygame.init()
screen = pygame.display.set_mode((500, 500))
pygame.display.set_caption('flappy')
GREEN = (0,255,0)
RED = (255,0,0)

running = True
clock = pygame.time.Clock()
font = pygame.font.SysFont('san', 30)
text = font.render("Random", True, (0,0,0))
text_box = text.get_rect()
random_pos = (50,50)

while running:
clock.tick(60)
screen.fill(GREEN)
screen.blit(text, random_pos)

mouse_x, mouse_y = pygame.mouse.get_pos()

if 50 <= mouse_x <= (50 + text_box[2]) and 50 <= mouse_y <= (50 +
text_box[3]):
text = font.render("Random", True, (0,0,255))
pygame.draw.line(screen, (0,0,255), (random_pos[0], random_pos[1] +
text_box[3]), (random_pos[0] + text_box[2], random_pos[1] + text_box[3]))
else:


text = font.render("Random", True, (0,0,0))

for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False

pygame.display.flip()


pygame.quit()

Chương trình này sử dụng thư viện Pygame để tạo một màn hình đơn giản hiển thị
văn bản "Random" và cho phép thay đổi màu sắc của nó khi di chuột qua nó.
Đầu tiên, chúng ta khai báo các biến cần sử dụng: màn hình Pygame (`screen`), màu
sắc (`GREEN` và `RED`), biến đánh dấu trạng thái chạy của chương trình
(`running`), đối tượng đồng hồ Pygame (`clock`) và một đối tượng font Pygame
(`font`).
Tiếp theo, chúng ta sử dụng `pygame.font.SysFont` để tạo một đối tượng `Font`.
Hàm này lấy tên font và kích thước của chữ làm đầu vào và trả về một đối
tượng `Font`. Trong ví dụ này, ta dùng tên font là `'san'` và kích thước `30`.
Sau đó, chúng ta sử dụng `font.render` để tạo một đối tượng `Surface` chứa văn bản
"Random" và gán nó cho biến `text`. Hàm này lấy nội dung văn bản, đánh dấu kích
hoạt kỹ thuật chống răng cưa (anti-aliasing) và màu sắc của nó làm đầu vào.
Tiếp theo, chúng ta sử dụng `text.get_rect()` để lấy kích thước của văn bản
trong `text` và gán nó cho biến `text_box`. Biến `random_pos` là tọa độ hiển thị của
văn bản, trong trường hợp này là `(50, 50)`.
Trong vòng lặp chính của chương trình, chúng ta đặt tốc độ khung hình của chương
trình là `60fps` bằng hàm `clock.tick(60)`. Sau đó, chúng ta sử dụng `screen.fill` để


điền màn hình với màu sắc `GREEN`, và `screen.blit` để vẽ văn bản `text` lên màn
hình tại vị trí `random_pos`.
Sau đó, chúng ta sử dụng `pygame.mouse.get_pos` để lấy tọa độ chuột và kiểm tra
xem chuột có nằm trong vùng vị trí của văn bản khơng. Nếu vị trí chuột nằm trong
vùng vị trí của văn bản, `text` được gán một màu xanh (`(0, 0, 255)`) và đường kẻ
ngang màu xanh được vẽ dưới văn bản. Trong trường hợp ngược lại, `text` được
gán màu đen (`(0, 0, 0)`).
Cuối cùng, vòng lặp sự kiện cho phép chương trình nghe sự kiện `QUIT` (tức người
dùng bấm nút thoát). Nếu sự kiện `QUIT` được phát hiện, chúng ta đặt giá trị của

biến `running` về `False` để kết thúc vòng lặp.
Cuối cùng, chúng ta sử dụng `pygame.quit()` để kết thúc chương trình.



×