Có thể bạn quan tâm: Cách Vẽ Người Tranh Đẹp: Hướng Dẫn Chi Tiết Từng Bước Để Tạo Nên Tác Phẩm Ấn Tượng
TÓM TẮT
Mở Đầu
MSWLogo, một trong những ngôn ngữ lập trình đồ họa dựa trên LOGO, đã trở thành công cụ hữu ích cho những người muốn khám phá thế giới lập trình đồ họa bằng cách điều khiển “rùa” (turtle) để vẽ các hình ảnh phức tạp. Trong số các đối tượng mà người dùng thường muốn vẽ, hình người là một trong những thử thách thú vị nhưng cũng không kém phần khó khăn. Bài viết dưới đây sẽ cung cấp cho bạn một hướng dẫn chi tiết, từng bước một, để vẽ một nhân vật người trong MSWLogo, từ việc chuẩn bị môi trường, xây dựng các hàm cơ bản, tới việc hoàn thiện các chi tiết như đầu, thân, tay, chân và thậm chí là biểu cảm khuôn mặt.
Lưu ý: Bài viết này hướng tới người mới bắt đầu và cả những người đã có kinh nghiệm cơ bản với MSWLogo. Bạn sẽ tìm thấy các đoạn mã mẫu, giải thích từng dòng lệnh và các mẹo tối ưu hóa để bạn có thể tùy chỉnh và sáng tạo thêm.
1. Giới Thiệu Về MSWLogo
1.1 MSWLogo là gì?
MSWLogo (Microsoft Windows Logo) là một phiên bản của ngôn ngữ LOGO được phát triển cho nền tảng Windows. Nó cung cấp một môi trường đồ họa trong đó người dùng có thể viết các lệnh để điều khiển một “rùa” (turtle) di chuyển trên màn hình, tạo ra các đường vẽ. Các lệnh cơ bản bao gồm:
FORWARD nhoặcFD n: Di chuyển rùa tới phía trước n bước.BACK nhoặcBK n: Di chuyển rùa lùi lại n bước.RIGHT nhoặcRT n: Quay rùa sang phải n độ.LEFT nhoặcLT n: Quay rùa sang trái n độ.PENUPhoặcPU: Nhấc bút lên, rùa di chuyển mà không vẽ.PENDOWNhoặcPD: Hạ bút xuống, rùa bắt đầu vẽ.SETHEADING nhoặcSETHEADING n: Đặt hướng hiện tại của rùa thành n độ.HOME: Đưa rùa về vị trí (0,0) và hướng lên trên.
1.2 Tại sao nên vẽ người trong MSWLogo?
- Rèn luyện tư duy thuật toán: Việc chia một hình người thành các khối cơ bản và viết mã để vẽ chúng giúp bạn học cách phân tích vấn đề.
- Phát triển kỹ năng lập trình hàm: Bạn sẽ tạo ra các hàm lặp lại (procedure) để tái sử dụng, giảm thiểu mã lặp.
- Sáng tạo và tùy biến: Khi đã nắm vững các khối cơ bản, bạn có thể tạo ra các nhân vật hoạt hình, biểu cảm, thậm chí là nhân vật 3D đơn giản.
2. Chuẩn Bị Môi Trường
2.1 Cài đặt MSWLogo
- Tải về: Truy cập trang chính thức của MSWLogo hoặc một nguồn tin cậy, tải file cài đặt
MSWLogo.exe. - Cài đặt: Chạy file và làm theo hướng dẫn. Đảm bảo chọn thư mục cài đặt dễ nhớ (ví dụ:
C:\Program Files\MSWLogo). - Mở chương trình: Khi khởi động, bạn sẽ thấy cửa sổ Command (nơi nhập lệnh) và Graphics (khu vực vẽ).
2.2 Cấu hình ban đầu

