Code rắn săn mồi: rắn ra khỏi viền

if main_x < 0 or main_x > WIDTHWINDOW - CANH or main_y < 0 or main_y > 750 - CANH: 
	over = True
	#điều kiện game over khi con rắn đâm vào tường
for i in range (1, n + 1):
	if X[0] == X[i] and Y[0] == Y[i]:
		over = True
if over:
	if best_score < yourpoint:
		best_score = yourpoint
	text2 = font2.render(f'Your point: {yourpoint}', True, PINK)
	text1 = font2.render(f'Best score: {best_score}', True, GREEN)
	screen.blit(text2, (200, 250))
	screen.blit(text1, (200, 350))
	screen.blit(text3, (280, 450))
	pygame.mixer.music.load('MarioGameOverNhacChuong-VA-4731955.mp3')
	pygame.mixer.music.play(0)
	pygame.display.update()
while over:	
	for event in pygame.event.get():
		if event.type == QUIT:
			done = False
			over = False
		if event.type == MOUSEBUTTONDOWN:
			main_x = 600
			main_y = 600
			change_x = CANH
			change_y = 0
			n = 3
			yourpoint = 0
			over = False
			X = [main_x, main_x - CANH, main_x - 2 * CANH, main_x - 3 * CANH]
			Y = [main_y, main_y, main_y, main_y]
			pygame.mixer.music.load('Top 10 Bản Nhạc EDM Gây Nghiện Hay Nhất ♫ (0 có thuốc giải).mp3')
			pygame.mixer.music.play(0)
screen.blit(nen, (0, 0))
screen.blit(text, (100, 755))
screen.blit(FOOD, (FOOD_X, FOOD_Y))
pygame.draw.line(screen, PINK, (0, 750), (1000, 750), 3)
for i in range (0, n):
	X[n - i] = X[n - i - 1]
	Y[n - i] = Y[n - i - 1]
X[0] += change_x
Y[0] += change_y
main_x = X[0]
main_y = Y[0]
for i in range (0, n + 1):
	pygame.draw.rect(screen, PINK, (X[i], Y[i], CANH, CANH)) #lệnh vẽ các hình vuông
pygame.display.flip()
clock.tick(FPS)
pygame.quit()

CANH là độ dài 1 cạnh ô vuông tạo thành con rắn

Mình lập trình game rắn săn mồi như thế này nhưng khi cho con rắn đâm vào tường vẫn có một ô đi ra khỏi viền. Minh đã ngồi tìm lỗi sai rồi nhưng ko được con rắn vẫn chỉ đi trong phạm vi các ô cho phép, ko vượt được ra ngoài nhưng khi nó đâm vào tường thì vẫn có 1 ô bị lồi ra như vậy. Mong các vị chỉ giáo

Sau khi rắn đâm vào tường thì rắn sẽ đứng lại, không được cập nhật lại vị trí mới của nó.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?