Trăn treo cổ không công bằng

Một bộ sưu tập mã nguồn Python 3 cho các trò chơi & mô phỏng dựa trên văn bản đơn giản để sử dụng làm chương trình ví dụ

TẢI VỀ. pip install --user gamesbyexample

[Sử dụng pip3 trên macOS và Linux. ]

CHẠY LAUNCHER. python -m gamesbyexample

Tôi hiện không chấp nhận yêu cầu kéo, nhưng vui lòng để lại nhận xét hoặc gửi đề xuất tới al@inventwithpython. com

Nếu bạn cần trợ giúp cài đặt Python, hãy truy cập https. //cài đặtpython3. com/

Đầu tiên, cài đặt trình thông dịch Python. Điều này đi kèm với trình soạn thảo IDLE barebones. Có những trình soạn thảo khác mà bạn có thể sử dụng. Trên Windows, bạn cũng có thể sử dụng trình chỉnh sửa Visual Studio Code. là trình chỉnh sửa cho Windows, Linux và macOS. Bạn cũng có thể sử dụng trình chỉnh sửa dựa trên trình duyệt như REPL. nó. Đây là tất cả miễn phí

Sau đó, nhấp vào các thư mục srcgamesbyexample trong kho lưu trữ này để tìm các tệp .py của các trò chơi Python khác nhau. Ví dụ: đây là mã cho Snailrace. py. Toàn bộ mã cho mỗi trò chơi nằm trong một tệp .py, vì vậy bạn có thể sao chép mã trực tiếp vào trình chỉnh sửa của mình. Tôi khuyên bạn nên nhập bằng tay, thay vì sử dụng cách sao chép-dán. Điều này sẽ cung cấp cho bạn "bộ nhớ cơ" của từng phần của mã. [Mặc dù một số trò chơi này yêu cầu bạn tải xuống tệp dữ liệu vào cùng thư mục với tệp .py của bạn. ] Sau đó, bạn có thể chạy chương trình. Nếu bạn nhận được thông báo lỗi, hãy ghi lại số dòng trong thông báo lỗi và kiểm tra lỗi chính tả bạn đã mắc phải

Sau khi học cú pháp cơ bản, nhiều lập trình viên muốn chuyển sang bước tiếp theo và xem cách các khái niệm lập trình này được sử dụng trong các chương trình "thực". Hầu hết các dự án nguồn mở đều quá lớn và phức tạp. Những trò chơi này được thiết kế ngắn gọn, đơn giản và thú vị. Bạn có thể sử dụng chúng làm ví dụ học tập để xem cách tạo chương trình của riêng mình