Có thể bạn quan tâm: Cách Vẽ Người Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
CLEARSCREEN
SETSCREENCOLOR 255 255 255 ; Đặt nền trắng
SETPENCOLOR 0 0 0 ; Đặt màu bút đen
SETPENSIZE 2 ; Độ dày bút
HOME
CLEARSCREENxóa mọi nét vẽ trước.SETSCREENCOLORnhận ba tham số RGB (0-255). 255 255 255 là màu trắng.SETPENCOLORcũng nhận ba tham số RGB. 0 0 0 là màu đen.SETPENSIZExác định độ dày của nét vẽ (đơn vị pixel).
3. Phân Tích Hình Người Thành Các Thành Phần Cơ Bản
Một hình người cơ bản gồm:
- Đầu – Hình tròn hoặc oval.
- Cổ – Đoạn thẳng ngắn.
- Thân – Hình chữ nhật hoặc dạng “trapezoid” để tạo cảm giác chiều sâu.
- Tay – Hai cánh tay, mỗi bên gồm vai, cánh tay trên, khuỷu, cánh tay dưới.
- Chân – Hai chân, mỗi bên gồm hông, đùi, gối, bắp chân.
- Mặt – Hai mắt, mũi, miệng (có thể thêm lông mày, tai).
3.1 Lý thuyết về tỉ lệ
Để hình người trông cân đối, chúng ta sử dụng tỉ lệ cơ bản:
- Đầu: 1 đơn vị (ví dụ: bán kính = 20)
- Cổ: 0.2 đơn vị
- Thân: 3 đơn vị chiều cao
- Tay: 2.5 đơn vị (từ vai tới tay)
- Chân: 3.5 đơn vị (từ hông tới mắt cá)
Bạn có thể thay đổi các giá trị này tùy theo phong cách (realistic, cartoon, stick figure). Trong ví dụ dưới, chúng ta sẽ dùng đơn vị = 20 pixel để dễ tính.
4. Xây Dựng Các Hàm Hỗ Trợ
4.1 Hàm di chuyển tới vị trí mà không vẽ
to MOVETO :X :Y PU SETXY :X :Y PD
end
:Xvà:Ylà các biến tham số.SETXYdi chuyển rùa tới (x, y) trên màn hình.
4.2 Hàm vẽ vòng tròn
MSWLogo có lệnh CIRCLE, nhưng để kiểm soát tốt hơn, chúng ta viết hàm riêng:
to CIRCLE :RADIUS REPEAT 360 FD :RADIUS 0.01745 RT 1 ; 0.01745 ≈ PI/180
end
4.3 Hàm vẽ đường thẳng với độ nghiêng tùy chỉnh
to LINE :LENGTH :ANGLE RT :ANGLE FD :LENGTH LT :ANGLE
end
4.4 Hàm vẽ hình chữ nhật (được dùng cho thân)
to RECTANGLE :WIDTH :HEIGHT REPEAT 2 FD :WIDTH RT 90 FD :HEIGHT RT 90 end
4.5 Hàm vẽ mắt (hình oval)
to EYE :RX :RY ; Vẽ nửa trên REPEAT 180 FD ((2 :PI :RX) / 360) COS :RY RT 1 ; Vẽ nửa dưới (đảo ngược) REPEAT 180 FD ((2 :PI :RX) / 360) COS :RY LT 1 end
Lưu ý: MSWLogo không có hàm COS và PI mặc định, nhưng bạn có thể dùng COS và PI nếu cài đặt bộ mở rộng Math. Đối với đơn giản, chúng ta sẽ vẽ mắt bằng vòng tròn.

