Chuyên mục
Học kỳ Mùa thu 2021 Khám phá Python Blog

Dự án “Câu chuyện ngẫu nhiên”

Tiếp nối dự án “Nhà thám hiểm và cánh cửa bí mật”, hôm nay STEAM for Vietnam sẽ hướng dẫn cho các bạn học sinh dự án “Câu chuyện ngẫu nhiên” của bạn Đinh Hoàng Long, học sinh lớp CS 101, Trại hè Lập trình 2021 nhé!

  1. Kiến thức lập trình

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.
  1. 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!

 Chúng ta có thể chơi thử trò chơi ở đây nhé: https://s4v.trinket.io/sites/random 

  1. Bắt tay vào lập trình thôi nào!

Thư viện random:

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.

— — —

📧Email: hello@steamforvietnam.org

🌐Website: www.steamforvietnam.org

🌐Fanpage: STEAM for Vietnam

📺YouTube:  http://bit.ly/S4V_YT

🌐Zalo: Zalo Official

Leave a Reply

Your email address will not be published. Required fields are marked *