写一个贪吃蛇 python 代码
时间: 2023-09-04 19:04:15 浏览: 128
### 回答1:
好的,下面是一个简单的贪吃蛇代码:
```python
import turtle
import time
# 设置画布大小
turtle.setup(width=600, height=600)
# 设置画笔速度
turtle.speed(8)
# 画蛇的身体
def draw_snake(snake_list):
for x, y in snake_list:
turtle.penup()
turtle.goto(x, y)
turtle.pendown()
turtle.circle(20)
# 设置蛇头初始位置
head_x = 0
head_y = 0
# 初始化蛇的身体
snake_list = [(head_x, head_y)]
draw_snake(snake_list)
# 设置食物的位置
food_x = 100
food_y = 100
# 画食物
turtle.penup()
turtle.goto(food_x, food_y)
turtle.pendown()
turtle.circle(20)
# 设置移动方向
direction = "right"
# 游戏循环
while True:
# 移动蛇头
if direction == "right":
head_x += 20
elif direction == "left":
head_x -= 20
elif direction == "up":
head_y += 20
elif direction == "down":
head_y -= 20
# 检查是否吃到食物
if head_x == food_x and head_y == food_y:
food_x = turtle.xcor()
food_y = turtle.ycor()
turtle.penup()
turtle.goto(food_x, food_y)
turtle.pendown()
turtle.circle(20)
else:
snake_list.pop(0)
# 在蛇头位置画一个新的圆形
snake_list.append((head_x, head_y))
draw_snake(snake_list)
# 设置方向
turtle.onkeypress(lambda: turtle.setheading(0), "Right")
turtle.onkeypress(lambda: turtle.setheading(180), "Left")
turtle.onkeypress(lambda: turtle.setheading(90), "Up")
turtle.onkeypress(lambda: turtle.setheading(270), "Down")
turtle.listen()
time.sleep(0.1)
```
希望这段代码对您有所帮助!
### 回答2:
贪吃蛇是一款经典的游戏,现在我将为您提供一个简单的贪吃蛇Python代码示例,共300字。
```python
import pygame
import random
pygame.init()
# 游戏窗口尺寸
window_width, window_height = 640, 480
window_size = (window_width, window_height)
window = pygame.display.set_mode(window_size)
pygame.display.set_caption("贪吃蛇")
# 蛇和食物的大小
unit_size = 20
# 定义颜色
black = (0, 0, 0)
green = (0, 255, 0)
red = (255, 0, 0)
# 定义蛇的初始位置
snake_x = window_width // 2
snake_y = window_height // 2
snake_size = 1
snake_speed = unit_size
# 定义食物的初始位置
food_x = random.randint(0, window_width - unit_size) // unit_size * unit_size
food_y = random.randint(0, window_height - unit_size) // unit_size * unit_size
clock = pygame.time.Clock()
# 蛇的初始方向向右
snake_direction_x = 1
snake_direction_y = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
snake_x += snake_direction_x * snake_speed
snake_y += snake_direction_y * snake_speed
window.fill(black)
pygame.draw.rect(window, green, [food_x, food_y, unit_size, unit_size])
pygame.draw.rect(window, red, [snake_x, snake_y, unit_size, unit_size])
pygame.display.update()
clock.tick(10) # 控制游戏帧率
```
上述代码使用pygame库,实现了一个简单的贪吃蛇游戏。游戏窗口的尺寸为640x480。蛇和食物的大小为20。游戏中,蛇会根据用户的操作进行移动,并追踪食物。通过控制蛇的方向,使得蛇能够吃到食物,并逐渐变长。游戏会根据用户的操作和蛇是否吃到食物来不断更新画面,并控制游戏的帧率为每秒10帧。
### 回答3:
以下是一个基于python的简单贪吃蛇游戏代码:
```python
import pygame
import random
# 初始化pygame
pygame.init()
# 定义窗口大小
window_width = 800
window_height = 600
# 定义贪吃蛇方格大小
snake_size = 20
# 定义颜色
black = pygame.Color(0, 0, 0)
white = pygame.Color(255, 255, 255)
red = pygame.Color(255, 0, 0)
green = pygame.Color(0, 255, 0)
blue = pygame.Color(0, 0, 255)
# 创建窗口
game_window = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption("贪吃蛇")
# 初始化游戏变量
snake_position = [[100, 50], [90, 50], [80, 50]] # 蛇的初始位置
snake_speed = pygame.time.Clock() # 控制蛇的速度
# 初始化食物位置
food_position = [random.randrange(1, (window_width//snake_size)) * snake_size,
random.randrange(1, (window_height//snake_size)) * snake_size]
# 初始化游戏结束参数
game_over = False
# 初始化蛇的初始方向
direction = 'RIGHT'
change_to = direction
# 定义函数,用于在窗口中绘制贪吃蛇和食物
def draw_snake(snake_position):
for position in snake_position:
pygame.draw.rect(game_window, green, pygame.Rect(
position[0], position[1], snake_size, snake_size))
def draw_food(food_position):
pygame.draw.rect(game_window, blue, pygame.Rect(
food_position[0], food_position[1], snake_size, snake_size))
# 游戏主循环
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_UP or event.key == ord('w'):
change_to = 'UP'
if event.key == pygame.K_DOWN or event.key == ord('s'):
change_to = 'DOWN'
if event.key == pygame.K_LEFT or event.key == ord('a'):
change_to = 'LEFT'
if event.key == pygame.K_RIGHT or event.key == ord('d'):
change_to = 'RIGHT'
# 确保蛇不能向相反方向移动
if change_to == 'UP' and direction != 'DOWN':
direction = 'UP'
if change_to == 'DOWN' and direction != 'UP':
direction = 'DOWN'
if change_to == 'LEFT' and direction != 'RIGHT':
direction = 'LEFT'
if change_to == 'RIGHT' and direction != 'LEFT':
direction = 'RIGHT'
# 根据方向更新蛇的位置
if direction == 'UP':
snake_position[0][1] -= snake_size
if direction == 'DOWN':
snake_position[0][1] += snake_size
if direction == 'LEFT':
snake_position[0][0] -= snake_size
if direction == 'RIGHT':
snake_position[0][0] += snake_size
# 更新蛇的位置
snake_position.insert(0, list(snake_position[0]))
# 判断蛇是否吃到食物
if snake_position[0][0] == food_position[0] and snake_position[0][1] == food_position[1]:
# 如果吃到了食物,生成新的食物位置
food_position = [random.randrange(1, (window_width//snake_size)) * snake_size,
random.randrange(1, (window_height//snake_size)) * snake_size]
else:
# 如果没有吃到食物,蛇的尾巴删除
snake_position.pop()
# 绘制窗口、蛇和食物
game_window.fill(black)
draw_snake(snake_position)
draw_food(food_position)
# 刷新窗口
pygame.display.update()
# 判断游戏是否结束
if (snake_position[0][0] < 0 or snake_position[0][0] >= window_width or
snake_position[0][1] < 0 or snake_position[0][1] >= window_height):
game_over = True
for snake_body in snake_position[1:]:
if snake_position[0][0] == snake_body[0] and snake_position[0][1] == snake_body[1]:
game_over = True
# 控制游戏刷新速度
snake_speed.tick(10)
# 退出游戏
pygame.quit()
```
这段代码使用pygame库编写了一个简单的贪吃蛇游戏。游戏窗口的大小为800x600像素,蛇、食物的方格大小为20x20像素。用户通过键盘控制蛇的运动方向,当蛇吃到食物时,得分增加并生成新的食物位置。当蛇触碰到窗口边界或自身时,游戏结束。游戏主循环以适当的速度刷新窗口,并绘制蛇和食物。
阅读全文