Có thể bạn quan tâm: Cách Vẽ Người Trên Xying: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
to EYE :RADIUS CIRCLE :RADIUS
end
5. Vẽ Các Bộ Phận Cụ Thể
5.1 Vẽ Đầu
to HEAD :RADIUS ; Đặt vị trí đầu (giả sử trung tâm đầu tại (0, 0)) MOVETO 0 0 CIRCLE :RADIUS
end
Gọi hàm:
HEAD 20
5.2 Vẽ Cổ
to NECK :LENGTH ; Đặt vị trí ở dưới đầu MOVETO 0 -20 ; 20 là bán kính đầu PU SETHEADING 270 ; Hướng xuống PD FD :LENGTH
end
Gọi:
NECK 4
5.3 Vẽ Thân
to BODY :WIDTH :HEIGHT ; Đặt vị trí bắt đầu ở cuối cổ MOVETO -( :WIDTH / 2 ) -24 ; -24 = -20 (đầu) -4 (cổ) PU SETHEADING 0 PD RECTANGLE :WIDTH :HEIGHT
end
Gọi:
BODY 30 60
5.4 Vẽ Tay Trên (Vai tới khuỷu)
Chúng ta sẽ vẽ tay trái và phải bằng cùng một hàm, chỉ thay đổi góc quay.
to ARM :SIDE :LENGTH ; :SIDE = "LEFT" hoặc "RIGHT" ; Đặt vị trí ở đầu vai (giả sử vai nằm ở góc trên của thân) IF :SIDE = "LEFT" MOVETO -(15) -24 ; 15 = half of body width MOVETO 15 -24 PU SETHEADING 180 ; Hướng sang trái (cho tay trái) hoặc 0 cho tay phải IF :SIDE = "LEFT" SETHEADING 180 SETHEADING 0 PD ; Vẽ vai FD 5 ; Vẽ cánh tay trên RT 30 FD :LENGTH ; Vẽ khuỷu (điều chỉnh) BK :LENGTH LT 60 FD :LENGTH ; Về vị trí ban đầu BK :LENGTH PU HOME
end
Gọi:
ARM "LEFT" 30
ARM "RIGHT" 30
5.5 Vẽ Chân
to LEG :SIDE :LENGTH ; :SIDE = "LEFT" hoặc "RIGHT" ; Đặt vị trí ở hông (dưới thân) IF :SIDE = "LEFT" MOVETO -(15) -84 ; -84 = -24 (đầu+cổ) -60 (thân) MOVETO 15 -84 PU SETHEADING 270 ; Hướng xuống PD FD :LENGTH ; Vẽ gối BK :LENGTH RT 30 FD (:LENGTH / 2) BK (:LENGTH / 2) LT 60 FD (:LENGTH / 2) ; Quay lại PU HOME
end
Gọi:
LEG "LEFT" 35
LEG "RIGHT" 35
5.6 Vẽ Mặt (Mắt, Mũi, Miệng)
to FACE ; Vẽ mắt trái MOVETO -7 5 EYE 3 ; Vẽ mắt phải MOVETO 7 5 EYE 3 ; Vẽ mũi (điểm) MOVETO 0 2 PD FD 1 PU ; Vẽ miệng (có thể là cung) MOVETO -5 -2 PD SETHEADING -60 ARC 10 120 ; Định nghĩa hàm ARC sau PU
end
Hàm ARC (vẽ cung tròn):
to ARC :RADIUS :ANGLE ; Vẽ cung tròn với bán kính và góc REPEAT :ANGLE FD :RADIUS 0.01745 RT 1
end
Gọi:
FACE
6. Kết Hợp Tất Cả Các Bộ Phận
Ta tạo một hàm tổng hợp DRAWPERSON để vẽ toàn bộ người.
to DRAWPERSON CLEARSCREEN SETSCREENCOLOR 255 255 255 SETPENCOLOR 0 0 0 SETPENSIZE 2 HOME ; Đầu HEAD 20 ; Cổ NECK 4 ; Thân BODY 30 60 ; Tay ARM "LEFT" 30 ARM "RIGHT" 30 ; Chân LEG "LEFT" 35 LEG "RIGHT" 35 ; Khuôn mặt FACE
end
Sau khi nhập toàn bộ các hàm trên, chỉ cần chạy:
DRAWPERSON
Bạn sẽ thấy một người dạng cartoon đơn giản xuất hiện trên cửa sổ đồ họa.
7. Tùy Biến Và Nâng Cao

