Kết thúc Học kỳ Mùa thu 2021, Demo Day – Ngày hội lập trình viên nhí – đã bình chọn và trao giải cho những bài thi sáng tạo và nổi bật nhất là hai phiên bản ‘‘Bay cao Việt Nam’ của bạn Trần Quốc Bảo (10 tuổi) và bạn Trần Hoàng Long (10 tuổi).
Giải xuất sắc nhất: Trần Quốc Bảo
Với sức sáng tạo và sự nỗ lực, bạn Trần Quốc Bảo đến từ Đồng Nai đã vượt qua hàng trăm bài thi và giành được Giải Xuất sắc nhất trong Demo Day vừa qua. Dự án cuối khóa ‘Bay cao Việt Nam’ của Quốc Bảo có những biến tấu vô cùng khác biệt và thú vị. Dựa vào ý tưởng gốc là một trò chơi kể về hành trình của bạn Cò bay qua mọi miền đất nước, Quốc Bảo làm trò chơi của mình thêm phần thú vị với ý tưởng lập trình cho bạn Cò sẽ “béo” thêm mỗi khi có đồ ăn cùng với thanh điểm thể hiện độ “béo” của bạn Cò. Cùng khả năng thuyết trình tự tin và sự am hiểu về kiến thức lập trình, Quốc Bảo thật xứng đáng giành giải thưởng cao nhất trong ngày hội Demo Day này!
Giải được Yêu thích nhất: Trần Hoàng Long
Dự án của bạn Trần Hoàng Long đến từ An Giang chinh phục được thầy cô với ý tưởng vô cùng thú vị. Trong dự án ‘Bay cao Việt Nam’ của Hoàng Long, người chơi sẽ được hóa thân thành các nhân vật của STEAM for Vietnam (bạn Cò, bạn Robot và bạn Miu) trở thành các dũng sĩ diệt COVID – đại diện cho đội ngũ chống dịch tuyến đầu – mang vaccine đến cho mọi nhà. Với ý tưởng đột phá này, trong tổng số hơn 300dự án tham gia, bạn Hoàng Long đã tạo dấu ấn với 127 lượt bình chọn từ các bạn học sinh STEAM for Vietnam với nhiều bình luận tích cực.
Học kỳ Mùa Xuân 2022 có gì đáng chú ý?
Trải qua 4 học kỳ lập trình cùng với 3 khóa học CS 001, CS 101 và CS 201, STEAM for Vietnam đã mang lập trình đến với hơn 35,000 học sinh đang sinh sống và học tập tại 34 quốc gia. Bên cạnh đó, đội ngũ hơn 140 giảng viên, trợ giảng, và tình nguyện viên hỗ trợ cũng rất tự hào khi chứng kiến sự phát triển của học sinh qua những chia sẻ của các em trong dự án ‘Nhật ký Lập trình’.
Để tiếp nối thành công của các học kỳ trước và hoàn thành sứ mệnh mang nền giáo dục STEAM đẳng cấp quốc tế đến với trẻ em Việt Nam một cách bình đẳng, đội ngũ STEAM for Vietnam cho ra mắt khóa học chuyên sâu hoàn toàn mới CS 002 – Tư duy Máy tính và Lập trình Scratch Nâng caotrong Học kỳ Mùa xuân 2022 này.
CS 002 – Tư duy Máy tính và Lập trình Scratch Nâng cao là khóa học lập trình hướng đến học sinh từ 8 đến 16 tuổi chưa hoặc ít tiếp xúc với lập trình. Xuyên suốt khóa học, học sinh sẽ được đào tạo và rèn luyện khả năng tư duy máy tính và sử dụng ngôn ngữ lập trình Scratch theo hình thức “học mà chơi, chơi mà học” được giảng dạy bởi đội ngũ giảng viên là các kỹ sư phần mềm thực thụ với kinh nghiệm giảng dạy cho hàng nghìn học sinh Việt Nam.
Khóa học là hành trình thú vị của nhân vật Miu và các bạn khám phá thế giới STEAMderland. Trong mỗi buổi học, bạn sẽ được học về tư duy lập trình và các kiến thức cơ bản của lập trình thông qua việc làm dự án. Tư duy Máy tính sẽ được sử dụng để phân tích và đưa ra giải pháp thực hiện dự án. Sau đó học sinh sẽ thực hành lập trình theo giải pháp đã đề ra để giải quyết vấn đề. Kết thúc buổi học, học sinh sẽ có ngay cho mình một trò chơi hay một đoạn phim hoạt hình để có thể tự hào chia sẻ với bạn bè và người thân.
CS 002 – Tư duy Máy tính và Lập trình Scratch Nâng caolà phiên bản ‘nâng cao’ của khóa học CS 001 – Nhập môn Tư duy Máy tính và Lập trình Scratch. Cùng sử dụng ngôn ngữ lập trình Scratch, một sản phẩm của Viện Công nghệ Massachusetts (MIT), tuy nhiên, các câu hỏi và thử thách đặt ra trong khóa học CS 002 đòi hỏi học sinh cần có vốn kiến thức nhất định về Toán và Vật Lý để hoàn thành dự án và bài tập về nhà. Điều đó cũng có nghĩa là những kiến thức lập trình được giảng dạy trong khóa học CS 002 này sẽ vô cùng mới mẻ và các dự án lập trình cuối khóa của học sinh sẽ rất đáng được mong chờ!
Sau hơn 4 tháng dày công chuẩn bị, đội ngũ STEAM for Vietnam tin chắc rằng khóa học CS 002 – Tư duy Máy tính và Lập trình Scratch Nâng cao sẽ mang đến cho các em học sinh Việt Nam một trải nghiệm học lập trình vô cùng ý nghĩa và bổ ích. Tìm hiểu thêm về khóa học tại đây.
— — —
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.
Một số kiến thức chúng ta đã được học ở bài 3 của khoá CS 101 sẽ được áp dụng để hoàn thành trò chơi này:
Mảng trong Python.
Cách lấy phần tử ngẫu nhiên trong mảng bằng thư viện random.
Vòng lặp while trong Python.
Câu lệnh input() để nhập dữ liệu trong Python.
Câu lệnh print() để in thông báo ra màn hình.
Câu chuyện về dự án
Các bạn học sinh hãy thử tưởng tượng mình hóa thân vào vai một vị đạo diễn tài năng đang làm phim. Trong phim có hai nhân vật chính: một nam, một nữ. Ý tưởng về lời thoại và trang phục phù hợp cho hai nhân vật đã có trong kịch bản trên tay đạo diễn. Thế nhưng, có quá nhiều kịch bản hay nên các bạn chưa biết phải lựa ra kịch bản nào làm một bộ phim hoàn chỉnh. Các bạn học sinh đã có những ý tưởng khắc phục vấn đề này hay chưa? STEAM for Vietnam gợi ý thư viện random trong Python có thể giúp chúng ta kết hợp các lời thoại, trang phục khác nhau để tạo nên những câu chuyện đa dạng đấy!
Trong Python, thư viện random để thực hiện ngẫu nhiên một việc gì đó. Ở trò chơi Nhà thám hiểm và cánh cửa bí mật, chúng ta đã sử dụng một câu lệnh trong thư viện này để tạo số ngẫu nhiên cho nhân sư: random.randint(1,10).
Ngoài ra, thư viện random còn có một câu lệnh để lấy ngẫu nhiên một phần tử trong mảng: random.choice(). Chúng ta sẽ dùng câu lệnh này để tạo ra game.
Code:
a) Bước 1: Tạo danh sách các nhân vật, lời thoại, trang phục, và diễn biến câu chuyện:
Chúng ta sử dụng mảng để lưu trữ danh sách các nhân vật, lời thoại, trang phục, và diễn biến câu chuyện. Mảng sẽ được khai báo bằng [], các phần tử trong mảng được ngăn cách với nhau bởi dấu phẩy:
women = ["Một nữ hoàng", "Một bà già", "Bà Granny", "Một con chim", "Một nhà quý tộc", "Một bác sĩ", "Một diễn viên", "Trẩu"]
men = ["một sĩ quan", "một bá tước", 'một vị vua', 'một rô bốt sát thủ', 'một nghệ sĩ', 'một ông già', 'một nhà hoá học', 'William']
place = ['dưới biển', 'trên sao Hoả', 'ở siêu thị', 'trong một toà lâu đài', 'trong nhà bạn', 'trên mái nhà', 'phòng thí nghiệm']
women_wear = ['một cái váy', 'một cái túi giấy', 'một bộ đồ lặn', 'một cánh tiên', 'một bao ni lông']
men_wear = ['một bộ vest tím', 'một bộ đồ hoá trang con gấu', "một cái áo sơ mi"]
happens = ['sập nhà', 'cãi lộn', 'đánh nhau', 'một bàn chân lớn nghiền nát họ','núi lửa phun trào', 'động đất', 'Trái đất nổ tung']
women_say = ['Ngươi là ai?', 'Xin chào', 'đưa tiền đây', 'hello']
men_say = ["Ai đó", 'bíp bíp', 'ngươi là đứa nào', 'giết người', 'hello', 'Chả hiểu nói gì']
b) Bước 2: Tạo câu chuyện ngẫu nhiên:
Bộ phim của chúng ta sẽ bắt đầu khi nhân vật nam gặp nhân vật nữ tại một địa điểm nào đó. Hai người nói chuyện với nhau và sự việc tiếp theo xảy ra.
Tương tự như trò chơi “Nhà thám hiểm và cánh cửa bí mật”, chúng ta sử dụng câu lệnh input() để hỏi người dùng khi nào muốn dừng trò chơi và vòng lặp while để tiếp tục trò chơi. Chúng ta sử dụng câu lệnh print để in ra câu chuyện.
Để lấy ngẫu nhiên một phần tử trong mảng, chúng ta sử dụng câu lệnh: random.choice(). Trong dấu ngoặc sẽ là tên của mảng. Ví dụ, để lấy ngẫu nhiên một nhân vật nữ trong mảng women, chúng ta sử dụng câu lệnh: random.choice(women)
Code hoàn chỉnh sẽ là:
import random
tiep = "y"
while tiep == "y":
print(random.choice(women),"gặp", random.choice(men),random.choice(place))
print("Cô ấy mặc", random.choice(women_wear))
print("Anh ấy mặc", random.choice(men_wear))
print("Cô ấy nói", random.choice(women_say))
print("Anh ấy nói", random.choice(men_say))
print("Điều đó dẫn đến", random.choice(happens))
print()
tiep = input("Nhấn y để tiếp tục hoặc n để thoát: ")
print()
4. Tada!!!
Như vậy chúng ta đã hoàn thành trò chơi rồi đấy. Thật đơn giản đúng không nào.
Code hoàn chỉnh sẽ là:
# -*- coding: utf-8 -*-
women = ["Một nữ hoàng", "Một bà già", "Bà Granny", "Một con chim", "Một nhà quý tộc", "Một bác sĩ", "Một diễn viên"]
men = ["một sĩ quan", "một bá tước", 'một vị vua', 'một rô bốt sát thủ', 'một nghệ sĩ', 'một ông già', 'một nhà hoá học']
place = ['dưới biển', 'trên sao Hoả', 'ở siêu thị', 'trong một toà lâu đài', 'trong nhà bạn', 'trên mái nhà']
women_wear = ['một cái váy', 'một cái túi giấy', 'một bộ đồ lặn', 'một cánh tiên', 'một bao ni lông']
men_wear = ['một bộ vest tím', 'một bộ đồ hoá trang con gấu', "một cái áo sơ mi"]
happens = ['sập nhà', 'cãi lộn', 'đánh nhau', 'một bàn chân lớn nghiền nát họ','núi lửa phun trào', 'động đất', 'Trái đất nổ tung']
women_say = ['Ngươi là ai?', 'Xin chào', 'đưa tiền đây', 'hello']
men_say = ["Ai đó", 'bíp bíp', 'ngươi là đứa nào', 'giết người', 'hello', 'Chả hiểu nói gì']
import random
tiep = "y"
while tiep == "y":
print(random.choice(women),"gặp", random.choice(men),random.choice(place))
print("Cô ấy mặc", random.choice(women_wear))
print("Anh ấy mặc", random.choice(men_wear))
print("Cô ấy nói", random.choice(women_say))
print("Anh ấy nói", random.choice(men_say))
print("Điều đó dẫn đến", random.choice(happens))
print()
tiep = input("Nhấn y để tiếp tục hoặc n để thoát: ")
print()
Quá trình hoàn thành dự án “Câu chuyện ngẫu nhiên” thật thú vị đúng không? Các bạn học sinh hãy tự sáng tạo cho mình những cốt truyện phim khác nhau từ nhân vật, trang phục tới nơi chốn, sự việc để hoàn thành một bộ phim của riêng mình nhé! Sau khi hoàn thành game, các bạn có thể chia sẻ game của mình trên STEAMese Profile để khoe cùng mọi người.
— — —
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.
Sau khi học về câu điều kiện và vòng lặp, chúng ta đã có thể tạo được một game nhập vai đơn giản giống như bạn Hoàng Long. Một số kiến thức cần thiết để áp dụng trong game mà các bạn học sinh cần nhớ:
Sử dụng Thonny để tạo một game đơn giản bằng Python.
Câu lệnh input() để nhập dữ liệu trong Python.
Câu lệnh print() để in thông báo ra màn hình.
Câu điều kiện với if, elif, và else trong Python.
Kiểu dữ liệu booleantrong Python với so sánh ==.
Thư viện randomđể tạo số ngẫu nhiên.
Vòng lặp whiletrong Python.
Hành trình đầy thử thách của nhân vật trong game
Cốt truyện game là hành trình hết sức khó khăn của một nhà thám hiểm vô tình đi lạc vào một tòa lâu đài cổ kính. Xung quanh là không gian tối tăm, tĩnh mịch không một tiếng động, bạn ấy vừa hoang mang, vừa lo sợ khi trên tay chỉ cầm một ngọn đuốc le lói ánh sáng. Liệu điều gì đang chờ nhà thám hiểm trong tòa lâu đài này đây?
Bỗng nhiên, nhà thám hiểm tìm thấy 4 căn phòng bí ẩn. Mỗi căn phòng lại có một kết cục khác nhau cho số phận của nhà thám hiểm đó! Các bạn học sinh có thể trải nghiệm game bằng cách nhấn vào đường link sau trước khi bắt tay vào code nhé!: https://s4v.trinket.io/sites/adventure-game
Bắt tay viết code thôi nào!
Trước khi bắt đầu viết code, chúng ta sẽ xây dựng một sơ đồ để hình dung thuật toán của game. Điều này rất cần thiết để chúng ta có thể hình dung các bước giải quyết một bài toán và code dễ dàng hơn.
Hãy bắt đầu với vị trí đầu tiên của nhà thám hiểm, đối diện với 4 cánh cửa trong tòa lâu đài tối tăm.
Căn phòng thứ nhất: nhà thám hiểm ngỡ ngàng trước vô số vàng bạc, kim cương lấp lánh. Nếu may mắn chọn đúng căn phòng này, nhà thám hiểm sẽ có thể thoát khỏi tòa lâu đài và trở nên giàu có với rương kho báu khổng lồ.
Căn phòng thứ hai: một con yêu tinh xấu xí, đáng sợ đang ẩn náu trong căn phòng để chờ nhà thám hiểm đi đến. Nó xông ra với một cây chùy trên tay và khiến nhà thám hiểm phải bỏ mạng ngay tại căn phòng này.
Căn phòng thứ ba: một con rồng khổng lồ đang nằm ngủ ngay góc phòng. Nếu nhà thám hiểm hoảng hốt và hét lên, con rồng sẽ tỉnh giấc và phun lửa thiêu rụi nhà thám hiểm ngay lập tức. Còn khi nhà thám hiểm đứng im không nhúc nhích, con rồng vô tình thức dậy thì sẽ trông thấy và nuốt trọn nhà thám hiểm. Vậy phải làm thế nào đây? Cách an toàn nhất là nhẹ nhàng đi ra khỏi phòng. Thế nhưng không hiểu sao cánh cửa lại bị khóa. Khi đó, tay nắm cửa đột nhiên phát ra tiếng động, bẫy được kích hoạt và khiến cho nhà thám hiểm bị rơi ra khỏi tòa lâu đài. Nhà thám hiểm đã trở về thành phố mà không có kho báu.
Căn phòng thứ tư: Bước vào căn phòng cuối cùng, nhà thám hiểm sẽ gặp con nhân sư với một câu đố hóc búa. Nhân sư rất thông minh và nó bắt nhà thám hiểm đoán đúng con số nó đang nghĩ trong đầu. Con số từ 1 đến 10. Nếu đoán đúng, nhân sư sẽ cho nhà thám hiểm đi khỏi lâu đài. Nếu đoán sai, nhà thám hiểm sẽ phải ở lại làm nô lệ cho nhân sư.
Để hoàn thiện trò chơi, các bạn học sinh cần hỏi thêm người chơi có muốn tiếp tục chơi hay dừng lại sau khi đã mở cửa 1 căn phòng không nhé!
Tiến hành code
Bước 1: Viết giới thiệu game
Chúng ta sẽ sử dụng chương trình Thonny để thực hiện game này. Trước tiên, chúng ta cần sử dụng câu lệnh print() để in ra màn hình vị trí bắt đầu của nhà thám hiểm. Để cho game sinh động, chúng ta sẽ thêm hình vẽ lâu đài bằng các ký tự ASCII (Nguồn: https://www.asciiart.eu/buildings-and-places/castles).
LAUDAI = """
|>>> |>>>
| |>>> |>>> |
* | | *
/ \ * * / \
/___\ _/ \ / \_ /___\
[ ] |/ \_________/ \| [ ]
[ I ] / \ / \ [ I ]
[ ]_ _ _ / \ / \ _ _ _[ ]
[ ] U U | {#########} {#########} | U U [ ]
[ ]====/ \=======/ \=======/ \====[ ]
[ ] | | I |_ _ _ _| I | | [ ]
[___] |_ _ _ _ _ _| | U U U | |_ _ _ _ _ _| [___]
\===/ I | U U U U U | |=======| | U U U U U | I \===/
\=/ |===========| I | + W + | I |===========| \=/
| I | | |_______| | | I |
| | | ||||||||| | | |
| | | I ||vvvvv|| I | | |
_-_-|______|-----------|_____|| ||_____|-----------|______|-_-_
/________\ /______|| ||______\ /________\
|__________|-------|________\_____/________|-------|__________|
"""
print("Bạn đang ở trong một căn phòng tối tăm nằm trong một lâu đài bí hiểm.")
print(LAUDAI)
print("Có 4 cánh cửa trước mặt bạn, bạn hãy chọn một cánh cửa để thám hiểm.")
Để yêu cầu người chơi chọn cửa để khám phá, chúng ta sẽ sử dụng câu lệnh input():
a = input("Bạn chọn cánh cửa sổ: ")
Bước 2: Viết phần lựa chọn phòng
Câu lệnhinput()chuyển dữ liệu người dùng nhập thành chuỗi nên a sẽ có kiểu dữ liệu chuỗi (string). Các bạn sẽ kiểm tra giá trị người chơi nhập vào từ bàn phím để xem người chơi chọn cửa số mấy để thám hiểm. Vì a có kiểu dữ liệu chuỗi nên chúng ta sẽ kiểm tra với “1”, “2”, “3”, “4”. Chúng ta lưu ý phải có dấu "". Để kiểm tra xem hai chuỗi có giống nhau không chúng ta có thể sử dụng ==. Khi kiểm tra, kết quả trả về sẽ có kiểu dữ liệu boolean True hoặc False. Vì có bốn phòng nên chúng ta sẽ sử dụng câu lệnh điều kiện rẽ nhánh để kiểm tra xem người chơi chọn thám hiểm phòng nào:
if a == "1":
print("Bạn đang ở phòng 1.")
elif a == "2":
print("Bạn đang ở phòng 2.")
elif a == "3":
print("Bạn đang ở phòng 3.")
elif a == "4":
print("Bạn đang ở phòng 4.")
else:
print("Xin lỗi, bạn chỉ có thể nhập 1,2,3 hoặc 4")
Câu lệnh điều kiện rẽ nhánh sẽ kiểm tra điều kiện ở câu lệnh if trước, sau đó sẽ đến điều kiện ở các câu lệnh elif. Nếu tất cả điều kiện đó đều không thoả mãn thì sẽ thực hiện dòng lệnh ở else. Dòng lệnh ởelsegiúp nhắc nhở người chơi phải nhập các số 1, 2, 3, hoặc 4. Chúng ta lưu ý đi sauifvà elif là điều kiện nhưng ở elsethì không. Có một cách rất hay để chúng ta có thể kiểm tra code mình viết (debug) đó là sử dụng câu lệnhprint(). Khi chạy code, chúng ta hãy nhập vào bất kì phòng nào và xem chương trình in ra màn hình đúng phòng không.
Sau khi kiểm tra phần chọn phòng, chúng ta sẽ thêm vào một câu lệnh để hỏi người chơi muốn chơi tiếp hay dừng lại:
exit_choice = input("Ấn Enter để chơi lại, hoặc gõ thoát để đóng trò chơi.")
Sau khi người dùng nhập câu trả lời, chúng ta phải kiểm tra và nếu người chơi muốn chơi tiếp, chúng ta sẽ thực hiện lại toàn bộ các câu lệnh ở trên. Các bạn hãy sử dụng kiến thức vòng lặp while. Trong khi biến exit_choice không phải là “thoát” thì chúng ta sẽ quay lại thực hiện toàn bộ các câu lệnh. Để kiểm tra điều kiện không phải, chúng ta sử dụng !=:
while exit_choice != "thoát":
Tuy nhiên, chương trình chúng ta vẫn còn một lỗi nho nhỏ đấy. Đó chính là khi lần đầu tiên chơi, biến exit_choice chưa được gán bất kỳ giá trị nào. Chúng ta có thể gán biến đó với bất kỳ giá trị nào, ngoại trừ “thoát” để có thể bắt đầu trò chơi:
exit_choice = "c"
Chương trình hoàn chỉnh sẽ là:
exit_choice = "c"
while exit_choice != "thoát":
if a == "1":
print("Bạn đang ở phòng 1.")
elif a == "2":
print("Bạn đang ở phòng 2.")
elif a == "3":
print("Bạn đang ở phòng 3.")
elif a == "4":
print("Bạn đang ở phòng 4.")
else:
print("Xin lỗi, bạn chỉ có thể nhập 1,2,3 hoặc 4")
exit_choice = input("Ấn Enter để chơi lại, hoặc gõ thoát để đóng trò chơi.")
Bước 3: Viết phần lựa chọn từng phòng:
Phòng 1:
Sau khi đã chia thành từng trường hợp, chúng ta sẽ đi theo sơ đồ đã vẽ ở sơ đồ 1. Với phòng 1, chúng ta sẽ in ra màn hình chúc mừng người chơi đã chọn đúng phòng có kho báu và hỏi người chơi muốn chơi tiếp hay dừng lại:
if a == "1":
print("Bạn đã tìm thấy một căn phòng chứa kho báu, phát tài rồi!")
print("Bạn đã thắng cuộc, trò chơi kết thúc.")
print("(Khởi động lại để tiếp tục khám phá.)")
Phòng 2:
Với phòng 2 có con yêu tinh, chúng ta sẽ in ra màn hình chia buồn với người chơi và hỏi người chơi muốn chơi tiếp hay dừng lại:
elif a == "2":
print("Cửa bật mở, một con yêu tinh xông ra và phang chuỳ vào đầu bạn.")
print("Bạn đã chết, trò chơi kết thúc.")
print("(Khởi động lại để tiếp tục khám phá.)")
Phòng 3:
Với phòng 3 có con rồng, chúng ta sẽ yêu cầu người chơi chọn làm gì sau khi thấy con rồng. Có ba lựa chọn tương ứng với ba số 1, 2, 3:
elif a == "3":
print("Bạn bước vào căn phòng và thấy một con rồng đang ngủ say, bạn sẽ: ")
print("1: Hét to lên để hăm doạ con rồng.")
print("2: Từ từ đi ra khỏi phòng.")
print("3: Chả làm gì cả.")
b = input("Nhập lựa chọn của bạn vào đây: ")
Chúng ta sử dụng biến mới b để lưu câu trả lời của người chơi, tương tự như khi chúng ta hỏi người chơi chọn phòng nào. Và chúng ta cũng sẽ sử dụng câu lệnh điều kiện rẽ nhánh để chia thành các trường hợp lựa chọn:
if b == "1":
print("Con rồng giật mình và phun lửa vào bạn.")
print("Bạn đã bị thiêu rụi, trò chơi kết thúc.")
elif b == "2":
print("Bạn định ra khỏi phòng thì nhận ra cánh cửa đã khóa, bạn chạm vào tay nắm cửa cũ kỹ và nó phát ra tiếng động!")
print("Bẫy được kích hoạt, bạn rơi ra khỏi lâu đài và bạn thấy thành phố trước mắt mình.")
print("Bạn đã thoát, trò chơi kết thúc.")
print("(Khởi động lại để tiếp tục khám phá.)")
elif b == "3":
print("Bạn đứng đó hồi lâu và con rồng thức dậy, vừa nhìn thấy bạn, con rồng lập tức nuốt chửng bạn ngay!")
print("Bạn đã trở thành bữa ăn ngon cho rồng, bạn đã chết, trò chơi kết thúc.")
print("(Khởi động lại để tiếp tục khám phá.)")
else:
print("Xin lỗi, bạn chỉ có thể nhập 1,2,3.")
Phòng 4:
Ở căn phòng cuối cùng có một con nhân sư yêu cầu nhà thám hiểm phải đoán được số nó đang nghĩ. Chúng ta cũng bắt đầu nhánh ở phòng 4 bằng việc hỏi người chơi đoán số nhân sư đang nghĩ:
elif a == "4":
print("Căn phòng bạn bước vào có một con nhân sư.")
print("Nhân sư bắt bạn phải đoán được số mà nó đang nghĩ đến trong các số nguyên từ 1 đến 10.")
print("Nếu bạn đoán đúng, nhân sư sẽ cho bạn đi.")
print("Ngược lại bạn phải làm nô lệ cho nó!")
number = int(input("Bạn chọn số nào: "))
Chúng ta cùng tìm hiểu cách để nhân sư nghĩ ra một số ngẫu nhiên. Để có thể tạo một số nguyên ngẫu nhiên từ 1 đến 10, chúng ta sẽ sử dụng thư viện (library) random trong Python. Thư viện random sẽ gồm rất nhiều câu lệnh nhỏ với những chức năng khác nhau. Ở đây chúng ta sẽ sử dụng random.randint() với hai input là 1 và 10. Tuy nhiên trước hết, chúng ta phải gọi thư viện đó trong Python bằng câu lệnh import.
Chúng ta sử dụng câu lệnh int()để chuyển kiểu dữ liệu từ chuỗi (string) sang số nguyên (int). Mục đích để kiểm tra số người dùng nhập và số nguyên tạo ngẫu nhiên bằng random.randint():
import random
if number == random.randint(1,10):
print("Nhân sư gầm lên thất vọng. Bạn đã đoán đúng.")
print("Nhân sư phải thả bạn đi.")
print("Bạn đã chiến thắng. Trò chơi kết thúc.")
print("(Khởi động lại để tiếp tục khám phá.)")
else:
print("Nhân sư cười khoái trá. Bạn đã đoán sai!")
print("Bạn đã trở thành nô lệ của nhân sư!")
print("Bạn đã thua, trò chơi kết thúc.")
print("(Khởi động lại để tiếp tục khám phá.)")
Chương trình hoàn chỉnh của game
Chúng ta sẽ thêm câu lệnh # -*- coding: utf-8 -*- để hiển thị tiếng Việt. Đồng thời, các bạn học sinh lưu ý chương trình hoàn chỉnh phải lùi lề. Chương trình Python hoàn chỉnh của game sẽ là:
# -*- coding: utf-8 -*-
import random
LAUDAI = """
|>>> |>>>
| |>>> |>>> |
* | | *
/ \ * * / \
/___\ _/ \ / \_ /___\
[ ] |/ \_________/ \| [ ]
[ I ] / \ / \ [ I ]
[ ]_ _ _ / \ / \ _ _ _[ ]
[ ] U U | {#########} {#########} | U U [ ]
[ ]====/ \=======/ \=======/ \====[ ]
[ ] | | I |_ _ _ _| I | | [ ]
[___] |_ _ _ _ _ _| | U U U | |_ _ _ _ _ _| [___]
\===/ I | U U U U U | |=======| | U U U U U | I \===/
\=/ |===========| I | + W + | I |===========| \=/
| I | | |_______| | | I |
| | | ||||||||| | | |
| | | I ||vvvvv|| I | | |
_-_-|______|-----------|_____|| ||_____|-----------|______|-_-_
/________\ /______|| ||______\ /________\
|__________|-------|________\_____/________|-------|__________|
"""
exit_choice = "c"
while exit_choice != "thoát":
print("Bạn đang ở trong một căn phòng tối tăm nằm trong một lâu đài bí hiểm.")
print(LAUDAI)
print("Có 4 cánh cửa trước mặt bạn, bạn hãy chọn một cánh cửa để thám hiểm.")
a = input("Bạn chọn cánh cửa số: ")
if a == "1":
print("Bạn đã tìm thấy một căn phòng chứa kho báu, phát tài rồi!")
print("Bạn đã thắng cuộc, trò chơi kết thúc.")
print("(Khởi động lại để tiếp tục khám phá.)")
elif a == "2":
print("Cửa bật mở, một con yêu tinh xông ra và phang chuỳ vào đầu bạn.")
print("Bạn đã chết, trò chơi kết thúc.")
print("(Khởi động lại để tiếp tục khám phá.)")
elif a == "3":
print("Bạn bước vào căn phòng và thấy một con rồng đang ngủ say, bạn sẽ: ")
print("1 : Hét to lên để hăm doạ con rồng.")
print("2 : Từ từ ra khỏi phòng.")
print("3 : Chả làm gì cả.")
b = input("Nhập lựa chọn của bạn vào đây: ")
if b == "1":
print("Con rồng giật mình và phun lửa vào bạn.")
print("Bạn đã bị thiêu rụi, trò chơi kết thúc.")
elif b == "2":
print("Bạn định ra khỏi phòng thì nhận ra cánh cửa đã khóa, bạn chạm vào tay nắm cửa cũ kỹ và nó phát ra tiếng động!")
print("Bẫy được kích hoạt, bạn rơi ra khỏi lâu đài và bạn thấy thành phố trước mắt mình.")
print("Bạn đã thoát, trò chơi kết thúc.")
print("(Khởi động lại để tiếp tục khám phá.)")
elif b == "3":
print("Bạn đứng đó hồi lâu và con rồng thức dậy, vừa nhìn thấy bạn, con rồng lập tức nuốt chửng bạn ngay!")
print("Bạn đã trở thành bữa ăn ngon cho rồng, bạn đã chết, trò chơi kết thúc.")
print("(Khởi động lại để tiếp tục khám phá.)")
else:
print("Xin lỗi, bạn chỉ có thể nhập 1,2,3.")
elif a == "4":
print("Căn phòng bạn bước vào có một con nhân sư.")
print("Nhân sư bắt bạn phải đoán được số mà nó đang nghĩ đến trong các số nguyên từ 1 đến 10.")
print("Nếu bạn đoán đúng, nhân sư sẽ cho bạn đi.")
print("Ngược lại bạn phải làm nô lệ cho nó!")
number = int(input("Bạn chọn số nào: "))
if number == random.randint(1,10):
print("Nhân sư gầm lên thất vọng. Bạn đã đoán đúng.")
print("Nhân sư phải thả bạn đi.")
print("Bạn đã chiến thắng. Trò chơi kết thúc.")
print("(Khởi động lại để tiếp tục khám phá.)")
else:
print("Nhân sư cười khoái trá. Bạn đã đoán sai!")
print("Bạn đã trở thành nô lệ của nhân sư!")
print("Bạn đã thua, trò chơi kết thúc.")
print("(Khởi động lại để tiếp tục khám phá.)")
else:
print("Xin lỗi, bạn chỉ có thể nhập 1,2,3 hoặc 4")
exit_choice = input("Ấn Enter để chơi lại, hoặc gõ thoát để đóng trò chơi.")
STEAM for Vietnam khuyến khích các bạn học sinh hãy thử sáng tạo cốt truyện, tạo nhiều phòng và thử thách cho nhà thám hiểm hơn. Bên cạnh đó, các bạn cũng có thể cải tiến thêm cho game như thế này: khi người chơi nhập sai yêu cầu (Ví dụ: không phải các số từ 1 đến 4 cho số phòng), chương trình sẽ cho người chơi nhập lại đến khi đúng.
Chỉ với những kiến thức từ hai bài đầu tiên của khoá CS101, bạn Hoàng Long đã tạo ra được một game đơn giản nhưng cũng không kém phần thú vị và gay cấn. STEAM for Vietnam tin rằng bạn học sinh nào cũng có thể sáng tạo dự án cá nhân đầy ấn tượng như vậy. Các bạn hãy thử bắt tay vào thực hiện dự án nhé! Sau khi hoàn thành game, các bạn có thể chia sẻ game của mình trên STEAMese Profile để khoe cùng mọi người.
— — —
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.
STEAM for Vietnam đã đem đến cho các bạn nhỏ một hành trình thú vị để nắm được các thao tác lập trình căn bản, cũng như nâng cao tư duy máy tính. Theo mình, khóa học CS101 được thiết kế với nội dung và tài liệu rất phù hợp với các em nhỏ. Đặc biệt, bé nhà mình rất thích phần làm đồ họa nhảy theo nhạc. Trong quá trình học, các thầy cô luôn tận tình hướng dẫn dễ hiểu cho các bé. Nhờ vậy mà học sinh không chỉ học được cách “dịch từ “ngôn ngữ người” sang “ngôn ngữ máy” mà còn học được cách tư duy và làm ra sản phẩm cụ thể. Dự án cuối khóa chắc hẳn là cột mốc đặc biệt đối với các em học sinh. Bé nhà mình cũng học hỏi được nhiều khi phải phải chuẩn bị video giới thiệu về dự án cuối khóa, từ nội dung đến cách nói, cách trình bày. Con đóng cửa phòng viết, sửa, tìm hiểu… rất hăng say. Con đã học được rất nhiều sau khi hoàn thành dự án, đồng thời tạo ra một sản phẩm cụ thể mà con chưa bao giờ có.
(Mẹ của bé Quỳnh Mai – lập trình viên nhí đạt giải Demo Day CS 001 đã chia sẻ cho STEAM for Vietnam về những cảm xúc khi cho con theo học CS 001 & CS 101)
“Chị muốn con học tư duy trước khi học kiến thức”
Lúc đầu thì mình cũng chỉ muốn cho cháu làm quen với lập trình thôi vì đây cũng là một kỹ năng quan trọng như ngoại ngữ vậy. Chị cảm thấy cháu tự tin hơn hẳn vì lập trình là một kỹ năng khá mới mẻ với các bạn nhỏ. Các bé được học cách tư duy, làm việc khoa học qua hình thức sắp xếp đoạn code và “Tách-Tìm-Nhìn-Viết”. Đồng thời, chị thấy rằng việc học lập trình sẽ giúp cho con tăng khả năng sáng tạo và giải quyết vấn đề. Cho nên, chị khuyến khích ba mẹ hãy cho con cái học lập trình từ sớm. Không hẳn học lập trình sẽ thành lập trình viên, dù rằng gia đình mình cũng rất mong muốn điều đó. May mắn là hiện tại cháu cũng rất yêu thích lập trình và muốn theo đuổi ngành này trong tương lai. Thế nhưng, chị tin rằng việc học lập trình sẽ trao cho các bé nhiều giá trị hữu ích hơn thế!
(Chia sẻ của phụ huynh bé Minh Đức – đạt giải Demo Day CS 101 khóa Spring Coding Bootcamp 2021)
“Con chưa bao giờ quen được nhiều bạn mới đến vậy”
Mỗi bài học của các con mình đều theo dõi, mình thấy rằng học với STEAM các bé còn học được nhiều điều ngoài kiến thức. Chẳng hạn các con hay chấm bài cho bạn, rất chăm chỉ và cẩn thận. Đồng thời khi viết code cũng gọn gàng, ngay ngắn hơn trước nhiều. Nhờ học STEAM for Vietnam mà các con có thêm nhiều bạn mới ở khắp nơi. Hai anh em thường xuyên trao đổi với nhau và với các bạn trên STEAMese Profile. Cứ làm xong bài tập về nhà là lại đăng lên cho các bạn xem liền, háo hức lắm. Bình thường mỗi buổi học các con đều vào ngay LMS sớm để chat với các bạn nữa!
(Anh Tuấn – phụ huynh của Trung Hiếu – có hai con đều đạt giải Weekly Challenge vui vẻ chia sẻ cảm nhận về khóa học)
STEAM for Vietnam rất vui vì phụ huynh và các em nhỏ đã cùng đồng hành trên hành trình thực hiện sứ mệnh lan tỏa công nghệ đến với hơn 20 triệu trẻ em Việt Nam trong 5 năm tới. Những phản hồi tích cực từ cha mẹ là động lực giúp cho STEAM for Vietnam tiếp tục thực hiện sứ mệnh ý nghĩa này.
— — —
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.
Quý vị phụ huynh nào chưa đăng ký khoá học cho con, vui lòng tham khảo ở phần I của bài viết.
Quý vị phụ huynh nào đã đăng ký khoá học cho con nhưng vẫn chưa nhận thư mời nhập học, vui lòng tham khảo từ phần II của bài viết.
Quý vị phụ huynh nào đã nhận thư mời nhập học, vui lòng tham khảo từ phần III của bài viết.
Quý vị phụ huynh nào chưa biết dùng Live App, vui lòng tham khảo từ phần IV của bài viết.
Lưu ý: Đối với lớp CS 201: Hiện tại STEAM for Vietnam chưa mở lớp mới, chỉ mở đăng ký danh sách chờ; lớp hiện tại sẽ tiếp tục khi tình hình dịch ổn định và sẽ thông báo sau.
I. DÀNH CHO PHỤ HUYNH CHƯA ĐĂNG KÝ
STEAM for Vietnam mở đơn đăng ký Học kỳ mùa Thu từ ngày 01/09/2021 đến 23:59 ngày 15/09/2021.
Trong quá trình tạo tài khoản STEAMese Profile, phụ huynh sẽ nhận được các email sau:
Tài khoản STEAMese Profile là tài khoản quan trọng mà các học sinh sẽ dùng để vào khoá học sau khi được nhận học. STEAM for Vietnam khuyến khích phụ huynh nên sử dụng email của học sinh (nếu đã có) hoặc tạo một email cho học sinh (nếu chưa có) để đăng kí STEAMese Profile. Email phụ huynh sẽ là email dùng để kiểm duyệt và xác thực thông tin cho học sinh. Sau khi đăng ký, vui lòng lưu tài khoản ở trong điện thoại, sổ tay, để sử dụng khi cần thiết.
Đối với các học sinh dưới 13 tuổi, BTC sẽ gửi email yêu cầu phụ huynh duyệt thông tin của con trên STEAMese Profile. Phụ huynh kiểm tra xong thì hãy quay lại hoàn thành các bước đăng ký còn lại (điền đơn đăng ký).
Tạo xong tài khoản STEAMese Profile không có nghĩa hoàn thành đăng ký khoá học.
Sau khi đăng ký khoá học, phụ huynh sẽ nhận được email sau:
II. PHẦN DÀNH CHO PHỤ HUYNH ĐÃ ĐĂNG KÝ VÀ CHƯA NHẬN THƯ MỜI NHẬP HỌC
Phụ huynh cần xem kỹ mình đã thực hiện đủ 4 bước ở phần I chưa.
1. Đối với phụ huynh chỉ mới hoàn thành STEAMese Profile
Quý phụ huynh hãy xem lại phần I để hoàn thành đơn đăng ký.
2. Đối với phụ huynh đã hoàn thành đơn đăng ký và nhận email Xác nhận đăng ký
Sau 23:59 tối thứ Tư ngày 15/09/2021 (giờ Việt Nam): BTC sẽ gửi thư mời nhập học và các hướng dẫn cần thiết trong thời gian sắp đến. Quý phụ huynh hãy thường xuyên kiểm tra email để không bỏ lỡ các thông tin từ BTC.
Lưu ý:
Nếu phụ huynh có từ 2 con đăng ký học trở lên, xin vui lòng kiểm tra thư mời nhập học được gửi tới địa chỉ email đăng ký STEAMese Profile của mỗi con.
Tài khoản STEAMese Profile là tài khoản sử dụng email học sinh hoặc email phụ huynh tạo ra cho học sinh lúc đăng ký học, không phải sử dụng email phụ huynh nhận thư.
III. DÀNH CHO PHỤ HUYNH ĐÃ ĐĂNG KÝ VÀ NHẬN ĐƯỢC THƯ MỜI NHẬP HỌC
Khi đăng nhập vào LMS lần đầu tiên, vui lòng sử dụng địa chỉ email và mật khẩu của tài khoản STEAMese Profile. Sau đó, hệ thống sẽ gửi 1 email kích hoạt tới địa chỉ email trên (email được gửi về từ learn@steamforvietnam.org). Nếu quý phụ huynh và học sinh đã nhận được email này và hoàn thành từ phần I, có thể bỏ qua. Học sinh kiểm tra hòm thư (đặc biệt là hòm thư Spam/Promotions) để nhận email và kích hoạt tài khoản.
Bước 1: Xác nhận tham gia khoá học
Sau khi xác nhận tham gia, các học sinh sẽ được BTC ghi danh vào khoá học trong vòng 24 – 48 tiếng. Nếu quá 48 tiếng chưa thấy ghi danh thì liên hệ BTC qua email: hello@steamforvietnam.org
Bước 2: Học khoá Get Started Course
Sau khi được ghi danh, đăng nhập vào hệ thống LMS với email và mật khẩu của STEAMese Profile. Mở mục “Các khoá học của tôi“. Truy cập Get Started Course. Học sinh cần hoàn thành khóa học Get Started Course để có thể tiếp tục tham gia các buổi học tiếp theo.
Bước 3: Làm bài kiểm tra đầu vào của khóa học (nếu có)
Sau khi hoàn thành Get Start Course, học sinh hãy trở về trang chủ khoá học trên LMS, truy cập khóa học đã đăng ký và hoàn thành bài kiểm tra đầu vào (nếu có) để bắt đầu chính thức tham gia vào khoá học. Thông tin chi tiết vui lòng đọc kỹ trong email hướng dẫn từ BTC.
Bước 5: Xem tài liệu chuẩn bị Bài 1
Học sinh xem và chuẩn bị nội dung bài học số 1 trước khai giảng.
IV. HƯỚNG DẪN VÀO LIVE APP
Bước 1: Truy cập vào hệ thống Live App
Bước 2: Đăng nhập bằng tài khoản STEAMese Profile/ LMS đã tạo trước đó.
Bước 3: Nhấn nút “Tham dự” vào khoá học đã đăng kí
Bước 4: Giao lưu với các bạn, chơi game do BTC đưa lên và bắt đầu giờ học cùng các thầy cô.
Các lỗi hay gặp phải khi truy cập Live App
1. Khoá học của mình hiển thị “Chưa đăng ký”
Phụ huynh và học sinh hãy kiểm tra xem mình đã hoàn thành các bước đầy đủ ở phần I->III chưa
2. Youtube bài giảng của mình chất lượng video hiển thị thấp
Phụ huynh và học sinh hãy chọn vào nút Cài đặt (hình bánh răng) ở góc phải dưới thanh video, nhấn chất lượng và chọn 720p.
3. Sao mình không thấy quiz hiển thị
Để quiz hiển thị trên Live App, trước tiên học sinh cần phải đăng nhập trên LMS. Sau khi đăng nhập thành công, học sinh quay lại trang Live App và tải lại trang, quiz sẽ hiển thị.
Cảm ơn quý phụ huynh và các em học sinh đã tin tưởng và đồng hành cùng các khoá học của STEAM for Vietnam. Mọi câu hỏi cho chúng tôi, vui lòng gửi về hòm thư hello@steamforvietnam.org
— — —
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.