Lưu ý rằng một số chương trình yêu cầu bạn tải xuống một tệp bổ sung từ kho lưu trữ này. Ví dụ: trò chơi [sudoku.py][//github.com/asweigart/PythonStdioGames/blob/master/src/gamesbyexample/sudoku.py] tải các câu đố của nó từ tệp [sudokupuzzles.txt][//github.com/asweigart/PythonStdioGames/blob/master/src/gamesbyexample/sudokupuzzles.txt]

Sau khi người mới bắt đầu tìm hiểu cú pháp của Python và các khái niệm lập trình cơ bản [vòng lặp, phân nhánh, hàm, v.v. ] họ thường đi vào ngõ cụt. "Làm thế nào để tôi trở nên giỏi lập trình hơn?"

Điều giúp tôi học cách viết mã là tìm các dự án nhỏ có mã nguồn mà tôi đã sao chép và sau đó thực hiện các điều chỉnh nhỏ cho. Điều này cho tôi cái nhìn sâu sắc về cách các vòng lặp, phân nhánh và hàm kết hợp với nhau thành các chương trình thực tế

Để giúp những người khác đi theo con đường tương tự, tôi đang tạo một bộ sưu tập các chương trình ví dụ nhằm giúp người mới bắt đầu dễ dàng sao chép và hiểu. Các chương trình này [hầu hết là trò chơi] có các ràng buộc sau

  • Chúng ngắn, với giới hạn 256 dòng mã. Điều này làm cho chúng dễ đọc và hiểu trong một lần ngồi. càng ngắn càng tốt. Số "256" được chọn tùy ý, nhưng điều này cũng có nghĩa là các chương trình sẽ phù hợp với 4 hoặc 5 trang in
  • Chúng phù hợp với một tệp mã nguồn duy nhất và không có trình cài đặt. Điều này làm cho các trò chơi này trở nên tầm thường để chia sẻ bằng cách sao chép/dán mã vào trang web pastebin. Có thể sử dụng tệp dữ liệu/hình ảnh/lưu, nhưng nguồn phải liên kết đến một số ví dụ trong nhận xét của họ
  • Họ chỉ sử dụng thư viện chuẩn Python. Ít thứ hơn để cài đặt có nghĩa là khả năng tương thích rộng hơn và ít khả năng bị lỗi hơn trong quá trình thiết lập môi trường
  • Họ chỉ sử dụng văn bản stdio; . Đầu ra nằm trong cùng một phương tiện văn bản với mã nguồn văn bản làm cho nó ít trừu tượng hơn và dễ dàng nhận thấy mối quan hệ nhân quả giữa mã và đầu ra hơn. Điều này có nghĩa là không có đầu vào đồ họa hoặc chuột, nhưng việc chuyển các chương trình này sang các ngôn ngữ khác trở nên đơn giản vì tất cả chúng đều hỗ trợ văn bản stdio
  • Chúng nhất thiết phải theo lượt. Dựa vào pip31 có nghĩa là chương trình phải đợi người dùng nhập văn bản, nhưng điều này có nghĩa là chúng tôi không thể có các chương trình thời gian thực phản hồi với một lần nhấn phím
  • Họ được nhận xét tốt. Nhận xét nên dành cho người mới bắt đầu và sẽ dài dòng hơn. Giới hạn 256 dòng bao gồm chú thích và khoảng trắng. Nếu chương trình quá dài để bao gồm nhiều chú thích và khoảng trắng hợp lý, thì chương trình nên được đơn giản hóa, không phải chú thích
  • Họ sử dụng càng ít khái niệm lập trình càng tốt. Nếu các lớp, hiểu danh sách, đệ quy, không cần thiết cho chương trình, thì chúng không được sử dụng
  • Mã thanh lịch và hiệu quả là vô giá trị bên cạnh mã dễ hiểu và dễ đọc. Các chương trình này là dành cho giáo dục, không sản xuất. Các phương pháp hay nhất tiêu chuẩn, như không sử dụng biến toàn cục, có thể bỏ qua để dễ hiểu hơn
  • Họ xác thực đầu vào và không có lỗi. Không thể làm hỏng một chương trình có đầu vào xấu hoặc trường hợp cạnh
  • Tất cả các chức năng có docstrings. Đây là cách thực hành tài liệu tốt nhưng cũng cho phép hàm pip33 hoạt động trong trình bao tương tác

hướng dẫn bổ sung bao gồm

  • Không sử dụng chuỗi f. Raspberry Pis kể từ năm 2019 có Python 3. 5 được cài đặt và chuỗi f chỉ xuất hiện sau 3. 6. Một hướng dẫn cho các chương trình này là tương thích rộng rãi nhất có thể
  • Một số chương trình này sử dụng mô-đun pip34, bổ sung các tính năng giống như lời nguyền như màu sắc, xóa màn hình và di chuyển con trỏ
  • Bao gồm một liên kết đến toàn bộ chương trình trên https. // gia sư trăn. com để học sinh có thể thấy chương trình chạy như thế nào
  • Tên biến dài hơn, mô tả nhiều hơn tốt hơn tên ngắn hơn. Tránh sử dụng tên biến có một chữ cái ngoại trừ pip35 và pip36, hoặc pip37 và pip38
  • Có nhận xét được đánh dấu là pip39 mô tả những thay đổi nhỏ mà họ có thể thực hiện [tăng sức khỏe, thay đổi độ khó, v.v. ]
  • Sử dụng jsdifflib để tạo khác biệt trực tuyến. Đây là một cách dễ dàng để học sinh tự tìm ra lỗi chính tả của mình khi sao chép mã. Một ví dụ ở đây. https. // phát minh với trăn. com/invent4thed/diff/
  • Sử dụng câu lệnh python -m gamesbyexample0 để phát hiện các lỗi chính tả phổ biến mà học sinh mắc phải khi nhập mã, đặc biệt đối với các hằng số mà họ có thể sửa đổi
  • Sử dụng Python3. Lần duy nhất Python 2 thích hợp để sử dụng là khi có một cơ sở mã lớn hiện có. Nhưng điều này là dành cho các lập trình viên mới làm việc trong các dự án greenfield
  • Bám sát các ký tự trong tiết mục ký tự WGL4, về cơ bản là CP 1252, các trang mã cho ký tự Cyrillic/Hy Lạp/Thổ Nhĩ Kỳ/Baltic và mã hóa CP437 "ASCII mở rộng" thời MS-DOS. Dòng lệnh của Windows là yếu tố hạn chế ở đây;
  • Mã nguồn phải có thể gõ được. Không đặt các ký tự ascii hình hộp hoặc mở rộng trực tiếp vào mã nguồn, mà thay vào đó hãy thực hiện lệnh gọi chr[] để lấy các ký tự này
  • Thời gian có thể là một yếu tố, ngay cả khi các chương trình không phải là thời gian thực. Bạn có thể kiểm tra thời gian hoặc thêm các khoảng dừng giữa các cuộc gọi đến pip31, nhưng lưu ý rằng bạn sẽ không bao giờ có thể ngắt khi người dùng đang nhập
  • Mô-đun python -m gamesbyexample2 có thể được sử dụng để tương tác với khay nhớ tạm. Một lượng lớn văn bản có thể được nhập-ed vào hoặc xuất-ed từ chương trình bằng bảng tạm
  • Tôi sử dụng phép nội suy chuỗi %s thay vì chuỗi f. Tôi thích chuỗi f, nhưng chúng chỉ được giới thiệu trong Python 3. 6 và tôi không muốn giới hạn các phiên bản mà các chương trình này tương thích với
  • Đối với tất cả các từ điển, tôi có một nhận xét ngắn giải thích các loại khóa và giá trị là gì. Ví dụ: # Phím=địa điểm, giá trị=chuỗi nghi phạm & mục tại đó
  • Sử dụng các ký tự "vẽ hộp DOS" để vẽ các trò chơi cờ phức tạp. Mặc dù gắn bó với +, -, và. for lines cũng tốt vì nó đơn giản hơn
  • Trò chơi giữa người chơi với người chơi thường có thể đơn giản và ngắn hơn trò chơi giữa người chơi với máy tính. Điều này nhất thiết có nghĩa là trò chơi nhiều người chơi phải là trò chơi "thông tin hoàn hảo" vì cả hai người chơi đều có thể xem màn hình.
  • Không sửa đổi các đối tượng có thể thay đổi [e. g. danh sách] trong các chức năng để truyền thông tin vào/ra khỏi chức năng; . Điều này có thể làm cho chương trình của bạn có vẻ kỳ diệu đối với người không quen thuộc với Mô hình dữ liệu Python
  • Tránh xúc phạm người chơi khi họ thua. Đây là điều tôi học được từ việc hướng dẫn các lớp lập trình cho trẻ em. Họ phản hồi kém với những tin nhắn như "Game Over, Dummy. " ngay cả khi chúng có vẻ vô hại đối với người lớn

Sau khi thực hiện một số chương trình này, tôi nhận thấy nhiều "loại" độ phức tạp của chương trình. Các chương trình có thể bằng 0 hoặc nhiều loại trong số này

  • Cấp độ mới bắt đầu tuyệt đối. Không có chức năng, không có cấu trúc dữ liệu lồng nhau, tránh các vòng lặp lồng nhau. Chỉ cần sử dụng phân nhánh và vòng lặp đơn giản
  • Chọn cấp độ phiêu lưu của riêng bạn. Các chương trình không mô hình hóa mọi thứ bằng cấu trúc dữ liệu mà chủ yếu sử dụng điều khiển luồng
  • chỉ STDIO. Bạn không thể hoàn tác những thứ đã được in trước đó [ngoài việc "in" các ký tự xóa lùi để xóa các ký tự trên dòng hiện tại]. Đầu ra giống như một tệp nhật ký chỉ nối thêm
  • giống như lời nguyền. Yêu cầu mô-đun pip34, nhưng có thể xóa/làm mới màn hình, vẽ ở các vị trí tùy ý trên màn hình bằng màu, v.v.
  • Sửa đổi mã nguồn để chạy. Thay vì nhận đầu vào từ pip31, người dùng chỉnh sửa các biến ở đầu tệp để thay đổi cài đặt trong chương trình

Các mô-đun bổ sung tôi khuyên bạn nên sử dụng

  • pip34 cho văn bản đầy màu sắc và kiểm soát vị trí của con trỏ văn bản
  • python -m gamesbyexample6 để có phiên bản lời nguyền tốt hơn
  • python -m gamesbyexample2 để sao chép/dán văn bản bằng khay nhớ tạm
  • python -m gamesbyexample8 để phát tệp âm thanh
  • python -m gamesbyexample9 để chuyển văn bản thành giọng nói
  • src0 cho các chuỗi 2D mà bạn có thể vẽ trên đó
  • src1 cho cấu trúc dữ liệu hình chữ nhật
  • src2 cho các chức năng vẽ đường khác nhau

Trắc nghiệm sắp xếp theo thứ tự bảng chữ cái - Trò chơi đố vui dựa trên thời gian để xem bạn có thể sắp xếp các chữ cái theo thứ tự bảng chữ cái nhanh như thế nào

Alphabetize Word Quiz - Một trò chơi đố theo thời gian để xem bạn có thể sắp xếp các từ theo bảng chữ cái nhanh như thế nào

Analog Clock - Hình ảnh động của đồng hồ analog. Nhấn Ctrl-C để dừng

Bánh mì tròn - Một trò chơi logic suy luận trong đó bạn phải đoán một số dựa trên manh mối

Mô phỏng nghịch lý sinh nhật - Khám phá toán học của "Nghịch lý sinh nhật". Thông tin thêm tại https. // vi. wikipedia. org/wiki/Birthday_problem

Blackjack - Một trò chơi đánh bài hay còn gọi là 21. Thông tin thêm tại. https. // vi. wikipedia. org/wiki/Xì dách

Bóng nảy - Hoạt hình bóng nảy. Nhấn Ctrl-C để dừng

Đường nảy - Hoạt hình đường nảy. Nhấn Ctrl-C để dừng

Calendar Maker - Tạo lịch hàng tháng, được lưu vào tệp văn bản và phù hợp để in

Chance Checkers - Cờ đam, nhưng bạn có thể di chuyển 3 quân cờ ngẫu nhiên mỗi lượt. Những quân cờ này được quyết định ngẫu nhiên và có thể là quân cờ của chính người chơi hoặc của đối thủ của họ, nhưng bạn không thể di chuyển quân cờ thăng hạng của đối thủ. Trong phiên bản này, chụp không bắt buộc

Daleks - Cố gắng để các robot đâm vào nhau

Cờ đam - Trò chơi cờ đam kinh điển. Trong phiên bản này, chụp không bắt buộc

Chomp - Một trò chơi logic ngon một cách nguy hiểm. Lấy cảm hứng từ câu đố của Frederik Schuh và David Gale, do Martin Gardner xuất bản trên tạp chí Khoa học Mỹ [tháng 1 năm 1973] Thông tin thêm tại. https. // vi. wikipedia. org/wiki/Chomp

Clickbait Headline Generator - Trình tạo tiêu đề clickbait cho trang trại nội dung vô hồn của bạn

Coin Flip Simulator - Mô phỏng số lượng lớn các lần tung đồng xu

Chuỗi Collatz - Tạo số cho chuỗi Collatz, được cung cấp một số bắt đầu

Số liệu thống kê chuỗi Collatz - Tìm hiểu xem các Chuỗi Collatz khác nhau dài bao nhiêu

Connect Four - Một trò chơi cờ để có được bốn ô liên tiếp

Conway's Game of Life - Mô phỏng máy tự động di động cổ điển. Nhấn Ctrl-C để dừng. Thông tin thêm tại. https. // vi. wikipedia. org/wiki/Conway%27s_Game_of_Life

Conway's Game of Life [Terminal] - Mô phỏng automata di động cổ điển. Nhấn Ctrl-C để dừng. Thông tin thêm tại. https. // vi. wikipedia. org/wiki/Conway%27s_Game_of_Life

Đếm ngược - Hiển thị hoạt hình đồng hồ đếm ngược bằng màn hình bảy đoạn. Nhấn Ctrl-C để dừng. Thông tin thêm tại https. // vi. wikipedia. org/wiki/Seven-segment_display Yêu cầu sevseg của chúng tôi. chương trình py

Mê cung đường chéo - In ra một mê cung đường chéo ngẫu nhiên. Lấy cảm hứng từ 10 PRINT CHR$[205. 5+RND[1]];. chương trình GOTO 10

Con lăn xúc xắc - Mô phỏng cuộn xúc xắc bằng cách sử dụng ký hiệu Dungeons & Dragons

Đồng hồ kỹ thuật số - Hiển thị đồng hồ kỹ thuật số của thời gian hiện tại với màn hình bảy đoạn. Nhấn Ctrl-C để dừng. Thông tin thêm tại https. // vi. wikipedia. org/wiki/Seven-segment_display Yêu cầu sevseg của chúng tôi. chương trình py

DNA - Một hình ảnh động đơn giản của chuỗi xoắn kép DNA. Nhấn Ctrl-C để dừng. Cảm ơn maken đã truyền cảm hứng. https. //asciinema. tổ chức/a/155441

Eeny-Meeny-Miny-Moe - Trò chơi loại trừ dành cho nhiều người chơi. Nhấn Ctrl-C để dừng. Thông tin thêm tại https. // vi. wikipedia. org/wiki/Eeny,_meeny,_miny,_moe Thông tin thêm tại https. // vi. wikipedia. org/wiki/Josephus_problem

Etch a Sketch - Vẽ đường kẻ trên màn hình

Thừa số - Tìm tất cả các thừa số của một số

Đom đóm - Ảnh động đẹp về đom đóm. Nhấn Ctrl-C để dừng

Fish Tank - Hoạt hình bể cá yên bình. Nhấn Ctrl-C để dừng

Tính toán FizzBuzz - Tính toán các câu trả lời cho vấn đề lập trình fizz buzz

Trò chơi FizzBuzz - Một trò chơi số mà bạn cũng chạy đua với đồng hồ

Flippy [một bản sao Reversi] - [Yêu cầu Pygame] Chơi với máy tính và cố gắng lật các ô của chúng

Lũ lấp - Một ví dụ về thuật toán "lấp lũ". Đây là bản trình diễn cơ bản của cả thuật toán lấp đầy đệ quy và lặp lại. Thuật toán này thường được sử dụng trong các "công cụ tô màu" trong các chương trình đồ họa như MS Paint hay Photoshop. Thuật toán này cũng được sử dụng trong lũ lụt. pygame

Lũ nó. - Một trò chơi đầy màu sắc trong đó bạn cố gắng lấp đầy bảng bằng một màu duy nhất

Forest Fire Sim - Mô phỏng đám cháy lan rộng trong một khu rừng đang phát triển. Nhấn Ctrl-C để dừng. Lấy cảm hứng từ Emoji Sim của Nicky Case http. // trường hợp. tôi/mô phỏng/mô hình/

Four-In-A-Row - [Yêu cầu Pygame] Chơi với máy tính, thả các ô để kết nối bốn

Nonuniform Fractal Tree Drawer - Vẽ các cây fractal không đồng nhất với đồ họa con rùa

Fractal Tree Drawer - Vẽ cây fractal với đồ họa con rùa

Game 2048 - Trò chơi xếp gạch trượt ghép các số tăng dần theo cấp số nhân. Lấy cảm hứng từ 2048 của Gabriele Cirulli, một bản sao của Veewo Studios' 1024, đến lượt nó là một bản sao của Threes. trò chơi. Thông tin thêm tại https. // vi. wikipedia. org/wiki/2048_[video_game]

Gemgem [một bản sao Bejeweled] - [Yêu cầu Pygame] Một trò chơi kết hợp trang sức gây nghiện

Xổ số chân ma - Lần theo dấu vết để xem ai trúng. Thông tin thêm tại. https. // vi. wikipedia. org/wiki/Ghost_Leg

Đoán số - Trong khi đưa ra gợi ý, hãy thử đoán số bí mật

Máy chém - Một biến thể tiếng Pháp của Hangman với đồ họa khác. Ô la la

Hacking - Mini-game hack từ "Fallout 3"

Hammurabi - Trò chơi kinh điển Hamurabi. bas của Doug Dyment, phổ biến bởi David Ahl

Hamsburger - Một chương trình tạo số nhiều ngớ ngẩn. Nhấn Ctrl-C để dừng

Hangman - Trò chơi đoán chữ

Hangman with Random Letters - Trò chơi đoán từ hoàn toàn không công bằng. [Đây là một chương trình đùa. ]

Hard-coded Tic Tac Toe - Chơi tic tac toe với máy tính. Mọi di chuyển có thể đã được mã hóa cứng vào chương trình này. Chương trình dài 5700 dòng. Đây là một chương trình đùa, không thực sự viết mã như thế này

Đường cong Hilbert - Vẽ fractal Đường cong Hilbert với đồ họa con rùa. Thông tin thêm tại. https. // vi. wikipedia. org/wiki/hilbertCurve Những video hay về những đường cong lấp đầy không gian. https. //youtube. be/RU0wScIj36o và https. //youtube. be/3s7h2MHQtxc

Hoạt hình đồng hồ cát - Hoạt ảnh đồng hồ cát chứa đầy cát rơi. Nhấn Ctrl-C để dừng

Thằng ngốc - Làm thế nào để giữ một thằng ngốc bận rộn hàng giờ. [Đây là một chương trình đùa. ]

Ink Spill [bản sao của Flood It] - [Yêu cầu Pygame] Cố gắng làm cho toàn bộ trường có một màu duy nhất

J'ACCUSE. - Một trò chơi bí ẩn về âm mưu và một con mèo mất tích. Lấy cảm hứng từ Homestar Runner's "Trứng ở đâu?"

Bông tuyết Koch - Vẽ fractal bông tuyết Koch với đồ họa con rùa

Langton's Ant - Một hình ảnh động automata di động. Nhấn Ctrl-C để dừng. Thêm thông tin. https. // vi. wikipedia. org/wiki/Langton%27s_ant

Máy cắt cỏ - Xem cỏ bị cắt và mọc lại. Nhấn Ctrl-C để dừng. Lấy cảm hứng từ Tondeuse của Jules Villard, https. //asciinema. org/a/21743 https. //cai Xô nhỏ. org/jvillard/tondeuse/src/mặc định/

Leetspeak - Dịch tin nhắn tiếng Anh l33t5p34]

Chủ Đề