Trong bài viết Hướng dẫn code game "Thỏ chiến binh" bằng Python lần trước, chúng ta đã làm quen với việc code game trên Python. Lần này, mời các bạn tiếp tục tìm hiểu thêm nhiều điều hay ho hơn nữa qua hướng dẫn code game "Rắn săn mồi"
Bước 1. Cài đặt Pygame
Điều đầu tiên bạn cần làm đó là cài đặt thư viện Pygame lên máy tính của mình. You could access pygame. tổ chức/tải xuống. shtml để tải xuống và cài đặt phiên bản Pygame phù hợp với phiên bản Python trên máy của mình
Bước 2. Tạo màn hình trò chơi
Để tạo màn hình cho game "Răn săn mồi" bằng thư viện Pygame, bạn cần sử dụng hàm display. đặt chế độ[]. Ngoài ra, bạn cũng sẽ phải sử dụng hàm init[] và quit[] để khởi động và hủy khởi động mọi thứ ở đầu chương trình và kết thúc chương trình. Hàm update[] được sử dụng để cập nhật bất kỳ thay đổi nào được thực hiện trên màn hình
flip[] is an other function has an way active function update[] tương tự. Khác biệt là ở chỗ hàm update[] chỉ cập nhật những thay đổi đã được thực hiện trong khi đó hàm flip[] sẽ làm lại toàn bộ màn hình
Dưới đây là đoạn mã mẫu
import pygame
pygame.init[]
dis=pygame.display.set_mode[[400,300]]
pygame.display.update[]
pygame.quit[]
quit[]
Chạy đoạn mã bạn sẽ có kết quả sau
Tuy nhiên, màn hình này sẽ đóng lại ngay lập tức. Để giải quyết vấn đề này, bạn cần tạo vòng lặp cho trò chơi bằng cách sử dụng while trước khi thực hiện thoát trò chơi
mẫu mã
import pygame
pygame.init[]
dis=pygame.display.set_mode[[400,300]]
pygame.display.update[]
pygame.display.set_caption['Snake game by Edureka']
game_over=False
while not game_over:
for event in pygame.event.get[]:
print[event] #in ra tất cả các hành động xuất hiện trên màn hình
pygame.quit[]
quit[]
Khi bạn chạy đoạn mã này, bạn sẽ thấy màn hình giống như ở trên nhưng nó không đóng lại. With the event has add function. get[], màn hình sẽ trả về tất cả các hành động xuất hiện trên nó. Bạn còn có thể đặt tiêu đề cho màn hình bằng cách sử dụng chức năng hiển thị. set_caption[]
Kết quả sau khi chạy chương trình
Bây giờ, bạn đã có màn hình cho trò chơi "Răn săn mồi" của mình nhưng khi nhấp vào nút đóng [dấu X], màn hình không đóng lại. Lý do là vì bạn chưa thiết lập màn hình phải đóng khi bạn nhấn nút đóng. Để làm điều này, Pygame cung cấp cho bạn một lệnh có tên QUIT và bạn có thể sử dụng nó như sau
import pygame
pygame.init[]
dis=pygame.display.set_mode[[400,300]]
pygame.display.update[]
pygame.display.set_caption['Snake game by Edureka']
game_over=False
while not game_over:
for event in pygame.event.get[]:
if event.type==pygame.QUIT:
game_over=True
pygame.quit[]
quit[]
Bây giờ màn hình đã được thiết lập xong. Tiếp theo phần này là tạo ra con rắn
Bước 3. Create the concord
Để tạo con rắn, trước tiên bạn cần xác định một vài biến màu cho con rắn, con mồi, màn hình. Bảng màu được sử dụng trong Pygame là RGB [Red Green Blue]. Trong trường hợp này, nếu thiết lập là 0 hết cho RGB thì bạn sẽ nhận được màu đen, còn đặt 255 cho tất cả thì bạn sẽ nhận được màu trắng
Thực tế, con rắn của chúng tôi là một hình chữ nhật. Để vẽ chữ nhật trong Pygame, bạn cần sử dụng hàm draw. rect[] and input and size, color sắc nét
mẫu mã
import pygame
pygame.init[]
dis=pygame.display.set_mode[[400,300]]
pygame.display.set_caption['Snake game by Edureka']
blue=[0,0,255]
red=[255,0,0]
game_over=False
while not game_over:
for event in pygame.event.get[]:
if event.type==pygame.QUIT:
game_over=True
pygame.draw.rect[dis,blue,[200,150,10,10]]
pygame.display.update[]
pygame.quit[]
quit[]
Kết quả khi chạy mẫu mã
Như bạn đã thấy, con rắn màu xanh da trời đã xuất hiện trên màn hình. Bước tiếp theo là tạo chuyển động cho con rắn
Bước 4. Tạo chuyển động cho con rắn
Để chuyển con rắn, bạn cần tạo ra các sự kiện trong lớp KEYDOWN của Pygame. Các sự kiện được sử dụng ở đây là K_UP, K_DOWN, K_LEFT và K_RIGHT, tương ứng với các di chuyển lên, xuống, trái và phải của con rắn. Từ bước này, màn hình trò chơi cũng sẽ được thay đổi từ màu đen mặc định sang màu trắng bằng cách sử dụng hàm fill[]. Từ bước này, con rắn cũng được chuyển sang màu đen và màn hình trò chơi cũng lớn gấp đôi
Bạn cần tạo ra hai biến mới là x1_change và y1_change để chứa các giá trị được cập nhật của tọa độ x và y. Code sample for this section as after
import pygame
pygame.init[]
white = [255, 255, 255]
black = [0, 0, 0]
red = [255, 0, 0]
dis = pygame.display.set_mode[[800, 600]]
pygame.display.set_caption['Snake Game by Edureka']
game_over = False
x1 = 300
y1 = 300
x1_change = 0
y1_change = 0
clock = pygame.time.Clock[]
while not game_over:
for event in pygame.event.get[]:
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -10
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = 10
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -10
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = 10
x1_change = 0
x1 += x1_change
y1 += y1_change
dis.fill[white]
pygame.draw.rect[dis, black, [x1, y1, 10, 10]]
pygame.display.update[]
clock.tick[30]
pygame.quit[]
quit[]
Kết quả khi chạy chương trình
Bước 5. Tạo giới cơ chế Game Over khi con rắn đâm vào màn hình
Trong trò chơi rắn săn mồi, người chơi sẽ thua nếu điều khiển rắn đâm vào màn hình. Để làm được điều đó, bạn thêm một lệnh nếu để xác định giới hạn cho tốc độ x và y sao cho nó nhỏ hơn hoặc bằng với màn hình. Bạn cũng không nên sử dụng các mã cứng mà thay thế bằng các biến để có thể dễ dàng sửa đổi sau này nếu cần
Code sample as after
import pygame
import time
pygame.init[]
white = [255, 255, 255]
black = [0, 0, 0]
red = [255, 0, 0]
dis_width = 800
dis_height = 600
dis = pygame.display.set_mode[[dis_width, dis_width]]
pygame.display.set_caption['Snake Game by Edureka']
game_over = False
x1 = dis_width/2
y1 = dis_height/2
snake_block=10
x1_change = 0
y1_change = 0
clock = pygame.time.Clock[]
snake_speed=30
font_style = pygame.font.SysFont[None, 50]
def message[msg,color]:
mesg = font_style.render[msg, True, color]
dis.blit[mesg, [dis_width/2, dis_height/2]]
while not game_over:
for event in pygame.event.get[]:
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_block
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_block
x1_change = 0
if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:
game_over = True
x1 += x1_change
y1 += y1_change
dis.fill[white]
pygame.draw.rect[dis, black, [x1, y1, snake_block, snake_block]]
pygame.display.update[]
clock.tick[snake_speed]
message["You lost",red]
pygame.display.update[]
time.sleep[2]
pygame.quit[]
quit[]
Còn đây là kết quả khi chạy chương trình và cho rắn đâm đầu vào màn hình
Bước 6. Add con mồi
Ở bước này, bạn thêm con mồi cho con rắn và khi con rắn đi qua mồi, một thông báo "Yummy. " will show ra. Trò chơi cũng được điều chỉnh một chút ở mã mẫu để thêm tùy chọn cho phép thoát hoặc chơi lại sau khi bị thua. Ban đầu, con mồi được thiết lập là màu xanh da trời
mẫu mã
import pygame
import time
import random
pygame.init[]
white = [255, 255, 255]
black = [0, 0, 0]
red = [255, 0, 0]
blue = [0, 0, 255]
dis_width = 800
dis_height = 600
dis = pygame.display.set_mode[[dis_width, dis_height]]
pygame.display.set_caption['Snake Game by Edureka']
clock = pygame.time.Clock[]
snake_block = 10
snake_speed = 30
font_style = pygame.font.SysFont[None, 30]
def message[msg, color]:
mesg = font_style.render[msg, True, color]
dis.blit[mesg, [dis_width/3, dis_height/3]]
def gameLoop[]: # creating a function
game_over = False
game_close = False
x1 = dis_width / 2
y1 = dis_height / 2
x1_change = 0
y1_change = 0
foodx = round[random.randrange[0, dis_width - snake_block] / 10.0] * 10.0
foody = round[random.randrange[0, dis_width - snake_block] / 10.0] * 10.0
while not game_over:
while game_close == True:
dis.fill[white]
message["You Lost! Press Q-Quit or C-Play Again", red]
pygame.display.update[]
for event in pygame.event.get[]:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over = True
game_close = False
if event.key == pygame.K_c:
gameLoop[]
for event in pygame.event.get[]:
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_block
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_block
x1_change = 0
if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:
game_close = True
x1 += x1_change
y1 += y1_change
dis.fill[white]
pygame.draw.rect[dis, blue, [foodx, foody, snake_block, snake_block]]
pygame.draw.rect[dis, black, [x1, y1, snake_block, snake_block]]
pygame.display.update[]
if x1 == foodx and y1 == foody:
print["Yummy!!"]
clock.tick[snake_speed]
pygame.quit[]
quit[]
gameLoop[]
This is results of this step
Bước 7. Tăng độ dài của con rắn
Ở bước này, chúng ta sẽ thêm vào đoạn mã giúp tăng độ dài của con rắn sau khi nó ăn mồi. Ngoài ra, một đoạn mã nữa được thêm vào để khi con rắn va chạm với người thân của nó, một thông báo sẽ hiển thị cho người chơi biết đã thua, nhấn Q để thoát hoặc nhấn C để chơi lại. Độ dài của con rắn về cơ bản được chứa trong một danh sách và kích thước ban đầu là một khối được chỉ định trong đoạn mã sau
import pygame
import time
import random
pygame.init[]
white = [255, 255, 255]
yellow = [255, 255, 102]
black = [0, 0, 0]
red = [213, 50, 80]
green = [0, 255, 0]
blue = [50, 153, 213]
dis_width = 600
dis_height = 400
dis = pygame.display.set_mode[[dis_width, dis_height]]
pygame.display.set_caption['Snake Game by Edureka']
clock = pygame.time.Clock[]
snake_block = 10
snake_speed = 15
font_style = pygame.font.SysFont["bahnschrift", 25]
score_font = pygame.font.SysFont["comicsansms", 35]
def our_snake[snake_block, snake_list]:
for x in snake_list:
pygame.draw.rect[dis, black, [x[0], x[1], snake_block, snake_block]]
def message[msg, color]:
mesg = font_style.render[msg, True, color]
dis.blit[mesg, [dis_width / 6, dis_height / 3]]
def gameLoop[]:
game_over = False
game_close = False
x1 = dis_width / 2
y1 = dis_height / 2
x1_change = 0
y1_change = 0
snake_List = []
Length_of_snake = 1
foodx = round[random.randrange[0, dis_width - snake_block] / 10.0] * 10.0
foody = round[random.randrange[0, dis_height - snake_block] / 10.0] * 10.0
while not game_over:
while game_close == True:
dis.fill[blue]
message["You Lost! Press C-Play Again or Q-Quit", red]
pygame.display.update[]
for event in pygame.event.get[]:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over = True
game_close = False
if event.key == pygame.K_c:
gameLoop[]
for event in pygame.event.get[]:
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_block
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_block
x1_change = 0
if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:
game_close = True
x1 += x1_change
y1 += y1_change
dis.fill[blue]
pygame.draw.rect[dis, green, [foodx, foody, snake_block, snake_block]]
snake_Head = []
snake_Head.append[x1]
snake_Head.append[y1]
snake_List.append[snake_Head]
if len[snake_List] > Length_of_snake:
del snake_List[0]
for x in snake_List[:-1]:
if x == snake_Head:
game_close = True
our_snake[snake_block, snake_List]
pygame.display.update[]
if x1 == foodx and y1 == foody:
foodx = round[random.randrange[0, dis_width - snake_block] / 10.0] * 10.0
foody = round[random.randrange[0, dis_height - snake_block] / 10.0] * 10.0
Length_of_snake += 1
clock.tick[snake_speed]
pygame.quit[]
quit[]
gameLoop[]
Kết quả của bước này
Bạn có thể thấy, để đồ họa của trò chơi trở nên hấp dẫn, ở bước này, nền màn hình đã được chuyển sang màu xanh da trời, con mồi chuyển sang màu xanh lá và con rắn vẫn giữ nguyên màu đen nhưng kích thước đã được
Bước 8. Show point number
Cuối cùng nhưng cũng không mất đi phần quan trọng, bạn cần hiển thị số điểm của người chơi lên màn hình. Để làm điều này, bạn tạo ra một hàm mới có tên Your_score. Hàm này sẽ hiển thị độ dài của con rắn trừ độ dài ban đầu là 1
Hoàn chỉnh mẫu mã của trò chơi như sau
________số 8_______Kết quả cuối cùng khi chạy chương trình
Như vậy là chúng tôi vừa hướng dẫn các bạn cách viết mã game "Rắn săn mồi" bằng Python cùng với mã mẫu. Hy vọng rằng bài viết sẽ mang đến cho các bạn thêm những kiến thức bổ ích về ngôn ngữ lập trình Python
Để tham khảo thêm về Python, bạn có thể truy cập. Python là gì? . Hàm trong Python là gì?
Thứ Năm, 17/09/2020 16. 10
4,3 ★ 26 👨 45. 608
2 Bình luận
Sắp xếp theo
Delete Login to Send
Trang Phạm
rùa nhập khẩu
thời gian nhập khẩu
nhập ngẫu nhiên
độ trễ = 0. 1
điểm = 0
high_score = 0
wn = rùa. Màn hình[]
riêng. title["Trò chơi rắn"]
riêng. bgcolor["đen"]
riêng. thiết lập [chiều rộng = 600, chiều cao = 600]
riêng. dấu vết[0]
đầu = rùa. Rùa[]
đầu. tốc độ[0]
đầu. hình dạng ["hình vuông"]
đầu. màu vàng"]
đầu. bút bi[]
đầu. goto[0,0]
đầu. hướng = "dừng lại"
thức ăn = rùa. Rùa[]
món ăn. tốc độ[0]
món ăn. hình dạng ["hình vuông"]
món ăn. màu nâu"]
món ăn. bút bi[]
món ăn. goto[0,100]
phân đoạn = []
bút = rùa. Rùa[]
cái bút. tốc độ[0]
cái bút. hình dạng ["hình vuông"]
cái bút. màu trắng"]
cái bút. bút bi[]
cái bút. con rùa []
cái bút. goto[0, 260]
cái bút. write["Điểm. 0 Điểm cao. 0", căn chỉnh="trung tâm", phông chữ=["Thiết bị đầu cuối", 20, "bình thường"]]
chắc chắn go_up[]
đầu. hướng = "lên"
chắc chắn go_down[]
đầu. hướng = "xuống"
chắc chắn go_left[]
đầu. hướng = "trái"
chắc chắn go_right[]
đầu. hướng = "phải"
di chuyển chắc chắn[]
nếu đầu. hướng == "lên"
y = đầu. ycor[]
đầu. sety[y + 20]
nếu đầu. hướng == "xuống"
y = đầu. ycor[]
đầu. sety[y - 20]
nếu đầu. hướng == "trái"
x = đầu. xcor[]
đầu. setx[x - 20]
nếu đầu. hướng == "đúng"
x = đầu. xcor[]
đầu. setx[x + 20]
riêng. nghe[]
riêng. onkeypress[go_up, "Lên"]
riêng. onkeypress[go_left, "Trái"]
riêng. onkeypress[go_right, "Right"]
riêng. onkeypress[go_down, "Xuống"]
trong khi đúng
riêng. cập nhật[]
if head.xcor[]>290 or head.xcor[]290 or head.ycor[] high_score
high_score = điểm số
cái bút. thông thoáng[]
cái bút. write["Điểm. {} Điểm cao. {}". định dạng[điểm, high_score], align="center", font=["Terminal", 20, "normal"]]
cho chỉ mục trong phạm vi [len [phân đoạn] -1, 0, -1]
x = phân đoạn [chỉ mục-1]. xcor[]
y = phân đoạn [chỉ mục-1]. ycor[]
phân đoạn[chỉ mục]. goto[x, y]
nếu len[đoạn] > 0
x = đầu. xcor[]
y = đầu. ycor[]
phân đoạn[0]. goto[x,y]
di chuyển[]
cho phân khúc trong phân khúc
nếu phân khúc. khoảng cách [đầu] < 20
thời gian. ngủ[1]
đầu. goto[0,0]
đầu. hướng = "dừng lại"
cho phân khúc trong phân khúc
bộ phận. goto[1000, 1000]
phân đoạn. thông thoáng[]
điểm = 0
cái bút. thông thoáng[]
cái bút. write["Điểm. {} Điểm cao. {}". định dạng[điểm, high_score], align="center", font=["Terminal", 20, "normal"]]
thời gian. ngủ [chậm trễ]
riêng. vòng lặp chính[]
Thích · Phản hồi · 0 · 20:31 25/11Thonq
Thích · Phản hồi · 0 · 21:22 28/11chị sửa giúp em code này được không ạ😅
nếu chị đọc được mong chị rep
Le Minh B1907796
Thích · Phản hồi · 0 · 19:42 10/11vậy khi ta muốn tạo chướng ngại vật cho con rắn thì làm như nào v AD
nguyen_thu
Thích · Phản hồi · 0 · 21:47 22/11tạo ra vật cản rồi làm điều kiện nếu như chế độ rắn == đối kháng vật chất thì sẽ có lệnh end game kiểu vậy😀😃😄😁😆😅😂🤣 .
Bạn nên đọc
- VPN và SSH. Phương pháp nào bảo mật hơn?
- Làm thế nào để xóa "Tệp iOS" đang chiếm bộ nhớ máy Mac của bạn?
- Hệ thống mật mã. Phần 3 - Tính toàn vẹn và tính xác thực
- 4 kiểu áo xinh hết mặt trong mùa hè
- 10 sự thật khó tin về thế giới cho thấy kiến thức của chúng ta còn quá ít
- Cách tải Call of Duty Mobile nhanh nhất
con trăn
- Top 13 biên dịch Python tốt nhất
- Passive method 2 a hide by Python
- Cách kiểm tra phiên bản Python trên Windows, Mac và Linux
- Cách tạo CAPTCHA bằng Python
Lập trình
- SQL
- con trăn
- Cơ sở dữ liệu
- góc cạnhJS
- Cấu hình dữ liệu cấu trúc và giải thuật
- công nghệ
- Ứng dụng
- hệ thống
- Game - Trò chơi
- điện thoại Iphone
- Android
- Linux
- Nền web
- Đồng hồ thông minh
- Chụp ảnh - Quay phim
- hệ điều hành Mac
- Phần cứng
- SEO thủ thuật
- base format
- quả mâm xôi
- Dịch vụ ngân hàng
- Lập trình
- Online service
- Dịch vụ nhà mạng
- Nhà thông minh
- Tải xuống
- Ứng dụng văn phòng
- Tải game
- Hệ thống tiện ích
- Ảnh, đồ họa
- Internet
- Bảo mật, Antivirus
- Họp, học trực tuyến
- Video, phim, nhạc
- Thư
- Lưu trữ đám mây
- Giao tiếp, liên lạc, hẹn hò
- Support for learning
- Máy ảo
- Tiện ích
- Khoa học
- Khoa học vui
- Khám phá khoa học
- Bí ẩn - Chuyện lạ
- Chăm sóc sức khỏe
- Khoa học Vũ trụ
- Khám phá thiên nhiên
- Điện máy
- tủ lạnh
- tivi
- Điều hòa
- Máy giặt
- Cuộc sống
- Kỹ năng
- Món ngon mỗi ngày
- làm đẹp
- nuôi dạy con
- Chăm sóc nhà cửa
- Kinh nghiệm Du lịch
- Halloween
- mẹo vặt
- giáng sinh - noel
- tết 2023
- quà tặng
- Giải trí
- Là gì?
- nhà đẹp
- ĐỨNG ĐẦU
- phong thuỷ
- Băng hình
- công nghệ
- Phòng thí nghiệm của Cisco
- Phòng thí nghiệm của Microsoft
- Video Khoa học
- Ô tô, Xe máy
- Giấy phép lái xe
- Làng công nghệ
- Tấn công mạng
- Công nghệ
- new technology
- Trí tuệ nhân tạo [AI]
- Anh tài công nghệ
- Bình luận công nghệ
- Tổng hợp
- Học CNTT
- quiz technology
- Microsoft Word 2016
- Microsoft Word 2013
- Word 2007
- Excel 2019
- Excel 2016
- Hàm Excel
- Microsoft PowerPoint 2019
- Microsoft PowerPoint 2016
- Google Trang tính - Trang tính
- mẫu mã
- photoshop CS6
- photoshop CS5
- HTML
- CSS và CSS3
- con trăn
- Học SQL
- Lập trình C
- Lập trình C++
- Lập trình C#
- Học HTTP
- Bootstrap
- Máy chủ SQL
- JavaScript
- Học PHP
- jQuery
- Học MongoDB
- Unix/Linux
- Học Git
- NodeJS
Giới thiệu. Điều khoản. bảo mật. Hướng dẫn. Ứng dụng. Liên hệ. Quảng cáo. Facebook. YouTube. DMCA
Giấy phép số 362/GP-BTTTT. Bộ Thông tin và Truyền thông cấp ngày 30/06/2016. Cơ quan chủ quản. CÔNG TY CỔ PHẦN MẠNG TRỰC TUYẾN META. address. 56 Duy Tân, Dịch Vọng Hậu, Cầu Giấy, Hà Nội. Điện thoại. 024 2242 6188. E-mail. thông tin @ meta. vn. Chịu trách nhiệm nội dung. Lê Ngọc Lâm
Bản quyền © 2003-2023 QuanTriMang. com. Giữ toàn quyền. Không thể sao chép hoặc sử dụng hoặc phát hành lại bất kỳ nội dung nào thuộc về QuanTriMang. com khi chưa được cấp phép