Ngày nay cuộc sống đang không ngừng phát triển và Game được xem là một công cụ vô cùng hiểu ích, Trí tuệ nhân tạo kết hợp trong game sẽ đưa ra những tựa game thông minh giúp người dùng giải trí sau những giờ làm việc và học tập vất vã...
TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN VIỆN CÔNG NGHỆ THƠNG TIN VÀ KINH TẾ SỐ TIỂU LUẬN TRÍ TUỆ NHÂN TẠO ĐỀ TÀI NGHIÊN CỨU : XÂY DỰNG TRÒ CHƠI CROWNS BẰNG NGƠN NGỮ LẬP TRÌNH PYTHON Giảng viên hướng dẫn : TH.S Lưu Minh Tuấn Sinh viên thực : Nguyễn Xuân Dương Mã sinh viên : 11181128 Lớp học phần : Trí Tuệ Nhân Tạo - 01 Hà Nội, Năm 2021 MỤC LỤC Lời Nói Đầu Chương I: Khái Quát Sự Hình Thành Và Phát Triển Của Game I Lịch Sử Phát Triển Của Game Nói Chung Khái Quát……………………………………………………… Game Trên Dòng Máy CDC Và DEC Những Sự Kiện Nổi Bật Của Game Máy Chơi Game Video Đầu Tiên II Các Thể Loại Game Hành Động Chiến Thuật Nhập Vai Phiêu Lưu Giải Trí Chương II: Tổng Quan Về Game Crowns I Mục Đích Của Việc Nghiên Cứu Xây Dựng Game Crowns II Yêu Cầu Tựa Game Crowns Chương III: Quá Trình Xây Dựng Game Crowns…… I Cài Đặt Mơi Trường Và Cơng Cụ Lập Trình PyThon II Phân Tích Và Thiết Kế Giao Diện Game Crowns Q Trình Phân Tích…………………………………… Q Trình Thiết Kế…………………………………… 2.1)Đặt Vấn Đề……………………………………………….10 2.2)Thiết Kế Giao Diện Từng Màn Chơi.………………… 10 III Quá Trình Sử Dụng PyThon Để Lập Trình Game Crowns Sử Dụng Thư Viện PyGame Của PyThon………………………… Lập Trình Game Crowns…………………………………… 2.1)Xác Định Giao Diện…………………………………… 12 2.2)Xây Dựng Vòng Lặp…………………………………… 15 Xây Dựng Các Màn Chơi…………………………………… MỤC LỤC Chương IV: Kết Quả Kiểm Thử……………………………………… ………… I Thơng Tin Tựa Game………………………………… II Mục Đích Của Việc Kiểm Thử………………………………… III Báo Cáo Kiểm Thử………………………………… Chương V: Kết Luận……………………………………… …………… ………… I Những Kết Quả Đạt Được………………………………… Lý Thuyết…………………………………… 2.Thực Hành…………………………………… II Hướng Phát Triển Trong Tương Lai……………………………………… DANH SÁCH HÌNH VẼ Hình 1: Bút tích Ralph Baer thiết kế trị chơi Chase…………………………… Hình 2: Máy chơi game đầu tiên………………………………………………………….5 Hình 3: Kiểm tra việc cài đặt mơi trường……………………………………………… Hình 4: Thiết kế game level 1…………………………………………………… 10 Hình 5: Thiết kế game level 2…………………………………………………… 11 Hình 6: Thiết kế game level 3…………………………………………………… 11 Hình 7: Giao diện chương trình game……………………………………… 15 Hình 8: Giao diện phần hướng dẫn…………………………………………………… 16 Hình 9: Giao diện hình thua cuộc………………………………………………… 17 Hình 10 : Giao diện hình chiến thắng…………………………………………… 18 Hình 11: Giao diện game level 1……………………………………………………… 19 Hình 12: Giao diện game level 2……………………………………………………… 20 Hình 13: Giao diện game level 3……………………………………………………… 21 TIỂU LUẬN TRÍ TUỆ NHÂN TẠO XÂY DỰNG TRỊ CHƠI CROWNS LỜI NĨI ĐẦU Thập kỷ thứ kỷ 21 bắt đầu, chứng kiến 10 năm nhộn nhịp chuyển đổi số toàn cầu, từ doanh nghiệp tới ứng dụng hàng ngày người tiêu dùng Và cải tiến công nghệ tiếp tục cập nhật ngày Những năm đầu thập niên hoàn thiện công nghệ thiết lập, ứng dụng hoàn toàn triển khai thực tế Có thể vào thời khắc tháng 12 năm 2029, khơng nghi ngờ phát minh mà ngày tưởng tượng Nhưng tại, sau xu hướng cơng nghệ thập kỷ mới: điện tốn đám mây (CLOUD COMPUTING); Chuỗi khối (Blockchain); Mạng kết nối vạn vật(IoT); Dữ liệu lớn(Big Data) không nhắc đến Trí Tuệ Nhân Tạo(AI) Trí tuệ nhân tạo hay AI (Artificial Intelligence), đơi gọi trí thơng minh nhân tạo, trí thơng minh thể máy móc, trái ngược với trí thơng minh tự nhiên người Thơng thường, thuật ngữ "trí tuệ nhân tạo" thường sử dụng để mô tả máy móc (hoặc máy tính) có khả bắt chước chức "nhận thức" mà người thường phải liên kết với tâm trí, "học tập" "giải vấn đề" Trí tuệ nhân tạo có nhiều lĩnh vực ứng dụng,một số Hệ thống giải trí gồm chương trình trị chơi, với nhu cầu giải trí người khơng ngừng tăng lên Nắm bắt điều em sử dụng ngơn ngữ lập trình PyThon với công cụ PyCharm để xây dựng tựa game Crowns Crowns trò chơi đơn giản em xây dựng dựa tựa game huyền thoại đầu thập niên 90 "Dangerous Dave" Mục tiêu trị chơi lấy vương miện cách thu thập tất đồng xu tất nhiên trình chơi có nhiều trở ngại mà người chơi phải vượt qua để đạt đích đến Trị chơi có cấp độ khác từ level đến level đến level 3, cấp độ cao độ khó lớn Tra n g |5 TIỂU LUẬN TRÍ TUỆ NHÂN TẠO XÂY DỰNG TRỊ CHƠI CROWNS Khi hoàn thành xong tựa game Crowns em xin chân thành cảm ơn thầy giáo, TH.S Lưu Minh Tuấn người trực tiếp hướng dẫn em trình nghiên cứu đề tài Tra n g |6 TIỂU LUẬN TRÍ TUỆ NHÂN TẠO XÂY DỰNG TRỊ CHƠI CROWNS Chương I: Khái Quát Sự Hình Thành Và Phát Triển Của Game I Lịch Sử Phát Triển Của Game Nói Chung Khái Quát Game vào từ điển từ lâu có nhiều nghĩa tiếng Anh Ngành công nghiệp game non trẻ làm cho kinh đô điện ảnh Mỹ Hollywood phải hậm hực doanh thu họ bị “lấn lướt” với 10 tỷ USD/năm Vậy đâu động lực phát triển thành tốc thế? Hãy vào giới huyền ảo khám phá lịch sử Vào thuở “sơ khai” ngành game tên tuổi hay nhắc tới Ralph Baer, A.S.Douglas, Willy Higinbotham Steve Russell Năm 1951, chàng kỹ sư trẻ Ralph Baer giao nhiệm vụ thiết kế tivi thuộc loại cao cấp giới để gây sốc thị trường Phải đến 18 năm sau, ý tưởng anh biến thành thực Năm 1966, Ralph Baer lúc làm việc cho Sanders Associates, tạo Chase, trị chơi video đơn giản chơi tivi tiêu chuẩn Game bao gồm điểm nhỏ hình vng người chơi di chuyển hình theo hướng để đuổi Hình 1: Bút tích Ralph Baer thiết kế trò chơi Chase Ralph Baer tiếp tục phát triển game vào năm 1986, anh có mơ hình tivi chơi số game khác Game dịng máy tính CDC DEC Việc phát triển game hệ máy tính lớn trường đại học tăng tốc năm 70, nhà thiết kế game thời kỳ coi thú vui khơng phải cơng việc kinh doanh Vào thời kỳ có mạng lưới phân phối lớn Tra n g |7 TIỂU LUẬN TRÍ TUỆ NHÂN TẠO XÂY DỰNG TRỊ CHƠI CROWNS cho nhà thiết kế game sinh viên Một hệ thống Plato công ty kiểm soat liệu(CDC) hỗ trợ vận hành máy trạm CDC Plato hệ thống kết hợp đồ họa hình cảm ứng để đào tạo kỹ tương tác Hai hệ thống chia sẻ phần mềm DECUS công ty thiết bị kỹ thuật số (DEC) điều hành cho trường, học viện có sử dụng máy tính DEC dịng PDP-10 Các hoạt động ngành game vào đầu năm 70 diễn độc lập song song hai hệ thống riêng biệt trường Mỹ tiếp cận với loại phần cứng nhà cung cấp game chia sẻ(game mà người sử dụng copy cho nhau) Những kiện bật game Năm 1971, Don Daglow viết trò chơi bóng chày cho máy tính tản PDP-10 sinh viên trường đại học Pomona Người chơi tham gia trận đấu riêng lẻ chơi mùa giải Daglow tiếp tục phối hợp với nhà lập trình Eddie Dombrower để thiết kế Earl Weaver Baseball mà sau hãng Electronic Arts phát hành vào năm 1987 Trong năm 1972, Gregory Yob thiết kế trị chơi trốn tìm Hunt the wumpus cho PDP-10, coi game phiêu liêu chữ Máy chơi game video Vào năm 1972, máy chơi game chuyên dụng (console)lần phát hành dành cho thị trường giải trí gia đình với tên ấn tượng Maxnavog Odessey Được thiết kế cách dùng công nghệ điện tử mô (analog), thiết bị sản phẩm mà Ralph Baer phát triển lên từ thiết bị ông chế tạo năm 1968 nối với tivi Tra n g |8 TIỂU LUẬN TRÍ TUỆ NHÂN TẠO XÂY DỰNG TRỊ CHƠI CROWNS Hình 2: Máy chơi game Tất nhiên, không giống với máy console nay, Odessey chạy pin thiếu chức tạo âm II Các Thể Loại Game Nếu trước xoay quanh thể loại: hành động, nhập vai, chiến thuật hay phiêu lưu ; nay, việc phân chia giải pháp “làm nhanh, làm tắt “ Bởi nhà phát triển ln sáng tạo thể loại “lai” thể loại Do thay ép thể loại cho game mô tả đặc điểm, cách chơi game,… Hành động Game hành động thể loại game đòi hỏi người chơi phải nhanh nhạy, khéo léo mưu trí dạng game địi hỏi người chơi phải liên tục vận động để vượt qua thử thách chơi Có nhiều thể loại game hành động như: hành động đối kháng, hành động chiến thuật, truy đuổi Một tựa game hành động đình đám Download.com.vn như: GTA Vice City, Halo: Combat Evolved, Mega Man hay Boom Online Chiến thuật Thể loại game yêu cầu người chơi vận dụng chí trí thơng minh nhiều dùng kỹ Tra n g |9 TIỂU LUẬN TRÍ TUỆ NHÂN TẠO XÂY DỰNG TRỊ CHƠI CROWNS Nhập vai Có thể thấy, game nhập vai ln đứng top loại game săn đón nhiều toàn giới nhiều yếu tố khác Không chơi game, game nhập vai cho phép người chơi hóa thân vào nhân vật để hồn thử thách Những nhiệm vụ cam go, có nhiều khó khăn tưởng dễ làm người chơi nản lòng thực chất lại chất xúc tác khiến cho chơi nảy lửa hết Phiêu lưu Game phiêu lưu có cốt chuyện chặt chẽ dài, đòi hỏi người chơi phải vận dụng trí tuệ, lịng nhẫn ngại để lựa chọn hướng tốt Giải trí Game giải trí thể loại game ngắn, thiết kế cho nhiều người chơi dể chơi T r a n g | 10 TIỂU LUẬN TRÍ TUỆ NHÂN TẠO XÂY DỰNG TRỊ CHƠI CROWNS Hình 5: Thiết kế game level Level 3: Hình 6: Thiết kế game level III Quá Trình Sử Dụng PyThon Để Lập Trình Game Crowns T r a n g | 15 TIỂU LUẬN TRÍ TUỆ NHÂN TẠO XÂY DỰNG TRÒ CHƠI CROWNS Sử Dụng Thư Viện Pygame Của PyThon PyGame thư viện ngôn ngữ Python Nó sử dụng để phát triển trị chơi 2D tảng nơi bạn sử dụng tập hợp mô-đun Python để phát triển trò chơi Đây tảng dễ hiểu thân thiện với người bắt đầu giúp bạn phát triển trò chơi cách nhanh chóng Trang web thức PyGame là: https://www.pygame.org Lập Trình Game Crowns 2.1)Xác định giao diện Tạo màu sắc, kích thước, tạo lớp camera # Xác định số màu BLACK = ( 0, 0, 0) WHITE = ( 255, 255, 255) LIGHTBLUE = ( 133, 214, 255) # xác định kích thước WIN_WIDTH = 800 WIN_HEIGHT = 550 HALF_WIDTH = int(WIN_WIDTH / 2) HALF_HEIGHT = int(WIN_HEIGHT / 2) # đặt kích thước cửa sổ size = (WIN_WIDTH, WIN_HEIGHT) # tạo lớp camera class Camera(object): def init (self, camera_func, width, height): # gọi chức máy ảnh đặt máy ảnh hình chữ nhật self.camera_func = camera_func self.state = pygame.Rect(0, 0, width, height) def apply(self, target): # máy ảnh di chuyển return target.rect.move(self.state.topleft) def update(self, target): # cập nhật máy ảnh hình chữ nhật để di chuyển chế độ xem cấp độ self.state = self.camera_func(self.state, target.rect) Xác định ký tự di chuyển def update(self, up, left, right, platforms): if up: # nhảy mặt đất if self.onGround: self.yspeed -= # cập nhật ký tự để di chuyển sang trái if left: self.xspeed = -8 T r a n g | 16 TIỂU LUẬN TRÍ TUỆ NHÂN TẠO XÂY DỰNG TRÒ CHƠI CROWNS # cập nhật ký tự để di chuyển sang phải if right: self.xspeed = Cài đặt cấp độ rơi, va chạm if not self.onGround: self.yspeed += 0.3 # tốc độ rơi tối đa if self.yspeed > 100: self.yspeed = 100 # xác định va chạm def collide(self, xspeed, yspeed, platforms): for p in platforms: # cho tảng thông thường if pygame.sprite.collide_rect(self, p):# nhân vật va chạm với tảng, chặn đường dẫn nhân vật: # di chuyển sang phải, phía bên phải mơ hình ký tự tương đương với phía bên trái tảng if xspeed > 0: self.rect.right = p.rect.left # di chuyển sang trái, bên trái biểu tượng ký tự tương đương với bên phải tảng if xspeed < 0: self.rect.left = p.rect.right # rơi xuống, cạnh mơ hình ký tự tương đương với mặt tảng if yspeed > 0: self.rect.bottom = p.rect.top self.onGround = True self.yspeed = # nhảy lên, mặt mơ hình ký tự tương đương với mặt tảng if yspeed < 0: self.rect.top = p.rect.bottom Tạo tảng(bức tường), đồng xu, lửa # tạo lớp tảng class Platform(Thing): def init (self, x, y): # sử dụng lớp thứ để khởi tạo sprite tảng thực thể riêng biệt Thing. init (self) # đặt hình chữ nhật lên hình self.image = pygame.Surface((25, 25)) self.image.convert() self.image.fill(LIGHTBLUE) self.rect = pygame.Rect(x, y, 25, 25) def update(self): # tảng không cập nhật pass # tạo lớp tiền xu class coinSprite(Platform): T r a n g | 17 TIỂU LUẬN TRÍ TUỆ NHÂN TẠO XÂY DỰNG TRÒ CHƠI CROWNS def init (self, x, y): # sử dụng lớp tảng để khởi tạo coin sprite phần thực thể tảng Platform. init (self, x, y) # đặt tải hình ảnh cho coinsprite hình self.image = pygame.Surface((25, 25)) self.image = pygame.image.load("coin.png") self.image = self.image.convert() #để cho đồng xu sprite có thuộc tính hình chữ nhật self.rect = self.image.get_rect() self.image.set_colorkey(BLACK) self.rect.centerx = x # đặt x tọa độ cho tâm sprite self.rect.centery = y # đặt y tọa độ cho tâm sprite def update(self): self.rect.center = pygame.image.load() # cập nhật sprite với hình ảnh # tạo lớp lửa class fireSprite(Platform): def init (self, x, y): Platform. init (self, x, y) # sử dụng lớp tảng để khởi tạo fire sprite thực thể tảng #set tải hình ảnh để sprite hình self.image = pygame.Surface((25, 25)) self.image = pygame.image.load("fireball.png") self.image = self.image.convert() self.rect = self.image.get_rect() self.image.set_colorkey(BLACK) self.rect.centerx = x self.rect.centery = y def update(self): self.rect.center = pygame.image.load() class winSprite(Platform): def init (self, x, y): Platform. init (self, x, y) self.image = pygame.Surface((25, 25)) self.image = pygame.image.load("winsprite.png") self.image = self.image.convert() self.rect = self.image.get_rect() self.image.set_colorkey(BLACK) self.rect.centerx = x self.rect.centery = y def update(self): self.rect.center = pygame.image.load() 2.2)Xây dựng vòng lặp T r a n g | 18 TIỂU LUẬN TRÍ TUỆ NHÂN TẠO XÂY DỰNG TRỊ CHƠI CROWNS Vịng lặp hình pygame.mixer.init() coin = pygame.mixer.Sound("coinsound.wav") jump = pygame.mixer.Sound("jumpsound.wav") pygame.mixer.music.load("amazinbgmusic.mp3") pygame.mixer.music.play(-1,0) Hình 7: Giao diện chương trình game Giao diện hình gồm phần chính: START: bắt đầu trị chơi, người chơi chọn cấp độ INSTRUCTIONS: phần hướng dẫn trò chơi T r a n g | 19 TIỂU LUẬN TRÍ TUỆ NHÂN TẠO XÂY DỰNG TRỊ CHƠI CROWNS Hình 8: Giao diện phần hướng dẫn Vịng lặp chương trình thua def lose(): losescreen=pygame.image.load("lose.jpg").convert() button1=pygame.image.load("playagainbutton.png").convert() button1.set_colorkey(WHITE) button2=pygame.image.load("playagainbutton2.png").convert() button2.set_colorkey(WHITE) scoreimage=pygame.image.load("score"+str(score)+".jpg").convert() scoreimage.set_colorkey(WHITE) pygame.mixer.init() pygame.mixer.music.load("losesound.wav") playagain = pygame.mixer.Sound("instructsound.wav") pygame.mixer.music.play(0) T r a n g | 20 TIỂU LUẬN TRÍ TUỆ NHÂN TẠO XÂY DỰNG TRỊ CHƠI CROWNS Hình 9: Giao diện hình thua Khi người chơi thua cuộc, giao diện hình thua hiển thị số điểm người chơi nút PLAY AGAIN để người chơi bắt đầu lại từ đầu Vịng lặp chương trình thắng def win(): winscreen=pygame.image.load("win.jpg").convert() button1=pygame.image.load("playagainbutton.png").convert() button1.set_colorkey(WHITE) button2=pygame.image.load("playagainbutton2.png").convert() button2.set_colorkey(WHITE) screen.blit(button1, [300, 400]) screen.blit(winscreen, [0,0]) scoreimage=pygame.image.load("score"+str(score)+".jpg").convert() scoreimage.set_colorkey(WHITE) pygame.mixer.init() pygame.mixer.music.load("winsound.mp3") playagain = pygame.mixer.Sound("instructsound.wav") pygame.mixer.music.play(0) T r a n g | 21 TIỂU LUẬN TRÍ TUỆ NHÂN TẠO XÂY DỰNG TRỊ CHƠI CROWNS Hình 10: Giao diện hình chiến thắng Xây dựng chơi tạo nhạc Hiệu ứng âm bắt đầu pygame.mixer.init() instructsound = pygame.mixer.Sound("instructsound.wav") pygame.mixer.music.load("coolbeansbgmusic.mp3") pygame.mixer.music.play(-1,0) Tạo lựa chọn chơi def levelselect(screen): background=pygame.image.load("selectscreen.jpg").convert() level1=pygame.image.load("level1v1.png").convert() level1.set_colorkey(WHITE) level1_1=pygame.image.load("level1v2.png").convert() level1_1.set_colorkey(WHITE) level2=pygame.image.load("level2v1.png").convert() level2.set_colorkey(WHITE) level2_2=pygame.image.load("level2v2.png").convert() level2_2.set_colorkey(WHITE) level3=pygame.image.load("level3v1.png").convert() level3.set_colorkey(WHITE) level3_2=pygame.image.load("level3v2.png").convert() level3_2.set_colorkey(WHITE) Tải thiết lập đồ họa background_position = [0, 0] Đặt tên tạo cửa sổ hình screen = pygame.display.set_mode(size) pygame.display.set_caption("Trò Chơi Crowns-Đi lấy Vương Miện") T r a n g | 22 TIỂU LUẬN TRÍ TUỆ NHÂN TẠO XÂY DỰNG TRỊ CHƠI CROWNS try: #Bắt đầu trị chơi Startscreen(screen) except: #xử lý ngoại lệ pass 2.3)Xây Dựng Các Màn Chơi Xây dựng giao diện 1: if (45