Lịch học Tài liệu Bài tập - INT 2202 Lập trình nâng cao. Nhóm 3 và nhóm 5 Lec3 Hangman.b tài liệu, giáo án, bài giảng ,...
Game: Hangman - Phát triển chương trình https://github.com/tqlong/advprogram Nội dung ● Trò chơi Hangman ● Sơ đồ khối, mã giả tư tưởng chia để trị ○ Hình dung thành phần chương trình ● Kỹ thuật: ○ Thao tác với xâu ký tự C++ ○ Bắt đầu với hàm đơn giản, biến đổi ln có chương trình chạy Cùng chơi Hangman ● Trò chơi bạn bè tiếng ○ http://www.manythings.org/hmf/ ● Luyện từ vựng tiếng Anh Đối với người lập trình ● Mơ-đun hóa chương trình ● Thao tác với xâu ký tự ● Xử lý logic trò chơi (game logic) ● Vẽ hình đơn giản (text) Hangman: Luật chơi ● Trò chơi A (chủ trò) B (người chơi) ● A nghĩ từ tiếng Anh giấu ○ secretWord: Số vạch = số chữ từ ● B tìm cách đốn từ A ○ Mỗi lần B đoán chữ đúng, A ghi chữ lên vạch tương ứng ○ Nếu B đoán sai, B lượt đoán ● Số lượt ≈ số nét vẽ giá treo thân người B (so fun :-D) Hangman: Luật chơi ● Sai lần đầu: Vẽ chữ L ngược (giá treo cổ) ● Sai lần 2: Vẽ vòng tròn (đầu) ● Sai lần 3: Vẽ vạch (thân người) ● Sai lần 4: Vẽ vạch (tay trái) ● Sai lần 5: Vẽ vạch (tay phải) ● Sai lần 6: Vẽ vạch (chân trái) ● Sai lần 7: Vẽ vạch (chân phải) Đủ thân người → thua Ví dụ ván chơi E HANGMAN C V | | | | | - | | | | | | - | | | O | | | | | | | O | /|\ | | - G secretWord −−−−−−− A secretWord −A−−−A− N P secretWord −AN−−AN H I secretWord HAN−−AN V secretWord HANG−AN F | | | O | /|\ | / \ | - | | | O | | | - | | | O | /| | | | | | O | /|\ | / | - Lập trình trò chơi Hangman Hãy lập trình trò chơi Hangman với máy chủ trò Cần hình dung tác vụ chương trình trước lập trình cụ thể ● ● ● ● ● Khởi tạo: máy nghĩ từ tiếng Anh, số đếm lần đoán sai, Nhập liệu: phán đoán người chơi Cập nhật: xử lý phán đoán thay đổi trạng thái trò chơi Hiển thị trạng thái trò chơi: người giá treo secretWord Thơng báo kết trò chơi Sơ đồ khối - quan hệ tác vụ Khởi tạo (initialize) - Chọn từ tiếng Anh - Số đếm lần đoán sai - Từ đoán Nhập liệu (input) ● Phán đoán người chơi Hiển thị (render) - Giá treo cổ - Từ đoán false điều kiện dừng Game loop Cập nhật trạng thái (update) ● từ đoán ● số lần đốn sai true Thơng báo kết Đọc thêm: http://gameprogrammingpatterns.com/game-loop.html Mã giả Initialize choose word; initialize guessedWord with ‘-’; badGuessCount = 0; Render Input false Game Over true { render game; End game char guess = readAGuess; if (word contains guess) update guessedWord; else badGuessCount++; } while (game not over); display game result; Update game string word = chooseWord(); string guessedWord = string(word.length(), '-'); int badGuessCount = 0; Code { renderGame(guessedWord, badGuessCount); char guess = readAGuess(); if (contains(word, guess)) guessedWord = update(guessedWord, word, guess); else badGuessCount++; } while (badGuessCount < && word != guessedWord); renderGame(guessedWord, badGuessCount); if (badGuessCount < 7) cout