Python cho người Việt

Python cho người Việt

Entries tagged “game”

Cuộc thi Đời

written by vithon, on Sep 15, 2011 1:36:00 PM.

Nhóm PCNV hân hạnh tổ chức một cuộc thi nhỏ với giải thưởng lớn!

Game of Life, tạm dịch Trò chơi Đời, là một mô phỏng trạng thái các điểm trên một ma trận MxN đơn giản. Các điểm trên ma trận có trạng thái hoặc là sống, hoặc là chết. Trạng thái của một ma trận được gọi là một thế hệ. Các điểm trên ma trận ở thế hệ G sẽ tuân theo các luật sau để xác định trạng thái của chúng ở thế hệ G + 1:

  1. Nếu số lượng các điểm sống chung quanh điểm hiện tại là 3, thì điểm hiện tại sẽ sống.
  2. Nếu số lượng các điểm sống chung quanh điểm hiện tại là 2, thì điểm hiện tại sẽ tiếp tục giữ trạng thái hiện tại.
  3. Nếu số lượng các điểm sống chung quanh điểm hiện tại nhỏ hơn 2, hoặc lớn hơn 3, điểm hiện tại sẽ chết.

Cuộc thi Đời là sự tranh đua của các mã nguồn Python thực hiện việc tối ưu hóa cách thể hiện mô phỏng trên. Thể lệ của cuộc thi bao gồm:

  1. Bài tham dự gửi về địa chỉ thư admin tại vithon.org.
  2. Bài tham dự chỉ được sử dụng ngôn ngữ Python, và các thư viện chuẩn đi kèm.
  3. Bài tham dự chỉ cần hiện thực hóa lớp mẫu bên dưới bằng cách kế thừa nó và cài đặt các phương thức cần thiết.
  4. Yếu tố cơ bản để đánh giá là tốc độ chạy của chương trình.
  5. Hạn tham dự là hết ngày 15 tháng 10 năm 2011.
  6. Chỉ có một giải có trị giá tương đương 250 đô la Singapore.
  7. Quyết định của ban tổ chức là cuối cùng, xin không nhận khiếu nại.
class Board(object):
    '''Represents the Game of Life matrix.

    Each cell has at most 8 neighbors. A cell may have less than 8 neighbors.
    For example, a cell at (0, 0) would have only three neightbors (0, 1),
    (1, 0) and (1, 1).

    The cells are addressed in a row-major (row first) manner. The index starts
    from zero.

    '''

    def __init__(self, width=10, height=10):
        '''Initializes this board.

        Args:
            width (int): Number of cells in a row.
            height (int): Number of rows in this board.

        '''

        raise NotImplemented()

    def generation(self, n=1):
        '''Transform this board into next ``n`` generation(s).

        The transformation is in place similar to ``list.sort``.
        No value is returned to the caller.

        Args:
            n (int): Number of generations.

        Raises:
            ValueError: If n is smaller than 1.

        '''

        raise NotImplemented()

    def get_cell(self, row, col):
        '''Returns the state of the cell at row ``row`` and column ``col``.

        Args:
            row (int): The row, zero-indexed.
            col (int): The column, zero-indexed.

        Returns:
            True: If the cell is alive.
            False: If the cell is dead.

        '''

        raise NotImplemented()

    def set_cell(self, row, col, state):
        '''Sets a cell at row ``row`` and column ``col`` to state ``state``.

        Args:
            row (int): The row, zero-indexed.
            col (int): The column, zero-indexed.
            state (bool): Cell's state.

        '''

        raise NotImplemented()

    def get_row(self, row):
        '''Returns the states of all cells in row ``row``.

        Args:
            row (int): The row, zero-indexed.

        Returns:
            A sequence of bools.

        '''

        raise NotImplemented()

Mọi thắc mắc và thảo luận xin vui lòng gửi lên diễn đàn.

Tranh tài Bắn Suồng

written by vithon, on Nov 26, 2010 10:23:00 AM.

Cập nhật: Phiên bản battleship.zip cũ có lỗi. Các bạn tải về bản mới hoặc sửa dòng player2_mod = __import__(opts.player_1) thành player2_mod = __import__(opts.player_2). Xin cáo lỗi vì sự phiền toái này.

Nhóm PCNV hân hạnh tổ chức một cuộc thi mới: Tranh tài Bắn Suồng!

Bắn Suồng (xin lỗi vì sai chính tả, nhưng để giữ chữ viết tắt BS nên tôi đành phải đặt tên trò chơi là vậy) không phải là một trò chơi thông thường. Để chơi trò chơi này, các bạn phải viết mã bằng ngôn ngữ… (cho xin 500 đồng trống và kèn cho hào hứng tí nào) Python để điều khiển các đối tượng trong trò chơi.

Các bạn có thể tải trò chơi về tại địa chỉ http://www.vithon.org/static/battleship.zip.

Cuộc thi Bắn Suồng được tổ chức với thể lệ như sau:

  1. Mô-đun (các tập tin .py) tham gia phải gửi về cho admin+thư-rác@vithon.org (bỏ phần + thư rác) trước ngày 12 tháng 12 năm 2010.
  2. Các bài thi này sẽ được kiểm tra trước khi được chấp nhận cho thi.
  3. Các bài tham dự sẽ đấu vòng tròn tính điểm. Thắng sẽ được 3 điểm, hòa được 1, và thua được 0 điểm.
  4. Các trận đấu sẽ được truyền hình (qua web) trực tiếp vào ngày 12 tháng 12.
  5. Vùng biển sẽ có kích thước ngẫu nhiên với độ rộng và dài tối thiểu là 10, và tối đa là 15.
  6. Một giải nhất sẽ nhận được 01 chiếc áo Vithon miễn phí, và có thể mua thêm 01 chiếc áo khác với giá ưu đãi 100.000!
  7. Quyết định của ban tổ chức là cuối cùng. Xin được phép không nhận khiếu nại.

Để trao đổi về cuộc thi này, cũng như các vấn đề liên quan đến lập trình Python, các bạn có thể sử dụng diễn đàn của nhóm hoặc liên hệ qua IRC.

Nhóm PCNV rất mong nhận được sự tham gia nhiệt tình của các bạn.

Trao giải cuộc thi lập trình game bằng Python

written by Nguyễn Thành Nam, on Feb 5, 2010 10:56:00 AM.

Ngày 04 tháng 02 năm 2009, nhóm PCNV đã trao giải cuộc thi lập trình game với ngôn ngữ Python cho bạn Hoàng Quốc Thịnh.

Cuộc thi lập trình game với ngôn ngữ Python là một trong những hoạt động của nhóm PCNV nhằm lôi cuốn sự tham gia tìm hiểu và khuyến khích sáng tạo trong việc sử dụng ngôn ngữ Python.

Ngôn ngữ Python là một ngôn ngữ mạnh, đơn giản, và tổng quát. Ngoài việc được sử dụng trong các tổ chức lớn như Google, và NASA, Python còn được dùng để viết nên những trò chơi như EVE-Online với cả triệu người chơi, hay Ruồi Yêu Cứt với giải thưởng lập trình game bằng Python đầu tiên.

Xin chúc mừng bạn Hoàng Quốc Thịnh.

Hình bên dưới là bạn Nguyễn Thành Nam đại diện nhóm PCNV đang trao giải cho bạn Hoàng Quốc Thịnh trong bữa ăn thân mật. Hình chụp bởi nhiếp ảnh gia Thành Nguyễn (Malaysia) và sửa đôi chút bởi nhiếp ảnh gia Nguyễn Duy Thọ.

/static/game_programming_contest_prize.png