下面是一段基本的贪吃蛇编程代码,具体实现了贪吃蛇运动、吃食、碰撞检测等功能。
```pythonimport pygameimport 随机
# 初始化游戏pygame.init()
# 游戏窗口大小WIDTH, HEIGHT=800, 600WIN=pygame.display.set_mode((WIDTH, HEIGHT))pygame.display.set_caption('Snake')
# 定义颜色黑色=(0, 0, 0)白色=(255, 255, 255)绿色=(0, 255, 0)红色=(255, 0, 0)
# 定义蛇的方向UP=0 DOWN=1LEFT=2RIGHT=3
# 定义蛇体的大小和速度SNAKE_SIZE=20SNAKE_SPEED=10
# 定义食物的大小FOOD_SIZE=20
# 蛇类class Snake: def __init__(self): self.size=SNAKE_SIZE # 蛇的大小self.speed=SNAKE_SPEED # 蛇的速度self.direction=random.choice([UP, DOWN, LEFT, RIGHT] ) # Snake 初始方向self.body=[] # Snake 的身体
# 初始化蛇的身体for i in range(3): x=(WIDTH //2) - (i * self.size) y=HEIGHT //2 self.body.append(pygame.Rect(x, y, self) .尺寸,自身尺寸))
# 画蛇def draw(self): for segment in self.body: pygame.draw.rect(WIN, GREEN, segment)
# 移动蛇def move(self): # 计算蛇头的位置if self.direction==UP: new_head=pygame.Rect(self.body[0].x, self.body[0].y - self .size, self.size, self.size) elif self.direction==DOWN: new_head=pygame.Rect(self.body[0].x, self.body[0].y + self.size, self.size, self.size) elif self.direction==LEFT: new_head=pygame.Rect(self.body[0].x - self.size, self.body[0].y, self.size, self.size) elif self.方向==RIGHT: new_head=pygame.Rect(self.body[0].x + self.size, self.body[0].y, self.size, self.size)
#将新的蛇头添加到蛇的身体中self.body.insert(0, new_head)
# 删除蛇尾if len(self.body) 1: self.body.pop()
# 改变蛇的方向def change_direction(self, new_direction): if new_direction==UP and self.direction !=DOWN: self.direction=new_direction elif new_direction==DOWN and self.direction !=UP: self.direction=new_direction elif new_direction==LEFT 和self.direction !=RIGHT: self.direction=new_direction elif new_direction==RIGHT 和self.direction !=LEFT: self.direction=new_direction
#检测蛇是否吃过食物def eat_food(self, food): return self.body[0].colliderect(food)
#检测蛇是否接触到自己的身体或边界def collide(self): if self.body[0].x=WIDTH or self.body[0].y=HEIGHT: return True for segment in self.body[1:]第:章如果self.body[0].colliderect(segment):返回True返回False
# 食物类class Food: def __init__(self): self.size=FOOD_SIZE # 食物的大小self.x=random.randint(0, (WIDTH - self.size) //self.size) * self.size # 食物self.y 的x 坐标=random.randint(0, (HEIGHT - self.size) //self.size) * self.size # 食物的y 坐标
# 绘制食物def draw(self): pygame.draw.rect(WIN, RED, pygame.Rect(self.x, self.y, self.size, self.size))
# 游戏循环def game_loop(): Snake=Snake() food=Food() Clock=pygame.time.Clock() Score=0
while True: # 处理pygame.event.get(): 中事件的退出事件if event.type==pygame.QUIT: pygame.quit() quit() elif event.type==pygame.KEYDOWN: if event.key==pygame .K_UP:蛇.change_direction(向上)elif事件.key==pygame.K_DOWN:蛇.change_direction(向下)elif事件.key==pygame.K_LEFT:蛇.change_direction(左)elif事件.key==pygame.K_RIGHT:蛇.change_direction (正确的)
蛇.move()
# 检查蛇是否吃过食物if Snake.eat_food(food): food=Food() Score +=1 # 在蛇的尾部添加一个新的身体段Snake.body.append(pygame.Rect(snake.body) [- 1].x,snake.body[-1].y,snake.size,snake.size))
#检测蛇是否接触到自己的身体或边界if Snake.collide(): pygame.quit() quit()
WIN.fill(BLACK) Snake.draw() food.draw()
# 显示分数font=pygame.font.Font(None, 36) Score_text=font.render('Score: ' + str(score), True, WHITE) WIN.blit(score_text, (10, 10))
pygame.display.update()clock.tick(20) # 游戏帧率
游戏循环()```
这只是一个基本的贪吃蛇游戏代码。您可以根据自己的需要添加更多的功能和玩法,比如增加难度、记录积分、添加障碍物等,希望对您有所帮助!