Có thể bạn quan tâm: Cách Vẽ Người Trên Xuống: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
7.1 Thay Đổi Tỉ Lệ
Bạn có thể truyền các tham số vào DRAWPERSON để thay đổi kích thước:
to DRAWPERSON :SCALE ; Sử dụng :SCALE để nhân các giá trị ; Ví dụ: HEAD 20 :SCALE CLEARSCREEN SETSCREENCOLOR 255 255 255 SETPENCOLOR 0 0 0 SETPENSIZE 2 HOME ; Đầu HEAD (20 :SCALE) ; Cổ NECK (4 :SCALE) ; Thân BODY (30 :SCALE) (60 :SCALE) ; Tay ARM "LEFT" (30 :SCALE) ARM "RIGHT" (30 :SCALE) ; Chân LEG "LEFT" (35 :SCALE) LEG "RIGHT" (35 :SCALE) ; Khuôn mặt FACE
end
Sau đó:
DRAWPERSON 1.5 ; 1.5 lần kích thước chuẩn
7.2 Thêm Màu Sắc
MSWLogo hỗ trợ màu bút, vì vậy bạn có thể tô màu các bộ phận:
to COLOREDHEAD :RADIUS :R :G :B SETPENCOLOR :R :G :B HEAD :RADIUS SETPENCOLOR 0 0 0 ; Trở lại màu đen cho các bộ phận khác
end
Gọi:
COLOREDHEAD 20 255 200 150 ; Màu da nhạt
7.3 Vẽ Động Tác (Animation)
Bạn có thể tạo hiệu ứng di chuyển bằng cách dùng vòng lặp REPEAT và thay đổi vị trí của toàn bộ người.
to WALK :STEPS REPEAT :STEPS CLEARSCREEN ; Dịch chuyển người sang phải 5 pixel mỗi bước SETXY (5 REPCOUNT) 0 DRAWPERSON 1 WAIT 50 ; Dừng 50 ms end
REPCOUNTlà biến tự động củaREPEATchứa số lần lặp hiện tại.WAIT(có thể không có trong một số phiên bản) dùng để tạo độ trễ.
7.4 Vẽ Đa Người
Bạn có thể lặp lại hàm DRAWPERSON với các vị trí khác nhau.
to MULTIPERSON :NUM REPEAT :NUM CLEARSCREEN ; Đặt vị trí ngẫu nhiên SETXY (RANDOM 200 - 100) (RANDOM 200 - 100) DRAWPERSON (RANDOM 2 + 0.5) ; Kích thước ngẫu nhiên từ 0.5 đến 2.5 end
8. Kiểm Tra Lỗi Thông Thường
| Lỗi | Nguyên nhân | Cách khắc phục |
|---|---|---|
| “Undefined variable” | Biến chưa được khai báo hoặc viết sai tên | Kiểm tra chính tả, dùng :VAR khi cần |
| “Command not found” | Lệnh không tồn tại (ví dụ: ARC chưa định nghĩa) |
Đảm bảo hàm được viết trước khi gọi |
| “Pen is down while moving” (vẽ không mong muốn) | Quên PU trước khi di chuyển không vẽ |
Thêm PU và PD ở đúng vị trí |
| Màu không thay đổi | SETPENCOLOR không nhận đúng giá trị RGB |
Kiểm tra giá trị 0‑255 và thứ tự tham số |
| Vẽ lệch | Không reset hướng (SETHEADING) sau khi quay |
Sử dụng HOME hoặc SETHEADING 0 sau mỗi phần |
9. Tổng Kết
Việc vẽ người trong MSWLogo không chỉ là một bài tập thú vị mà còn là cơ hội để bạn:
- Hiểu sâu hơn về các lệnh đồ họa cơ bản và cách chúng tương tác với hệ tọa độ.
- Rèn luyện kỹ năng lập trình hàm, tái sử dụng mã và giảm thiểu lỗi.
- Khám phá tính sáng tạo bằng cách tùy biến màu sắc, tỉ lệ, biểu cảm khuôn mặt và thậm chí là tạo hoạt ảnh.
Bằng cách làm theo các bước trong bài viết này, bạn đã có một bộ khung vững chắc để vẽ một nhân vật người cơ bản, đồng thời có thể mở rộng thành các nhân vật phức tạp hơn như:
- Nhân vật hoạt hình với nhiều khung hình.
- Nhân vật 3D đơn giản bằng cách vẽ các mặt phẳng chồng lên nhau.
- Các cảnh có nhiều người tương tác.
Hãy thử nghiệm, thay đổi và sáng tạo! MSWLogo là một môi trường mở, và mỗi dòng lệnh bạn viết đều là một nét vẽ trên bức tranh lập trình của riêng bạn.
Chúc bạn thành công và luôn đam mê khám phá thế giới lập trình đồ họa!
